반응형
▣ 선언부
Sub 선언1
...
End Sub
다음과 같이 외부 선언을 불러올 수도 있다.
Sub 선언2
선언1
End Sub
|
cs |
▣ 변수
' 1. 데이터 값을 저장하는 Dim
Dim 변수명
변수명 = "abc123"
' 2. 개채를 저장하는 개채 변수 Set
Set 개채변수 = Range("C1")
개채변수.value = "test"
Option Explicit을 사용하면 "Dim vars As Integer" 와같이 변수명 뒤에 데이터 형식을 명시해야함.
비교구문에서 객체의 존재여부는 is nothing , 변수는 isEmpty를 사용한다.
' 3. 전역변수
Public 변수명
|
cs |
▣ 배열
Dim arr
arr = Array("a","b","c","d","e","f")
for i=0 To 5 Step 1
msgbox arr(i)
Next
|
cs |
▣ 연산자
연산자 | 설명 |
<> | 같지 않다 |
is | 두 변수의 객체가 같다 |
논리 연산자
연산자 | 설명 |
not | 참일 경우 거짓, 거짓일 경우 참 |
and | 둘 다 참일 경우만 참 |
or | 둘 중의 하나라도 참이면 참 |
xor | 서로 다를 경우만 참 |
eqv | 서로 같을 경우만 참 |
산술 연산자
연산자 | 설명 |
^ | 지수 |
+ | 덧셈 |
- | 뺄셈 |
* | 곱셈 |
/ | 나눗셈 |
mod | 나머지 |
\ | 정수 나눗셈 |
& | 문자열 연결 |
▣ 조건문
IF 문
IF Num = 1 Then
[실행문1]
ElseIF Num = 2 Then
[실행문2]
Else
[실행문3]
End If
조건문 쓸 때 알아두면 유용한 내장 함수
IsEmpty(변수) - 데이터가 비어있다면 True 반환
다음과 같이 사용가능하다.
IF Not IsEmpty(Num) Then ... End If
|
cs |
Switch Case문
Dim number
number = 6
Select Case number
Case 1 To 5
Debug.WriteLine("Between 1 and 5, inclusive")
' The following is the only Case clause that evaluates to True.
Case 6, 7, 8
Debug.WriteLine("Between 6 and 8, inclusive")
Case 9 To 10
Debug.WriteLine("Equal to 9 or 10")
Case Else
Debug.WriteLine("Not between 1 and 10, inclusive")
End Select
|
cs |
▣ 함수 - 꾸러미 → http://gilbutbook.tistory.com/1139
1. 선언 & 호출
Function 함수명(pram1,pram2)
End Function
Sub func
함수명 1,2
End Sub
|
cs |
2. 내장함수 및 프로퍼티
1. 날짜 및 시간반환
Date , Time
2. 데이터가 비어있다면 True 반환
IsEmpty(변수)
3. 문자열 치환 Replace Data,Source,Destination
' Range("A1:B10").Replace Source,Destination
4. 좌,우 공백제거
Ltrim(Data) , Rtrim(Data)
5. 문자열 찾기
set str = Range("A1:C1").find("찾을문자")
' 찾은 문자열을 삭제한다
if Not str is nothing then
str.Rows.Delete
End if
6. 하이라이팅
str.Interior.ColorIndex = 1
7. 지우기
range("A1:E100").clear ' 해당 셀 비우기
rows.Delete ' 해당 셀 비우고 위로 정렬
8. 범위를 나타내는 문자를 반환
Range.address ' 열이름 가져올 때 유용
9. 현재 요일 반환
wek = WeekdayName(WeekDay(Date)) Weekday(Date) ' 해당 날짜의 요일값 반환 WeekdayName(..) ' 해당 요일의 이름 반환
10. 폰트색 바꾸기
Range("A1").Font.Color = vbRed
Range("A1").Font.Color = RGB(255, 0, 0)
11. 활성화
WorkBooks("통합문서1.xls").Activate
12. 문자열에서 지정된 문자 가져오기
Mid(value,15,3) ' 15글자 뒤 문자 3개를 가져옴
|
cs |
▣ 반복문
Dim i
For i = 1 To 1000 Step 1
[실행문]
Next
|
cs |
단일 개체를 반복적으로 참조하는 일련의 문을 실행
Set worksh = Workbooks("통합문서1.xlsx").Worksheets("sheet1")
With worksh
.Delete
.Value = "a"
.Font.Bold = True
End With
|
cs |
▣ 기타
시트를 다른 엑셀 파일로 추출
Application.ScreenUpdating = False
Application.DisplayAlerts= False
For i = 1 To Sheets.Count
ActiveWorkbook.Sheets(i).Select
ActiveSheet.Copy
ActiveWorkbook.SaveAs Path
ActiveWorkbook.Close
Next
|
cs |
워크시트 다루기
' 형변환
CStr(변수) - 문자열로 변환
CInt(변수) - 정수로 변환
' 복사 & 붙여넣기
Range("A:1:A10").Copy
Range("A:1:A10").PasteSpecial
'엑셀파일 및 워크시트 조작
1. 열기
1-1 Set worksh = Workbooks("통합문서1.xlsx").Worksheets("sheet1")
1-2 Set worksh = Workbooks("통합문서1.xlsx").Worksheets(1)
2. 추가
2-1 Workbooks("1.cell").Sheets(1).Add
2-1 ThisWorkbook.Worksheets.Add 3. 이름 변경
WorkSheets(1).Name = "sheet1"
4. 삭제
WorkSheets(1).Delete
' 셀조작
1. 값 삽입
worksh.Range("A1:C10").value = "aa"
2. 값 삭제
worksh.Rows("1:1000").Delete '1~1000행까지 값 삭제
3. 폭 조정
Worksh.Columns("A").ColumnWidth = 값
4. 자동필터
Worksh.Range("A1:C1000").AutoFilter 2,">=값",xland ' n열,비교
Worksh.Range("A1:C1000").SpecialCells(xlCellTypeVisible).Copy ' 보이는 셀만 복사
Worksh.Range("A1:C1000").AutoFilter ' 필터해제
' "검색*",xlpart <-- *(모든요소) & xlpart = 부분적으로 일치
Application.CutCopyMode = False ' 복사영역 제거
' 프린트 출력
Worksheets("1").printout
|
cs |
오브젝트 생성
' 2-1 윈도우 컨트롤
''선언
Set obj = CreateObject("wscript.shell")
''실행
x.run "C:\..notepad.exe"
''키를 보내는 함수
x.sendkeys "{Tab}"
' 2-2 파일 시스템 컨트롤
''선언
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Path,2) ' (2) 쓰기모드로 열기
''파일 존재 여부 확인
fso.FileExists(Path)
''쓰기
f.write "aa"
f.writeLine "aa" ' 쓰기 후 개행
''닫기
f.close
''삭제
fso.DeleteFile Path
''행열 개수 얻기
RowCount = Workbooks("통합문서1.xlsx").WorkSheets(1).Cells(Rows.Count,1).End(xlUp).Row
ColumnCount = Range("A1").End(xlToRight).Column
'2-3 IE 컨트롤
Set ie = CreateObject("Internetexplorer.application")
ie.visible = true
ie.navigate "http://원하는주소"
if (Document.GetElementById("loginform") ) Then
Set Page = ie.document
with page.all
On Error Resume Next ' 에러가 날 때 무시
.Item("item_id").Value = "abcd1234"
.Item("item_pw").Value = "1234ab"
.Item("loginform").Submit
End With
End If
|
cs |
시간타입인 컬럼 찾기
1
2
3
4
5
6
7
8
9
10
11
12
|
Sub Macro()
Dim c As Range
For Each c In ActiveSheet.UsedRange
If IsDate(c) Then
MsgBox c.Column
Exit Sub
End If
Next
End Sub
' UsedRange [ 워크시트에서 사용한 셀 영역을 Range 개체로 반환한다. ]
|
cs |
특정 문자를 찾아서 해당 셀의 열을 조절
Set text = Columns.find("URL")
text.Column 열을 번호로 반환
Columns( text.Column ).ColumnWidth = 25.0
|
cs |
정확히 일치하는 값을 검색한다.
' Find 매서드의 인수중에 LookAt 인수 값을 xlWhole 로 지정하면
' 전체가 일치된 값을 검색합니다.
Sub FindWord()
Dim FindRange As Range
Set FindRange = Cells.Find(what:="문자열", LookIn:=xlValues, lookat:=xlWhole)
If Not FindRange Is Nothing Then
FindRange.Interior.Color = vbRed
End If
End Sub
' 인수명 생략형 (보통은 이렇게 인수명을 생략형으로 쓴다)
Set c = Range("a1:a10").Find("찾을값",, xlValues, xlWhole)
' 인수명 정식형태
Set c = Range("a1:a10").Find(What:="찾을값", LookIn:=xlValues, LookAt:=xlWhole)
|
cs |
파일 열람 여부 확인
Dim sPath
sPath = "D:\폴더\" "
Dim wb
On Error Resume Next
Set wb = Workbooks("File.xlsx")
If Err Then ' 오픈되지 않음
Set wb = Workbooks.Open(sPath & "File.xlsx")
Else
msgbox "열림"
|
cs |
instr("open","open") - 리턴값 1 (문자열 시작위치 반환)
|
cs |
특정 행을 다른 엑셀파일로 저장
Set rData = rows("1:5")
Set wk = Workbooks.Add
rData.Copy wk.Worksheets(1).Range("A1") '새로 만든 워크시트 A1행에 행 저장
wk.SaveAs ThisWorkbook.Path & "\" & "rows.xls"
wk.Close False
|
cs |
행열 너비-높이 자동 조절
' 너비를 자동 조정합니다.
Range("B2").CurrentRegion.EntireColumn.AutoFit
' 높이를 자동 조정합니다
Range("B2").CurrentRegion.EntireRow.AutoFit
' CurrentRegion은 연속된 범위를 나타냅니다.
|
cs |
파일읽기
'모두 읽기
Set file = fso.OpenTextFile("C:\test.txt", 1)
content = file.ReadAll
' 한 줄씩 읽기
Set file = fso.OpenTextFile ("c:\test.txt", 1)
Do Until file.AtEndOfStream
line = file.Readline
Loop
file.Close
|
cs |
특정 단어를 찾은 행 삭제
Dim arr
arr = Array("a","b","c","d","e","f")
For Each inRng In Range("A1:A10")
For Each com In arr
if Instr(inRng,com) <> 0 Then
inrng.EntireRow.Delete
End if
Next
Next
|
cs |
열려있는 모든 워크북 시트에 값 삽입
1
2
3
4
5
6
7
8
9
10
|
Sub t
Dim ws
Dim wb
For Each wb In Workbooks
For Each ws In wb.Worksheets
ws.Range("a1").Value = "가나다"
Next
Next
End Sub
|
cs |
랜덤 값 생성
1
2
3
|
' 범위가 1 <= N < 100인 난수 생성
Dim random
random = RANDBETWEEN(1,100)
|
cs |
1
2
3
4
5
|
Dim MyChar
MyChar = Chr(65) ' Returns A.
MyChar = Chr(97) ' Returns a.
MyChar = Chr(62) ' Returns >.
MyChar = Chr(37) ' Returns %.
|
cs |
반응형
'OS-서버 > 윈도우' 카테고리의 다른 글
certutil - 파일 해시값 확인 (0) | 2018.11.24 |
---|---|
특정 프로그램 실행 차단하는 방법 (0) | 2018.10.14 |
Powershell 엑셀 사용 (0) | 2018.10.05 |
Powershell 원격에서 ssh 명령 실행 , 파일 전송 (0) | 2018.03.20 |
Powershell XML (0) | 2018.03.20 |