Python을 사용하여 VBA 스크립트를 작성하시겠습니까?
이것은 약간의 확장일 수 있지만, 파이썬 스크립트를 사용하여 MS Excel(또는 VBA를 사용하는 다른 MS Office 제품)에서 파이썬윈 또는 다른 모듈을 사용하여 VBA를 만들 수 있는 가능성이 있습니까?
이 아이디어가 나온 곳은 열 자동 너비를 수행할 수 없는 파이썬 오픈파이xl 모듈이었습니다.내가 가지고 있는 스크립트는 메모리에 워크북을 만들고 결국 디스크에 저장합니다.시트가 꽤 많고 각 시트 안에는 컬럼이 꽤 있습니다.생각해봤는데,만약 내가 python을 사용하여 (메모장 같은 곳에 저장된) VBA 스크립트를 Excel의 VBA 편집기로 가져온 다음 pythonwin을 사용하여 해당 스크립트를 python에서 실행한다면 어떨까요?
다음과 같은 것:
Workbooks.worksheets.Columns("A:Z").EntireColumn.Autofit
당신이 논평하기 전에, 네, 저는 openpyxl에서 열을 자동으로 조정하는 방법에 대한 파이썬의 많은 예를 보았지만, 저는 파이썬에서 사용할 수 없을 수도 있는 VBA의 기능을 활용할 수 있는 몇 가지 흥미로운 기회를 보았습니다.
어쨌든, 저는 인터넷을 조금 뒤졌지만, 제가 할 수 있다는 것을 나타내는 어떤 것도 보지 못했습니다. 그래서 저는 물어보려고 했습니다.
건배, 마이크
네, 가능합니다.Microsoft KB의 VB에서 VBA 매크로를 생성하는 방법을 확인할 수 있습니다.
아래의 Python 코드는 동일한 방법을 보여줍니다. 이것은 KB 샘플 코드의 전반부의 기본 포트입니다.
import win32com.client as win32
import comtypes, comtypes.client
xl = win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
ss = xl.Workbooks.Add()
sh = ss.ActiveSheet
xlmodule = ss.VBProject.VBComponents.Add(1) # vbext_ct_StdModule
sCode = '''sub VBAMacro()
msgbox "VBA Macro called"
end sub'''
xlmodule.CodeModule.AddFromString(sCode)
눈에 보이는 자동화된 Excel 매크로를 볼 수 있습니다. 그러면 다음과 같이 표시됩니다.VBAMacro
위에서 정의한.
상위 답변은 매크로만 추가합니다. 실제로 매크로를 실행하려면 한 단계 더 추가해야 합니다.
import win32com.client as win32
xl = win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
ss = xl.Workbooks.Add()
xlmodule = ss.VBProject.VBComponents.Add(1)
xlmodule.Name = 'testing123'
code = '''sub TestMacro()
msgbox "Testing 1 2 3"
end sub'''
xlmodule.CodeModule.AddFromString(code)
ss.Application.Run('testing123.TestMacro')
모듈 이름을 추가하면 기존 스크립트와의 충돌을 해제하는 데 도움이 됩니다.
언급URL : https://stackoverflow.com/questions/19505676/use-python-to-write-vba-script
'programing' 카테고리의 다른 글
어떻게 봄에 같은 콩의 여러 인스턴스를 얻을 수 있습니까? (0) | 2023.08.18 |
---|---|
특성 오류: '워크시트' 개체에 'set_column' 특성이 없습니다. (0) | 2023.08.18 |
Local Container Entity Manager Factory Bean과 Local Entity Manager Factory Bean의 차이점은 무엇입니까? (0) | 2023.08.18 |
HttpContext는 어떻게 처리합니까?현재의.사용자. 신원.어떤 사용자 이름이 존재하는지 알고 계십니까? (0) | 2023.08.18 |
MSIE가 Ajax 요청에 대해 상태 코드 1223을 반환합니다. (0) | 2023.08.18 |