|
Julik
|
|
Как передать массив данных в VBA?30.07.2007, 12:55. Показов 2340. Ответов 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 массив данных?
Как передать в фукнцию массив без передачи дополнительных данных о размере массива? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|