我有一个应该处理word和excel文件的子程序。为了使它更通用,我想传递一些元素作为参数,而不是多次写出相同的东西,但有几点差异。
该过程接受文件的扩展名,这很好用。但是,我还需要使用appWord.Documents.Open或appExcel.Workbooks.Open来打开文件。如何存储它并将其作为过程的参数调用?
ResaveFiles "appExcel.Workbooks", "docx", 12, 0
ResaveFiles "appExcel.Workbooks", "doc", 0, 12
ResaveFiles "appWord.Documents", "xlsx", 56, 51
ResaveFiles "appWord.Documents", "xls", 51, 56
Sub ResaveFiles(appType, srcExtName, srcExtNum, tmpExtNum)
If lcase(fso.GetExtensionName(objFileOrig)) = srcExtName then
<<StartWord>>
Set objOpenFile = (appType.Open(objFileOrig.path))
...
所以,我最终的目标是使用一个过程而不是四个,因为它们之间的唯一区别是文件格式和正在调用的应用程序。
我对文件格式没有任何问题,但是,我无法将参数“appWord.Documents”传递给Set objOpenFile =(appType.Open(objFileOrig.path))语句。上面提供的版本似乎不起作用,因为参数显示为字符串。 有没有办法优化这个?
答案 0 :(得分:2)
如果您之前已经创建了对象appExcel
和appWord
,请删除&#34;&#34;他们周围的痕迹。例如,下面打开每个Word和Excel的空白文件:
Dim oExcel, oWord
set oExcel = CreateObject("Excel.Application")
set oWord = CreateObject("Word.Application")
TestOpen oExcel.Workbooks, "C:\Test\blank.xlsx"
TestOpen oWord.Documents, "C:\Test\blank.docx"
Sub TestOpen(oApp, sFile)
Dim oFile
oApp.Parent.Visible = True
Set oFile = oApp.Open(sFile)
Wscript.Echo "File opened: " & oFile.Name
Set oFile = Nothing
End Sub
Set oExcel = Nothing
Set oWord = Nothing
示例输出: