26 (изменено: st-shony, 2017-10-19 14:45:28)

Re: AHK: запуск файла excel через run и чтение из него данных

stealzy
Запрос делается не через макрос. А через специальную штуку, встроенную в Excel (2007) - "Подключения". В них настроен ряд обычных select'ов к SQL-серверу. В свойствах подключения, во кладке - "Использование" стоит галочка напротив: "Обновление при открытии файла". Вот так это работает.

27 (изменено: st-shony, 2017-10-19 15:09:58)

Re: AHK: запуск файла excel через run и чтение из него данных

svoboden
Все получилось! Урааа!
Сердечное спасибо!!!

28 (изменено: st-shony, 2017-10-19 16:03:55)

Re: AHK: запуск файла excel через run и чтение из него данных

svoboden
Рано обрадовалась....
Запустила один раз - все отработалось как надо, запустила второй и прога выдала ошибку:
Error: 0x80040101E3 - Операция недоступна
--->        objExcel := ComObjActive("Excel.Application")

Хотя я ничего не меняла:

 
Run, G:\....xls
sleep 10000
objExcel := ComObjActive("Excel.Application")
d := ""
loop
{
     d .= objExcel.Range("B" . 6).value
}
msgbox % d

29 (изменено: Malcev, 2017-10-19 16:16:21)

Re: AHK: запуск файла excel через run и чтение из него данных

Так, по идее, эксел должен обновлять только те подключения ,у которых стоит галочка "Обновление при открытии файла":

filepath := ("C:\Книга1.xlsx")
objExcel := ComObjCreate("Excel.Application")
objExcel.Visible := true
WorkBook := objExcel.Workbooks.Open(filepath)
for connection in WorkBook.Connections
{
   if (connection.type = 1)
      connectionType := connection.OLEDBConnection
   else if (connection.type = 2)
      connectionType := connection.ODBCConnection
   else
      msgbox % "error connectionType - " connection.type
   if (connectionType.RefreshOnFileOpen = -1)
      connection.Refresh
}
objExcel.CalculateUntilAsyncQueriesDone
msgbox done

30 (изменено: svoboden, 2017-10-19 16:47:13)

Re: AHK: запуск файла excel через run и чтение из него данных

st-shony, при втором запуске не нужно запускать: Run, G:\....xls
sleep 10000. Скрипт может еще выдать ошибку, если ячейка редактируется, т.е., когда установлен в ней курсор.

31

Re: AHK: запуск файла excel через run и чтение из него данных

Malcev
Ваш код отработал как надо! Спасибо огромное!

32

Re: AHK: запуск файла excel через run и чтение из него данных

svoboden
Фм...не. Что-то не то.
Перед вторым запуском я все закрыла. И код, и excel и в процессах ничего не осталось.
Это был такой же тест, как и все.
А курсор там вообще не поставишь, пока данные обновляются.

33 (изменено: svoboden, 2017-10-19 18:32:37)

Re: AHK: запуск файла excel через run и чтение из него данных

Ну, у меня все работает, я не знаю, почему он не считывает данные, если файл открыт - это ерунда уже какая-то. Может, дело в версии Excel у меня 2010.

34 (изменено: svoboden, 2017-10-19 19:49:48)

Re: AHK: запуск файла excel через run и чтение из него данных

А так считывает?:

FilePath := "C:\Книга.xlsx"
oWorkbook := ComObjGet(FilePath)
MsgBox % oWorkbook.Sheets(1).Range("A1").Value ; здесь колонку "А" ячейку 1 считывает

Это для проверки, Excel открывать не надо.

35

Re: AHK: запуск файла excel через run и чтение из него данных

svoboden
Да, считывает.

36 (изменено: svoboden, 2017-10-19 20:02:24)

Re: AHK: запуск файла excel через run и чтение из него данных

st-shony, ну, значит, работает. Тогда также и открытый Excel должен считать,
а можно из закрытого считывать данные.

37

Re: AHK: запуск файла excel через run и чтение из него данных

svoboden
должен, но не работает.

38 (изменено: svoboden, 2017-10-25 02:01:10)

Re: AHK: запуск файла excel через run и чтение из него данных

Попробуйте так.

xl := ComObjActive("Excel.Application")
FilePath := "C:\Книга1.xlsx"
oWorkbook := ComObjGet(FilePath)
MsgBox % oWorkbook.Sheets(1)xl.Range("A1").Value