0
병합 된 셀을 병합 해제하고 Excel에서 반복하는 VBA 매크로가 있지만 Excel을 열지 않고이 매크로를 실행해야하며 동일한 논리가 여러 Excel에도 적용됩니다. vba를 호출하고 Excel에서 폴더에 적용하는 배치 파일이 필요합니다. 그것을 할 수있는 방법이 있습니까?박쥐 파일에서 VBA 매크로 호출
병합 된 셀을 병합 해제하고 Excel에서 반복하는 VBA 매크로가 있지만 Excel을 열지 않고이 매크로를 실행해야하며 동일한 논리가 여러 Excel에도 적용됩니다. vba를 호출하고 Excel에서 폴더에 적용하는 배치 파일이 필요합니다. 그것을 할 수있는 방법이 있습니까?박쥐 파일에서 VBA 매크로 호출
당신은 (루프) 배치 파일에서이 VBScript를 호출 할 수 있습니다
사용법 :
CScript를 inject.vbs "C : \ 요한 \ VbaStuff \ 빈 workbook.xlsx" "C : \ 요한 \ VbaStuff \ DummyMacro.bas ""AddDateToA1 "
inject.vbs :
dim oArgs, i, FSO
dim fileName, macroFileName, functionName
dim oApplication, oWorkbooks, oWorkbook, oVbProject
dim oComponents, oModule, fullFunction
Set oArgs = WScript.Arguments
For i = 0 to oArgs.Count - 1
WScript.Echo "Arg" & i & ": " & oArgs(i)
Next
WScript.Echo ""
if oArgs.Count < 3 then
WScript.Echo "Too few arguments"
WScript.Quit
end if
fileName = oArgs(0)
macroFileName = oArgs(1)
functionName = oArgs(2)
set FSO = CreateObject("Scripting.FileSystemObject")
if not FSO.FileExists(fileName) then
WScript.Echo "Excel file does not exist"
WScript.Quit
end if
if not FSO.FileExists(macroFileName) then
WScript.Echo "Macro file does not exist"
WScript.Quit
end if
set oApplication = CreateObject("Excel.Application")
oApplication.DisplayAlerts = False
WScript.Echo "Injecting in Excel version: " & oApplication.Version
set oWorkbooks = oApplication.Workbooks
set oWorkbook = oWorkbooks.Open(fileName)
WScript.Echo oWorkbook.Name
set oVbProject = oWorkbook.VBProject
WScript.Echo oVbProject.Name
set oComponents = oVbProject.VBComponents
set oModule = oComponents.Import(macroFileName)
fullFunction = Trim(oModule.Name & "." & functionName)
WScript.Echo "Full function: '" & fullFunction & "'"
oApplication.Run(fullFunction)
oComponents.Remove(oModule)
oWorkbook.Save()
WScript.Echo "Saved changes"
oWorkbook.Close(False)
Call oApplication.Quit()
set oModule = Nothing
set oComponents = Nothing
set oVbProject = Nothing
set oWorkbook = Nothing
set oWorkbooks = Nothing
set oApplication = Nothing
set FSO = Nothing
완전성에 대한
더미 매크로 :
Attribute VB_Name = "DummyMacro"
Sub AddDateToA1()
Dim oCell As Range
Dim sTime As String
Set oCell = ThisWorkbook.Sheets(1).Cells(1, 1)
sTime = CStr(TimeValue(Now))
oCell.Value = sTime
MsgBox "Wrote time " & sTime & " to " & oCell.Address(0, 0, xlA1, 1)
End Sub
[? 명령 줄이나 배치 파일에서 엑셀 매크로를 실행하는 방법] (의
가능한 중복 http://stackoverflow.com/questions/2050505/way-to-run -excel-macros-from-command-line-or-batch-file) –
당신이 말하는 것은 xlsx가 "MyMacro"매크로에 매크로가 있어야한다는 것입니다. 이제 배치 파일을 호출하면 xlsx가 열립니다 매크로를 실행 한 다음 닫으면됩니다. – Maharaj
예. 병합되지 않은 프로세스를 적용하고 기술을 적용하기 위해 폴더에 다른 Excel 통합 문서를 열 수있는 매크로를 작성할 수 있습니다. 귀하의 질문에 '통합 문서 A에서 실행중인 매크로에서 통합 문서 B의 셀을 병합 해제하려면 어떻게해야합니까?'라는 질문을 다시 질문 할 수 있습니다. –