|
Julik
|
|
Как передать массив данных в VBA?30.07.2007, 12:55. Показов 2335. Ответов 4
Метки нет (Все метки)
Требуется получить большой массив данных из приложения в VBA (Excel). Как это можно сделать, не используя временный файл?
|
|
| 30.07.2007, 12:55 | |
|
Ответы с готовыми решениями:
4
Как передать массив из базы данных (передать массив из php в javascript методом ajax) Как передать массив данных в публичную функцию?
|
|
0 / 0 / 0
Регистрация: 15.04.2007
Сообщений: 21
|
|
| 30.07.2007, 15:51 | |
|
Открыть Excel как OLE объект и читать данные непросредственно с листа. Если надо, брошу пример.
С уважением, Михаил.
0
|
|
|
Julik
|
|
| 31.07.2007, 14:30 | |
|
Огромное спасибо, и примерчик хорошо бы посмотреть, правда мне нужно передать данные в EXCEL из приложения.
|
|
|
0 / 0 / 1
Регистрация: 22.07.2007
Сообщений: 260
|
||||||
| 31.07.2007, 16:21 | ||||||
|
Скорость передачи данных в OLE медленная, если данных много, то, как показывает практика, гораздо быстрее передача через Clipboard (разделяя столбцы табуляцией, а строки - переходом на новую строку, естественно в самих данных не должно быть табуляций и переводов строки), например
0
|
||||||
|
0 / 0 / 0
Регистрация: 15.04.2007
Сообщений: 21
|
|
| 01.08.2007, 07:41 | |
|
1. В проект включаешь библиотеку excel8.olb
2. Содаешь модуль со следующими содержанием: Public Function xlOPEN_EXCEL_APP(ByRef FLAG As Long) As Object On Error GoTo ERR_OPEN_EXCEL_APP If EXCEL_RUNNING Then Set xlOPEN_EXCEL_APP = GetObject(, 'EXCEL.APPLICATION') Else Set xlOPEN_EXCEL_APP = CreateObject('EXCEL.APPLICATION') End If FLAG = 0 Exit Function ERR_OPEN_EXCEL_APP: MsgBox 'Произошла ошибка - ' & Err.NUMBER & vbCr & _ Err.Description, _ vbOKOnly + vbCritical, _ 'Ошибка OLE' Set xlOPEN_EXCEL_APP = Nothing FLAG = Err.NUMBER Err.Clear End Function Public Function EXCEL_RUNNING() As Boolean Dim hWnd As Long On Error Resume Next ' Если Excel выполняется, этот вызов API возвращает его дескриптор. hWnd = FindWindow('XLMAIN', 0) 'If hWnd = 0 Then ' 0 означает, что Excel не выполняется. EXCEL_RUNNING = (hWnd <> 0) ExcelWasNotRunning = (hWnd = 0) Err.Clear ' Очищаем объект Err на случай ошибки. End Function Public Function xlOPEN_BOOK(Excel As Object, xlPATH As String, _ Optional ByRef RESULT As Long) As Workbook On Error GoTo ERR_OPEN_BOOK Set xlOPEN_BOOK = Excel.Workbooks.Open(xlPATH) RESULT = 0 Exit Function ERR_OPEN_BOOK: Set xlOPEN_BOOK = Nothing RESULT = Err.NUMBER Err.Clear End Function Public Function xlWB_OPENED(Excel As Object, WB_INDEX As Variant, _ Optional ByRef FLAG As Long) As Boolean Dim WB_CNT As Integer On Error GoTo ERR_WB_OPENED WB_CNT = Excel.Workbooks.Count If WB_CNT = 0 Then FLAG = 0 xlWB_OPENED = False Exit Function End If If IsNumeric(WB_INDEX) Then FLAG = 0 xlWB_OPENED = (WB_INDEX <= WB_CNT) Exit Function End If For WB_CNT = 1 To Excel.Workbooks.Count If Excel.Workbooks(WB_CNT).NAME = WB_INDEX Then FLAG = 0: xlWB_OPENED = True Exit Function Exit For End If Next WB_CNT FLAG = 0: xlWB_OPENED = False Exit Function ERR_WB_OPENED: FLAG = Err.NUMBER: Err.Clear xlWB_OPENED = False End Function Public Function PVT_xlFSPLIT(FULL_PATH_NAME As String, _ ByRef sDRIVE As String, ByRef sDIR As String, _ ByRef SNAME As String, ByRef sEXT As String) As Integer Dim posCHAR%, I As Integer, sREMAINS$, sMIRROR As String On Error GoTo ERR_FSPLIT If FULL_PATH_NAME = '' Then PVT_xlFSPLIT = -1 Exit Function End If posCHAR = InStr(1, FULL_PATH_NAME, ':', vbTextCompare) Select Case posCHAR Case 0 sDRIVE = '' sREMAINS = FULL_PATH_NAME Case 2 sDRIVE = Mid$(FULL_PATH_NAME, 1, 1) If Mid$(FULL_PATH_NAME, 3, 1) = ' ' Then sREMAINS = Mid$(FULL_PATH_NAME, 4, Len(FULL_PATH_NAME) - 3) Else sREMAINS = Mid$(FULL_PATH_NAME, 3, Len(FULL_PATH_NAME) - 2) End If Case Else PVT_xlFSPLIT = -1 Exit Function End Select I = Len(sREMAINS) If I = 0 Then PVT_xlFSPLIT = -1 Exit Function End If If Mid$(sREMAINS, 1, 1) = '.' Then PVT_xlFSPLIT = -1 Exit Function End If sMIRROR = PVT_xlTAIL_TO_HEAD(sREMAINS) posCHAR = InStr(1, sMIRROR, '.', vbTextCompare) If posCHAR <> 0 Then s
0
|
|
| 01.08.2007, 07:41 | |
|
Помогаю со студенческими работами здесь
5
Как можно передать в метод репорта весь массив данных? Как передать в хранимую процедуру в MSSQL 2000 массив данных?
Как передать в фукнцию массив без передачи дополнительных данных о размере массива? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|