Write values in Excel

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
Didier3L
Posts: 14
Joined: 27 Dec 2016, 09:33

Write values in Excel

09 Mar 2018, 09:21

Hello, 8-)
I'm using a script that retrieves values that are then stored in a variable (Valeur1, Valeur2, Valeur3,...).
I would like these values to be written to an Excel file. cellules A1, A3, A6
Can you help me write the rest of the script :?:
------------------------------------------------------------------------------------
bonjour, 8-)
j'utilise un script qui récupére des valeurs qui sont ensuite stockées dans une variables (Valeur1, Valeur2, Valeur3,...).
Je souhaiterais que ces valeurs soient écrites dans un fichier Excel. Cells A1, A3, A6
Pouvez vous m'aider à écrire la suite du script :?:

Code: Select all

#s::
;#####################################################################
MouseClick, left,  326,  320
Sleep, 100
Send, {SHIFTDOWN}{CTRLDOWN}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{CTRLUP}{SHIFTUP}{CTRLDOWN}c{CTRLUP}
ClipWait
Valeur1= %clipboard%

MouseClick, left,  456,  320
Sleep, 100
; Send, {SHIFTDOWN}{CTRLDOWN}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{CTRLUP}{SHIFTUP}{CTRLDOWN}c{CTRLUP}
Send, {SHIFTDOWN}{DOWN}{SHIFTUP}
Send, {CTRLDOWN}c{CTRLUP}
ClipWait
Valeur2= %clipboard%

MouseClick, left,  951,  355
Sleep, 100
Send, {SHIFTDOWN}{DOWN}{SHIFTUP}
Send, {CTRLDOWN}c{CTRLUP}
ClipWait
Valeur3= %clipboard%

;#####################################################################
WorkBookPath := "C:\Users\Desktop\test.xlsx"
objExcel := ComObjCreate("Excel.Application") 
objWorkBook := objExcel.Workbooks.Open(WorkBookPath)
objExcel.Visible := True
objExcel.Sheets(1).range("A1").select
sleep 3000

???
???


ObjExcel.ActiveWorkbook.saved := true
ObjExcel.ActiveWorkbook.Save()
objExcel.Quit
Return
;#####################################################################
User avatar
FanaticGuru
Posts: 1908
Joined: 30 Sep 2013, 22:25

Re: Write values in Excel

09 Mar 2018, 14:28

Code: Select all

Valeur1 := "One"
Valeur2 := "Two"
Valeur3 := "Three"

xlApp := ComObjActive("Excel.Application")
xlApp.Range("A1").value := Valeur1
xlApp.Range("A3").value := Valeur2
xlApp.Range("A6").value := Valeur3
This uses the active Excel but if you already have an Excel object from using:

Code: Select all

WorkBookPath := "C:\Users\Desktop\test.xlsx"
objExcel := ComObjCreate("Excel.Application") 
objWorkBook := objExcel.Workbooks.Open(WorkBookPath)
Just use the WorkBook object you already have:

Code: Select all

objWorkBook.Range("A1").value := Valeur1
objWorkBook.Range("A3").value := Valeur2
objWorkBook.Range("A6").value := Valeur3
FG
Hotkey Help - Help Dialog for Currently Running AHK Scripts
AHK Startup - Consolidate Multiply AHK Scripts with one Tray Icon
Hotstring Manager - Create and Manage Hotstrings
[Class] WinHook - Create Window Shell Hooks and Window Event Hooks
Guest

Re: Write values in Excel

09 Mar 2018, 14:31

Code: Select all

Valeur1 := "asdf", Valeur2 := 2345, Valeur3 := "zxcv"
SheetNumber := 1 ; Sheet name or number (optional. see below)

WorkBookPath := A_Desktop "\test.xlsx"
objExcel := ComObjCreate("Excel.Application") 
objWorkBook := objExcel.Workbooks.Open( WorkBookPath )
objExcel.Visible := True

objSheet := objWorkBook.Worksheets( SheetNumber )
objExcel.Range("A1").Value := Valeur1 ; A1
objSheet.Range("A3").Value := Valeur2 ; A3, Same as above, but you can specify a sheet
objSheet.Cells(1, 6).Value := Valeur3 ; A6, Same as above, but .Cells can use numbers instead of letters.

objWorkBook.Save()
MsgBox
objExcel.Quit
objExcel := "", objWorkBook := "", objSheet := ""
return
Didier3L
Posts: 14
Joined: 27 Dec 2016, 09:33

Re: Write values in Excel

10 Mar 2018, 06:26

Merci beaucoup :)
burque505
Posts: 1736
Joined: 22 Jan 2017, 19:37

Re: Write values in Excel

10 Mar 2018, 18:50

Didier3L, if you have trouble with the code below and an active Excel (I always do),

Code: Select all

Valeur1 := "One"
Valeur2 := "Two"
Valeur3 := "Three"

xlApp := ComObjActive("Excel.Application") ; I haven't had much luck with this myself, although other people obviously are.
xlApp.Range("A1").value := Valeur1
xlApp.Range("A3").value := Valeur2
xlApp.Range("A6").value := Valeur3
then try this. It needs the modified Excel_Get.ahk, which is attached.

Code: Select all

#Include Excel_Get.ahk

Valeur1 := "One"
Valeur2 := "Two"
Valeur3 := "Three"

xlApp := Excel_Get("ahk_class XLMAIN") ; But this works well for me. Note "ahk_class XLMAIN" instead of "Excel.Application".
xlApp.Range("A1").value := Valeur1
xlApp.Range("A3").value := Valeur2
xlApp.Range("A6").value := Valeur3
Regards,
burque505
Excel_Get.ahk
(1.48 KiB) Downloaded 152 times
(I'm pretty sure I got this modified version of Excel_Get.ahk, which doesn't depend on Acc.ahk, from jeeswg. Thanks again for that, by the way)

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: Bing [Bot], MrDoge, peter_ahk and 349 guests