programing

Python을 사용하여 VBA 스크립트를 작성하시겠습니까?

css3 2023. 8. 18. 22:48

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