我需要使用Powershell执行一个单词宏。到目前为止我已经
了$wd = new-object -comobject word.application
$wd.run("PrintAll")
$wd.quit()
我想要做的是添加一个参数或参数,指向网络上的特定文件夹,然后将该参数传递给宏。 宏开始如下:
Public sPath
Sub PrintAll()
Dim fs, f, fc, f1
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(sPath) ' Provide folder name where doc files are present
Set fc = f.Files
Dim FileList() As String
Dim Cnt As Integer
Cnt = 0
Dim myDoc As Word.Document
我需要指向大约70个不同的文件夹位置,目标是在Word中只有1个Sub(宏),但要有单独的powershell脚本指向每个文件夹并将它们传递给一个Sub(宏)。另外,我希望Powershell中的参数将文件夹位置发送到宏中的变量sPath。
有关如何实现这一目标的任何想法?
我试过
$wd = new-object -comobject word.application
$wd.run('PrintAll', '\\serverX\g$\xxxxxxxx')
$wd.quit()
但是得到错误“Argument:'2'应该是System.Management.Automation.PSReference。使用[ref]。”
答案 0 :(得分:0)
好的,我已经测试过了。
1)请转到VBA环境并编写此代码(哦,上帝,这是vb6)
Public Function PrintAll(arg1 As String, arg2 As String) As String
MsgBox arg1 + arg2
PrintAll = arg1 + arg2
End Function
2)转到PowerShell并编写此代码:
$word = New-Object -ComObject Word.Application
$doc = $word.Documents.Open("C:\Users\Ali\Desktop\Files\A.docx")
$arg1=[ref]"Hello"
$arg2=[ref]",Buddy"
$word.Run("PrintAll",$arg1,$arg2) # The returned value is Hello,Buddy
$doc.close()
$word.quit()