1 (изменено: avens, 2015-01-24 14:35:24)

Тема: AHK: Открыть файл Excel и получить значение ячейки в переменную

Как можно получить значение ячейки например D1 в файле Excel.xls ?
И в конце закрыть Excel с этим файлом

Path = %A_Desktop%\Excel.xls
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open(Path) ;открывает выбраный файл
Xl.Visible := True ;Делает видимым
;???
Post's attachments

Excel.xls 13.5 kb, 6 downloads since 2015-01-24 

You don't have the permssions to download the attachments of this post.

2 (изменено: avens, 2015-01-24 14:42:24)

Re: AHK: Открыть файл Excel и получить значение ячейки в переменную

Разобрался как получить значение в файле *.xls

Path = %A_Desktop%\Excel.xls
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open(Path) ;открывает выбраный файл
Xl.Visible := True ;Делает видимым

;Получаем значение первой ячейки в колонке "D"
MsgBox % Xl.Range("D" . 1).Value

Еще такой вопрос, возможно ли аналогичным способом получить значение целой колонки?

3 (изменено: Alectric, 2015-01-24 16:51:22)

Re: AHK: Открыть файл Excel и получить значение ячейки в переменную

Через цикл можно:

loop,10
{
  var:=Xl.Range("A" . A_Index).Value
  outvar.= var "`n"
}

msgbox,% outvar
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

4

Re: AHK: Открыть файл Excel и получить значение ячейки в переменную

Я сделал через цикл, работает но если таблица километровая, то очень долго получается.
Копировать, вставить в ручную скорей, но не автоматически
Просто хочется узнать можно ли как то получать значение всей колонки.

И еще как закрывать после чтения открытый файл в Excel через Com?

5 (изменено: Alectric, 2015-01-24 17:02:46)

Re: AHK: Открыть файл Excel и получить значение ячейки в переменную

Вся колонка через буфер:

Xl.Range("A:A").Copy ;copy cell to clipboard
sleep,100
outvar:=clipboard
msgbox,% outvar
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

6

Re: AHK: Открыть файл Excel и получить значение ячейки в переменную

Alectric пишет:

Или так через буфер:

Xl.Range("A:A").Copy ;copy cell to clipboard
sleep,100
outvar:=clipboard
msgbox,% outvar

Через буфер обмена подойдет!
Сейчас протестирую на скорость

7

Re: AHK: Открыть файл Excel и получить значение ячейки в переменную

По скорости значительно быстрей!

А как закрыть если открывали уже созданный, только без сохранения изменений и что бы никакое окошко с просьбой подтвердить действие не выскакивало?

8

Re: AHK: Открыть файл Excel и получить значение ячейки в переменную

Чтобы закрыть:

clipboard=
Xl.Quit()
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

9

Re: AHK: Открыть файл Excel и получить значение ячейки в переменную

А как в таком случае также закрыть созданный и сохраненный файл без подтверждения?

Text =
(
111
222
333
)

Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Add
Xl.Range("A1").Value := "Column"
Xl.Visible := True

;Запись данных в колонку
Loop, parse, Text, `n, `r
    if A_LoopField
        Xl.Range("A" . A_Index+1).Value := A_LoopField

;Сохранить в файл
Xl.ActiveWorkbook.SaveCopyAs( A_Desktop "\Excel.xls")
clipboard =
Xl.Quit()
ExitApp

Предыдущий вариант:

clipboard=
Xl.Quit()

не срабатывает, созданный файл сохраняется, но при закрытии программы Excel спрашивает подтверждение о сохранении файла..