본문 바로가기

Excel VBA

(36)
file을 열지 않고 값 가져오기 ExecuteExcel4Macro()함수를 이용하면 엑셀 파일을 열지 않고 안에 있는 내용만 가지고 올 수 있습니다. Sub main() filePath = "c:\practice\" Filename = "삼정.xlsx" sheetName = "Sheet3" For i = 4 To 8 Msg = "'" & filePath & "[" & Filename & "]" & sheetName _ & "'!" & Range("B" & i).Range("a1").Address(, , xlR1C1) Debug.Print Msg value_01 = ExecuteExcel4Macro(Msg) Debug.Print value_01 Next End Sub 아래는 바탕화면에 있는 'separated_row_data_sheet...
Excel Vba Array, List, Map은 Collection으로 쓰는게 좋을 것 같다 VBA Array는 사이즈를 지정 해줘야 하기 때문에 불편합니다. Array말고 map형태로 데이터를 저장할 수 있는 기능이 있었습니다. key, value로 데이터를 저장하고 key로 value에 접근 할 수 있습니다. Dim c As Collection Set c = New Collection c.Add "Data1", "Key1" c.Add "Data2", "Key2" c.Add "Data3", "Key3" 'Insert data via key into cell A1 Range("A1").Value = c.Item("Key2") 출처 http://stackoverflow.com/questions/915317/does-vba-have-dictionary-structure end.
Excel VBA 지정한 폴더 안에있는 파일명 출력하는 예제 Excel VBA 지정한 폴더 안에있는 파일명 출력하는 예제 Sub Main() dirName = "c:\practice\" Call printFileList(dirName) End Sub Sub printFileList(folderName) Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim i As Integer 'Create an instance of the FileSystemObject Set objFSO = CreateObject("Scripting.FileSystemObject") 'Get the folder object Set objFolder = objFSO.GetFolder(folderName) i = 1 'loo..
VBA Sheet의 행 개수, 열 개수 구하기 개요 VBA로 기능을 만들다 보면 데이터가 들어있는 시트에 데이터가 몇개가 있는지 그 개수가 필요할 때가 많습니다. 그 방법에 대해 알아보았습니다. 결론부터 말하면 행개수 = Range("a1", Range("a1").End(xlDown)).Rows.Count 열개수 = Range("a1", Range("a1").End(xlToRight)).Columns.Count 이렇게 구하면 됩니다. 시트를 특정하고 싶다면 행개수 = Sheets("시트명").Range("a1", Range("a1").End(xlDown)).Rows.Count 위와 같이 앞에 Sheets()를 이용해 시트를 정해주시면 됩니다. 아래와 같이 21행 7열의 sheet가 있다고 할 때 이 sheet의 크기를 구하는 sub routine은 ..
vba 숫자를 영문자로 바꾸기 반복문은 숫자만 반복할 수 있기 때문에 열(Column) 단위로 반복을 하려면 숫자를 알파벳으로 바꾸고 싶을 때가 있습니다. 결론부터 말하면 Chr() 함수를 쓰면 됩니다. 대문자 A는 chr(65) 소문자 a는 chr(97)입니다. B C D E F G H I ... 66 67 68 69 70 71 72 73 ... b c d e f g h i ... 98 99 100 101 102 103 104 105 위와 같이 각 숫자에 알파벳이 대응 됩니다. 아래 코드를 실행하면 Sub test_chr() For i = 1 To 200 Range("a" & i).Value = Chr(i) Next End Sub 아래와 같이 나옵니다. end.
Excel VBA 알파벳 aa to az까지 만들기 Excel VBA 알파벳 aa to az까지 만들기 aa ~ az 까지 만들 일이 있어서 한번 만들어 봤다. 화면은 위와 같다 소스코드는 아래와 같다Sub filedName() init = 1 unit = 26 min_row = 2 max_row = unit * unit For i = 0 To max_row alphabet_start = 97 remainder = i Mod unit code = alphabet_start + remainder Range("a" & i + 2).Value = Chr(alphabet_start + Application.WorksheetFunction.RoundDown(i / unit, 0)) Range("b" & i + 2).Value = Chr(alphabet_start ..
VBA 별 찍기 예제 VBA 별 찍기 예제 별 찍는 알고리즘은 실제 업무에서 쓸일이 없어보이긴 하지만 제어문을 배우는 괜찮은 방법중 하나인 것 같다. 위와 같은 별을 엑셀로 찍어볼 것이다. 소소코드는 매우 간단한다. Sub printStar() number_of_stars = 10 For i = 1 To number_of_stars For j = 1 To i Range("a" & i).Value = Range("a" & i).Value + "*" Next Next End Sub end.
Excel VBA 예제 - Range를 이용하여 가로로 Loop 돌리기 Range를 이용하여 가로로 Loop 돌리기 Range("A" & i)를 이용하면 세로로 loop를 돌릴 수 있었다. 허나 가로로 하고자 하면 A B C D 이렇게 알파벳으로 나오고, 알파벳을 유니 코드와 대응을 해서 돌리는 방법도 있지만 조금만 열이 많아져도 AA, AB, AC, AXA, AXB 이런식으로 나오기 때문에 애로사항이 있었다. 그걸 해결한 코드이다. 잘 응용해서 사용해 보시기 바란다. Sub horizonLoop() For i = 1 To 20 Range(Cells(1, i), Cells(1, i)).Value = i Next End Sub Range에 2개의 parameter(매개변수)를 주면 앞에 주소부터 뒤에 주소까지 선택이 되는 것을 응용한 것이다. 앞에 셀과 현재 셀을 같게 주면 ..