2017-03-10 24 views
0

VBScriptを使用してword、excel、powerpointなどのすべてのマイクロソフトアプリケーションを保存して閉じようとしています。私は言葉を持って、仕事に優れているvbsパワーポイントの保存とクローズ

'Word 
On Error Resume Next 
Set wd = GetObject(, "Word.Application") 
On Error Goto 0 

If Not IsEmpty(wd) Then 
For Each doc In wd.Documents 
doc.Save 
doc.Close 
Next 

wd.Quit 
End If 

そして:

悲しいこと
'Excel 
On Error Resume Next 

Set xl = GetObject(, "Excel.Application") 
If Err Then 
If Err.Number = 429 Then 

WScript.Quit 0 
Else 

CreateObject("WScript.Shell").LogEvent 1, Err.Description & _ 
    " (0x" & Hex(Err.Number) & ")" 
WScript.Quit 1 
End If 
End If 
On Error Goto 0 

xl.DisplayAlerts = False 

For Each wb In xl.Workbooks 
wb.Save 
wb.Close False 
Next 

xl.Quit 
Set xl = Nothing 

、私はパワーポイントで同じことを行う方法を考え出したていません。私はオンラインで調査しましたが、その答えは見つかりませんでした。私が見つけたものは、VBScriptを使用していないものでした。

これは私が仕事をするためにしようとしているスクリプトです:私はこのスクリプトを実行すると

'PowerPoint 

On Error Resume Next 
Set objPPT = GetObject("PowerPoint.Application") 
On Error Goto 0 

If Not IsEmpty(objPPT) Then 
For Each doc In objPPT.Presentation 
objPresentation.Save 
objPresentation.Close 
objPPT.Quit 
Next 

objPPT.Quit 
End If 

、何も起こりません。

私のスクリプトを修正してもらえますか?

ありがとうございました!

私は時間と労力を費やしていただければ幸いです!

答えて

0

このコードは、それが(オフィス2010でテスト済み)プレゼンテーションのコレクションをループすることによって行わ取得する必要があります

On Error Resume Next 
Set objPPT = GetObject(,"powerpoint.Application") 
On Error Goto 0 

If Not IsEmpty(objPPT) Then 
For Each doc In objPPT.Presentations 
doc.Save 
doc.Close 

Next 

objPPT.Quit 
End If 
+0

ああ、あなたは私にそれを打つ! ;-) –

0

注VBA <> VBScriptのこと。それを修正するためにタグを変更したいかもしれません。 とにかく、オブジェクト階層が間違っています

objPPTはPowerPointアプリケーションオブジェクトです。

Applicationオブジェクトには、開いているプレゼンテーションごとに1つのPresentationオブジェクトを含むPresentationsコレクションがあります。 Presentationsコレクションを繰り返し処理します。

これを試してください。私は私のVBAの脳の表面からVBScriptの構文を推測しています:

On Error Resume Next 
Set objPPT = GetObject("PowerPoint.Application") 
On Error Goto 0 

If Not IsEmpty(objPPT) Then 
For Each Presentation In objPPT.Presentations 
Presentation.Save 
Presentation.Close 
objPPT.Quit 
Next 

objPPT.Quit 
End If 
関連する問題