2014-02-25 1 views
0

제 용어에 대한 사과 또는이 영역에 대한 지식 부족이있을 수 있습니다.vbs 스크립팅은 Windows 7/8에서 여전히 작동합니다.

이 (일반적으로 * .vbs 파일과 같은 디렉토리에)를 엑셀 통합 문서 WBName = "\WorkBookName.xlsm"를 열고 해당 통합 문서에서 매크로 MacroName = "'" & strpath & WBName & "'!MacroName"를 실행하는 *.vbs 스크립트입니다. 그런 다음 통합 문서를 저장합니다.

또한 3 개의 변수를 수신 할 수있는 WriteLog라는 Sub가 있으며 로그 파일 "TestFile.txt에 기록됩니다. 그리고이 WriteLog 서브는 스크립트의 일부 단계에서 호출됩니다.

현재 운영 체제는 MS Windows XP Profesionel이며 매크로를 실행하기 위해이 스크립트를 사용하여 2010 파일을 엽니 다.

내 질문에이 스크립트를 windows7 및/또는 windows8에서 사용할 수 있습니까? 아니면 다른 스크립팅 언어로 변경하거나 다시 작성해야합니까? 그리고 내가 어떤 언어를한다면?

'need to update WBName & MacroName here as this is fairly generic 

dim WshShell 
set WshShell = CreateObject("Wscript.Shell") 

dim strPath 
strPath = WshShell.CurrentDirectory 

Dim myExcelWorker 
Set myExcelWorker = CreateObject("Excel.Application") 

'myExcelWorker.Visible = True ' this makes excel visible 

dim oWorkBook 
dim WBName 

WBName = "\WorkBookName.xlsm" 'WB to be opened 

dim MacroName 
MacroName = "'" & strpath & WBName & "'!MacroName" 'Macro Name to be run 

'Write Start+strPath to log file 
Call WriteLog("Start_XXX",strPath,"var3") 

'Write Mid+strPath+WBName to log file 
Call WriteLog("Mid___XXX",strpath & WBName,"var3") 

'open WB for running macro 
'set oWorkBook = myExcelWorker.Workbooks.open(strpath & WBName) 'for WB WITHOUT password 
Set oWorkBook = myExcelWorker.Workbooks.Open(strpath & WBName,,,,"","Performance") 'for WB with password 

'Write MacroName to log file 
Call WriteLog("Mid___XXX",MacroName,"var3") 

myExcelWorker.Run MacroName 

myExcelWorker.DisplayAlerts = False 'this is required so the WB will save without being prompted 

oWorkBook.Save 
oWorkBook.Close 

myExcelWorker.DisplayAlerts = True ' set it back to true again as it is good practice 

myExcelWorker.Quit 

'Write End to log file 
Call WriteLog("End___XXX","t2","t3") 

set oWorkBook = Nothing 
set myExcelWorker = Nothing 
set WshShell = Nothing 

'sub to write to log file 
Sub WriteLog(var1, var2, var3) 

Dim objShell 
Set objShell = WScript.CreateObject("WScript.Shell") 

'Wscript.Echo "VBSStart.vbs is running" 
Dim ObjFso 
Dim StrFileName 
Dim ObjFile 
Dim FlName 

'WScript.Echo var1 & ",,,," & var2 

FlName = "TestFile.txt" 
StrFileName = objShell.CurrentDirectory & "\" & FlName 
Set ObjFso = CreateObject("Scripting.FileSystemObject") 

'Creating a file for writing data 
set ObjFile = ObjFso.OpenTextFile(StrFileName, 8, True) 

'Writing a string into the file 
ObjFile.WriteLine(var1 & "," & var2 & "," & var3 & "," & now) 

'Closing the file 
ObjFile.Close 

' Using Set is mandatory 
Set objShell = Nothing 

End Sub 
+0

'vbscript'라는 태그가 붙은 질문을 둘러보고 Windows 7/8과 관련이 있고 질문과 답변을 읽는 지 확인하여 직접 질문에 답변 할 수 있습니다. –

답변

0

VBScript은 스크립팅 환경에서 실행해야합니다. Windows 환경에서 이것은 Windows Scripting Host입니다. Wikipedia에 따르면 Windows 8에는 WSH 5.8이 포함되어 있지만 불행히도 Wikipedia의 소스에 대한 참조는 없습니다.

+0

여전히 Windows XP에 있지만, 다음 Windows 버전으로 이동하기 전에 이것을 잘 알고 있습니다. – HattrickNZ

0

예. 올바른 권한이 있다고 가정하면 잘 작동합니다.

-1

예 Windows 7/8에서 지원되는 VBS 스크립트는 Microsoft Office 제품과 관련되어 있기 때문에 필요한 경우 PC에서 해당 제품을 사용하는 것이므로 문제가되지 않습니다.

+0

이 답변은 정확한 문맥에 없습니다. Microsoft Office와 함께 제공되는 VBA를 가정하고 TS는 Windows에 통합 된 스크립팅 언어 인 VBScript를 요구합니다. 어쩌면 VBScript에 대한 대답을 향상시킬 수 있습니까? – AutomatedChaos

+0

정보를 제공해 주셔서 감사합니다. 지금 당장은 정보가 없습니다. –

관련 문제