Skip to content
AutoHotKey
2011.08.02 17:03

[AHK_B&AHK_L] 엑셀 제어 비교.

조회 수 20252 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

[AHK_B&AHK_L] 엑셀 제어 비교.

 

 

Basic Ahk_L COM Tutorial for Excel

엑셀 새문서 및 시트 열기

Xl := ComObjCreate("Excel.Application") ;create a handle to a new excel application
Xl := ComObjActive("Excel.Application") ;creates a handle to your currently active excel sheet

 

엑셀 새문서 열기 & 워크시트 추가.

Xl := ComObjCreate("Excel.Application") ;handle
Xl.Visible := True ;by default excel sheets are invisible
Xl.Workbooks.Add ;add a new workbook

 

원하는 엑셀문서파일 열기

FileSelectFile, Path
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open(Path) ;open an existing file
Xl.Visible := True
 
 
 
 

 

Xl.Range("A1").Value := "hello world!" ;set cell 'A1' to a string
helloworld := "hello world!"
Xl.Range("A1").Value := helloworld ;set cell to a variable

 

I see a lot of questions in the forums on Excel sheets and how to pull or send data to them. Although there are plenty of posts on the forum with examples for almost any task, most of them written in basic, I thought it would be a good idea to put as many as I have had personal experience with in one place.

I am by no means an expert at COM or Excel but I do my best. Smile

Q: What is COM?
The Component Object Model is a collection of automation objects that allows a user to interface with various methods and properties of an application.

Q: How do I use it in my script?
There is no easy answer to this question. Why? Because there are different commands to every type of COM object. For instance the methods for Internet Explorer are completely different from MS Office.

In this tutorial I will focus on using COM to script simple commands that will be used to automate Microsoft Office Excel. Before you can do anything with the Excel DOM you have to create a handle to the application. There are 2 ways to do this:
Code (Copy):
Xl := ComObjCreate("Excel.Application") ;create a handle to a new excel application
Xl := ComObjActive("Excel.Application") ;creates a handle to your currently active excel sheet
Use one or the other depending on what kind of script you wish to put together. For example if I'm testing new excel code I like to use the active COM object so I don't have to wait on a new instance to open each time.

