본문 바로가기

OS-서버/윈도우

VBS 문법

반응형

 

▣ 선언부


 

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 678
        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(..) ' 해당 요일의 이름 반환
 
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개를 가져옴


13. 문자열 길이 찾는 함수
Len(var) 
 
14. 숫자면 True
IsNumeric(var)
 
15. 입력
inputbox("msg","titlename","defaultvalue"- 입력좀 받자
 
 
cs
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
dim objShell
dim objFolder
 
set objShell = CreateObject("shell.application")
set objFolder = objShell.NameSpace("C:"\")
 
if (not objFolder is nothingthen
objFolder.NewFolder("TestFolder")
end if
 
set objFolder = nothing
set objShell = nothing

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

 

문자열 자체 해석 - 이스케이프(escape)

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