2017-09-01 18 views
2

Powershellを使用して単語マクロを実行する必要があります。これまでのところ私は私がやりたい何引数/パラメータを持つ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つの小(マクロ)を持っていますが、別のPowerShellスクリプトを持つようにすることが目標であること各フォルダをポイントし、1つのSub(マクロ)に渡します。また、Powershellの引数で、マクロ内の変数sPathにフォルダの場所を送信します。

どのように私はこれを達成することができますか?

私は

$wd = new-object -comobject word.application 
$wd.run('PrintAll', '\\serverX\g$\xxxxxxxx') 
$wd.quit() 

を試みたが、エラーました "引数: '2' System.Management.Automation.PSReferenceでなければなりませんが、[参照]を使用してください。"

答えて

0

OK、私はそれをテストしました。

1)のPowerShellに移動して、このコードを書く)

Public Function PrintAll(arg1 As String, arg2 As String) As String 

    MsgBox arg1 + arg2 

    PrintAll = arg1 + arg2 

End Function 

2(神ああ、これはVB6である)VBA環境に移動し、このコードを入力してください:

$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() 
+0

残念ながら、私がする必要が印刷する前にドキュメントに何らかのフォーマットが必要なので、マクロというマクロを実行します。だから私は実際にマクロを呼び出すのではないので、これはうまくいくとは思わない。 –

+0

私はそれを持って、あなたの問題は:あなたは、この関数に適していない引数の値を渡している。 –

関連する問題