Let's look at each type individually:
ComObjCreate:
Code (Copy):
Xl := ComObjCreate("Excel.Application") ;handle
Xl.Visible := True ;by default excel sheets are invisible
Xl.Workbooks.Add ;add a new workbook
Simple by accessing the object does not give us anything to work with or see. We need to create a workbook and make it visible to do anything. (don't ask me why Microsoft made the default invisible...)

You can also have the user choose a document to open.
Code (Copy):
FileSelectFile, Path
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open(Path) ;open an existing file
Xl.Visible := True
ComObjActive:
Code (Copy):
Xl := ComObjCreate("Excel.Application") ;handle
It's fairly simple to set up an active sheet since it's already visible and the workbook is already open.

So far we have only retrieved a handle to a new sheet, a user specified sheet, or an active sheet. Now we can manipulate some data!

The most basic and useful way to use COM is to set individual cells in the sheet.
Code (Copy):
Xl.Range("A1").Value := "hello world!" ;set cell 'A1' to a string
helloworld := "hello world!"
Xl.Range("A1").Value := helloworld ;set cell to a variable
You can also set a variable to data inside a cell:
Code (Copy):
helloworld := Xl.Range("A1").Value
It's not too useful to set specific cells in a script especially in large files. Here's how to loop through the cells in a column:
Code (Copy):
while (Xl.Range("A" . A_Index).Value != "") {
Xl.Range("A" . A_Index).Value := value
}
And how to loop through a row:
Code (Copy):
Row := "1"
Columns := Object(1,"A",2,"B",3,"C",4,"D",5,"E",6,"F",7,"G",8,"H",9,"I",10,"J",11,"K",12,"L",13,"M",14,"N",15,"O",16,"P",17,"Q") ;array of column letters
For Key, Value In Columns
XL.Range(Value . Row).Value := value ;set values of each cell in a row
I'm not going to go into how object work. That's for another time.
However in this example i'm using an object to store the column letters so i can loop through them. The 'key' is the position in the object the string is located. 'value' is what is stored in that position. So columns[1] = "A", columns[2] = "B", ect.

Now that you can use the basic's of excel let's look at a few more specific

Examples:
Code (Copy):
Xl.Range("A:A").Copy ;copy cell to clipboard
Code (Copy):
Xl.Range("A:A").PasteSpecial(-4163) ;'-4163' is the constant for values only
Code (Copy):
Xl.Range("A:A").NumberFormat := "@" ;change the column format to 'text'
Code (Copy):
Xl.CutCopyMode := False ;deselect cells (use this with copy)
2 Save Methods:
Code (Copy):
XL.ActiveWorkbook.SaveAs(BookName) ;'bookname' is a variable with the path and name of the file you desire
Xl_Workbook := Xl.Workbooks.Open(Path) ;handle to specific workbook
Xl_Workbook.Save() ;quick save already existing file
Sort sheet by column:
Code (Copy):
Xl.Range("A1:Q100").Sort(Xl.Columns(1), 1) ;sort sheet by data in the 'a' column
That about completes this simple tutorial.

If you are interested in learning how to do other things with Excel the easiest way is to use the Macro button in the View tab on any 2007 Excel sheet. This handy feature records your actions within excel and then see the VBA (Visual Basic for Applications) code which is fairly easy to translate to autohotkey. Or you can post it in this topic for help. Smile
로그인 후 댓글쓰기가 가능합니다.

?

  1. 11
    Oct 2011
    15:45

    Ahk Standard Library Collection, 2010 Sep (+Gui) ~ Libs: 100

    Category컴퓨터잡담 Views14189
    Read More
  2. 07
    Oct 2011
    08:39

    AHK_L) SysListView321 컨트롤 내용 추출하기

    Category컴퓨터잡담 Views9893
    Read More
  3. 30
    Sep 2011
    09:11

    autohotkey - 변수리스트(Variables and Expressions) 모음

    Category컴퓨터잡담 Views11830
    Read More
  4. 08
    Aug 2011
    12:57

    [AHK_B&AHK_L] 익스플로러 HTML 문서정보 알아내기(IE HTML Element Spy)

    CategoryAutoHotKey Views15160
    Read More
  5. 02
    Aug 2011
    17:03

    [AHK_B&AHK_L] 엑셀 제어 비교.

    CategoryAutoHotKey Views20252
    Read More
  6. 02
    Aug 2011
    16:39

    [AHK_L] 현재 열려진 인터넷 창 값 가져오기

    CategoryAutoHotKey Views16575
    Read More
  7. 28
    Jul 2011
    23:38

    [AHK] COM Standard Library

    Category컴퓨터잡담 Views13588
    Read More
  8. 28
    Jul 2011
    22:45

    [AHK] AutoHotkey_N, AutoHotkey.dll

    Category컴퓨터잡담 Views13562
    Read More
  9. 30
    Mar 2011
    17:18

    정보수집

    CategoryAutoHotKey Views16064
    Read More
  10. 25
    Feb 2011
    08:54

    [ahk]웹페이지가 띄워진 창 내용을 추출하여 로딩이 완료되었는지를 확인할 수 있는 소스

    CategoryAutoHotKey Views14747
    Read More
  11. 24
    Feb 2011
    18:33

    ahk로 만든 파일을 exe로 컴파일 한 후 실행시킬때 변수를 임의

    CategoryAutoHotKey Views15333
    Read More
  12. 22
    Feb 2011
    13:00

    클릭해서 새창열리는 페이지에 클릭 또는 값설정 가능한가요?

    CategoryAutoHotKey Views14723
    Read More
  13. 22
    Feb 2011
    01:31

    ahk_l 웹페이지 파일로 저장한 뒤 불러와 필요한 부분 추출하여 출력하기

    CategoryAutoHotKey Views16992
    Read More
  14. 22
    Feb 2011
    01:22

    ahk_l 웹페이지 앞, 뒤페이지 제어 예제소스 및 설명첨부

    CategoryAutoHotKey Views17535
    Read More
  15. 22
    Feb 2011
    01:15

    ahk_l 과 com 의 이해

    CategoryAutoHotKey Views17485
    Read More
  16. 21
    Feb 2011
    23:58

    autohotkey_L Object

    CategoryAutoHotKey Views15390
    Read More
  17. 21
    Feb 2011
    23:55

    COM 사용

    CategoryAutoHotKey Views19065
    Read More
  18. 17
    Feb 2011
    19:17

    웹페이지의 내용을 변수에 넣기

    CategoryAutoHotKey Views14492
    Read More
  19. 17
    Feb 2011
    07:17

    WinMenuSelectItem로 메뉴선택하기

    CategoryAutoHotKey Views16302
    Read More
  20. 16
    Feb 2011
    07:05

    [ahk_l] 섬세한 인터넷 자동검색

    CategoryAutoHotKey Views18184
    Read More
Board Pagination Prev 1 2 3 4 5 Next
/ 5

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소