Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 31.05.2015
Сообщений: 9

Загрузка данных из закрытого .xls файла

31.05.2015, 20:06. Показов 3250. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В двумерный массив 12 х 3 необходимо загрузить данные из закрытого файла name.xls с первого листа ячеек A1:C12 соответственно. Путь файла известен. (Возможно ли сделать без пути, указав лишь то, что файл name.xls хранится в том же корне?)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2015, 20:06
Ответы с готовыми решениями:

Загрузка данных из закрытого .xls файла
Доброго времени суток. Необходимо создать код для выбора закрытого файла формата .xls путем вывода окошка "Открытие документа"...

Некорректно работает загрузка данных в 1С из файла XLS
Всем доброго времени! Есть следующая проблема: Конфигурация 1С Альфа-Авто Автосервис 4.1.01.11 переведенная в 8.2 от Раруса. При...

Загрузка .xls файла с сервера
Подскажите, пожалуйста. На страничке есть ссылка на экселевский файл. Нужно, чтобы при нажатии на ссылку Explorer предлагал сохранить на...

9
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
31.05.2015, 21:22
в том же корне
В смысле в том же?
Рядом с активной книгой? Можно
А принципиально не открывать книгу?
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
31.05.2015, 21:44
Цитата Сообщение от zeha Посмотреть сообщение
загрузить данные из закрытого файла name.xls с первого листа ячеек A1:C12 соответственно
Если name.xls находится в той же директории где книга.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub test()
    Dim con As Object, rst As Object
    Set con = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")
    con.Open ("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & ThisWorkbook.Path & "\name.xls; Extended Properties=""Excel 8.0;HDR=No;IMEX=1""")
    rst.Open ("SELECT * From [Лист1$A1:C12]"), con
    ThisWorkbook.Sheets(1).Range("A1").CopyFromRecordset rst
    rst.Close
    Set rst = Nothing
    con.Close
    Set con = Nothing
End Sub
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
31.05.2015, 21:49
Если нужно выгрузить на лист - достаточно 36 формул, или одной такой массивной:
Visual Basic
1
2
3
Function zeha(Table As Variant)
    zeha = Table
End Function
А занести формулы можно макросом, подставив ThisWorkbook.Path.
Затем взять данные в массив, файл убить
0
0 / 0 / 0
Регистрация: 31.05.2015
Сообщений: 9
31.05.2015, 23:12  [ТС]
Спасибо, но есть вопрос: каким образом изменить 7 строку, чтобы данные записывались именно в массив A размерности 12x3, а не выводились на первый лист в запущенной книге?
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.05.2015, 23:21
zeha, вариант
Visual Basic
1
2
3
4
5
Dim v()
With GetObject(ThisWorkbook.Path & "\name.xls")
  v = .Worksheets(1).Range("A1:C12").Value
  .Close 0
End With
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
31.05.2015, 23:22
Алексей, это нечестно
К тому же сталкивался, что не работает...
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.05.2015, 23:31
Игорь, быстро поднятая сигарета не считается упавшей быстро закрытый файл не считается открытым
А ADODB всегда работает? Как там с совместимостью? Боюсь, в 2003 "Provider=Microsoft.ACE.OLEDB.12.0" не прокатит.
Кстати, для ADODB и для формулы надо знать ИМЯ первого листа, а ТС его не указал - может, оно неизвестно?
1
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
31.05.2015, 23:41
Можно без всяких массивных UDF
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub tt()
    Dim a(), f$
    f = "[Name.xls]"
    Application.ScreenUpdating = False
    With Workbooks.Add(1).Sheets(1).Range("A1:C12")
        .FormulaArray = "='" & ThisWorkbook.Path & "\" & f & "Лист1'!$A$1:$C$12"
        a = .Value
        .Parent.Parent.Close 0
    End With
    MsgBox a(1, 1)
End Sub
Добавлено через 4 минуты
Да, с именем листа может быть засада...
Кстати я недавно и индекс "первого" листа кодом выискивал - проект запаролен, все листы не видны... Думаю и ТСу может быть неведомо, какой именно лист он видит.
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
31.05.2015, 23:56
Цитата Сообщение от zeha Посмотреть сообщение
каким образом изменить 7 строку, чтобы данные записывались именно в массив A
Visual Basic
1
2
    Dim A()
    A = Application.Transpose(rst.GetRows)
Добавлено через 7 минут
Цитата Сообщение от Казанский Посмотреть сообщение
Боюсь, в 2003 "Provider=Microsoft.ACE.OLEDB.12.0" не прокатит
Можно заменить на Microsoft.Jet.OLEDB.4.0. Просто привык xlsx открывать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2015, 23:56
Помогаю со студенческими работами здесь

Загрузка файла xls в ListBox
Как загрузить икселес файл в лист бокс???? тоесть есть база данных седаланая в ексель,нужно все это загрузить в лист бокс!!!! зарание спс

Загрузка данных из XLS
Загружаю данные из XLS. Одна из колонок упорно не грузится. Можно временно на неё плюнуть, и загрузить позднее?

Функция для получения данных из закрытого файла
Всем привет, Помогите плиз Есть два документы exel. формула в одном из этих файлов ссылается на другой файл. Проьблема...

Загрузка из xls-файла, используя COM-соединение
Добрый день. Написал обработку для загрузки данных из xls документа в УТ11. На моем компьютере она работает. Но на сервере клиента...

Загрузка .xls-файла в StringGrid по отметке чекбокса
Прошу помочь с программой. Основная проблема - автоматизация процесса загрузки экселевских таблиц в stringgrid`ы. При нажатии на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru