역시 또 업무상 excel vba를 이용할 일이 있어서 사용하다가 cmd line에서 실행할 일이 있어서 매번 검색하기 힘들어서 정리해두었다...
(검색해보면 다 나오는 것들임)
보아하니 wsh라는 WScript.Shell 객체를 통해서 cmd.exe 말고도 원하는 프로세스를 수행시킬 수 있는 듯 싶다.
그리고 cmd.exe 뒤에는 여러가지 명령을 차례로 연결할 수 있는데 이때는 && 를 이용해서 연결시켜준다.
그리고 아래 예제는 현재 워크북의 경로로 이동하여 dir을 한번 해주고 해당경로를 탐색기로 열어주는 코드이다.
Dim wb As Workbook: Set wb = Workbooks(ThisWorkbook.Name)
Dim wsh As Object: Set wsh = VBA.CreateObject("WScript.Shell")
Dim strPath As String: strPath = """" & wb.Path & """"
Dim cmdText As String
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
cmdText = "cd /d " & " strPath & " && " dir"
wsh.Run "cmd.exe /S /C " & cmdText, windowStyle, waitOnReturn
wsh.Run "Explorer.exe " & strPath & ", vbNormalFocus"
이외 기억해둘 사항들...
1. loop를 오래 돌일이 있을때 응답없음으로 되는 경우는 loop 에 DoEvents 를 넣어주면 된다.
2. 아주 많은 line을 처리하여 셀에 일일히 넣는 작업은 아주 느린 속도를 보여주므로 이때는 큰 배열을 선언하여 배열에서 작업하고 난 뒤 원하는 시트의 range에 바로 넣는 것이 빠르다.
3. progress bar를 보여주는 vba코드들도 있던데.. 복잡해보이고 그냥 Application.StatusBar 에 스트링을 할당하면 엑셀창의 상태줄에 원하는 스트링을 보여주어 대강 프로그레스를 알수있다.
4. 원본 데이터를 텍스트로 저장할때 str format은 \n 만 주기보다는 \r\n 을 주어야 엑셀에서 읽어들일때 정상적으로 한줄로 인식한다.(Line Input #1, text 사용시...)
*VBA study에 참고할만한 사이트(google에서 vba로만 검색해도 이를 다루는 블로그 등의 글들이 아주 많다..)
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
https://sun-kakao.tistory.com/85
VBA 배열과 Range의 속도차이!
100,000행에 "ㅎㅎ" 라는 글자를 넣는 업무를 한다고 하면! Range를 사용해서 넣었을 때와 배열을 사용해서 넣었을 때의 속도차이를 보겠다. 우선 Range를 사용하여 "ㅎㅎ"라는 글자를 넣는다.
sun-kakao.tistory.com
'STUDY' 카테고리의 다른 글
Python / 파이썬 coding시 기억해둘만한 것들 (2) | 2021.10.06 |
---|---|
폰FOTA Update이후 Tethering 안됨현상. (0) | 2021.08.02 |
재미로 해보는 로또 당첨 시뮬레이터 (0) | 2021.06.22 |
brake 관련 읽어보면 좋은 글들 (0) | 2021.06.15 |
CSTS FL 응시 및 통과. (4) | 2021.04.07 |
댓글