Work Schedulerを使用してWorkbook Xでvbaサブプロシージャを開始するVBScriptを管理します。このプロシージャは2つの他のブックを開き、データをWorkbook Xに移動し、 。手順の結果は、保存する必要がある更新されたワークブックXです。 VBAプロシージャは正常に動作し、VBScriptによって予期されるようにトリガされます。ただし、ファイルを保存する必要があるVBScriptの部分は機能しません。 VBScriptは、Stackoverflow.comや他のサイトで見つけたコードに基づいています。 ファイルXを開いたときにVBScriptで保存しようとしましたが、ファイルを保存するかどうかを決定するよう求められます。私がそうするならば、私は上記の手順が作成したデータを見ることができます。 タスクマネージャで、VBScriptで作成したExcelインスタンスは、VBScriptで処理しようとしましたが、決して閉じられません。私もSaveメソッドを試しましたが、運がありません。私は運がないメソッドのさまざまなパラメータを試しました。私はこのサイトや他のサイトでこの問題をどのように解決できるかを検索しています。しかし、彼らはSaveとSaveAsメソッドを提案しています。Excelアプリケーションを終了するVBScript/VBAは、標準のExcelイベントの影響を受けます。
解決策ではなく根本的な原因が見つかりました。スクリプト自体とは何の関係もありません。開いているブックのイベントで。 私はuserform(StartUpForm.Show)を起動するコードを持っています。クローズイベントとオープンイベントの前のワークブックで、フィルタリングされたデータのセットでフィルタを削除するRemoveFilterプロシージャを呼び出します。 UserForm.ShowとRemoveFilterを閉じる前のブックブックイベントで表記法としてマークした場合、それは機能します。 StartUpForm.Showの呼び出しを避けるだけでは不十分です。 StartUpForm.Showは表記法としてマークするか削除する必要があります。どのようにすることができますか?回避策はありますか?
これは動作しません:
Private Sub Workbook_Open()
Dim batRun As Boolean
RemoveFilter
ResolveStartUp (batRun)
If Not batRun Then
StartUpForm.Show vbModal
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
RemoveFilter
End Sub
これは動作します:
Private Sub Workbook_Open()
Dim batRun As Boolean
RemoveFilter
ResolveStartUp (batRun)
If Not batRun Then
' StartUpForm.Show vbModal
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' RemoveFilter
End Sub
のVBScript:ドライブ:
On Error Resume Next
ImportAccesFilesToHolidaysAndWorkshops
Sub ImportAccesFilesToHolidaysAndWorkshops()
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open ("Z:\ResourceManagement\Holiday and workshops input.xlsm", 0, False,,,,,,,,True)
xlApp.Run "ImportResourcesAndProjects"
xlApp.ActiveWorkbook.Close
xlBook.SaveAs "Z:\ResourceManagement\Holiday and workshops input.xlsm",,,,,,xlExclusive, xlLocalSessionChanges
xlBook.Close
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
WScript.Echo "Finished."
WScript.Quit
End Sub
xlBook.Save'は、既存のファイルを上書きするために期待している場合は '使用してみてください - .SaveAs'isはファイル – Dave
感謝のコピーを保存しようとして'あなたの入力のために。私はそれを試した。しかし、あなたが編集した問題の説明を読んだら、私は解決策ではなく問題を発見したことがわかります。 –