6

1 つの XLSM ワークブックのモジュールに、すべての外部データを更新し、そのブックを保存して閉じるマクロがあります。

ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.Quit

VBScript ファイルを使用して、そのマクロをスケジュールされたタスクの一部として実行します

objExcel.Workbooks.Open(fname)
objExcel.Visible = True
On error resume next
objExcel.Run "RefreshAllData"

質問: 既存のブックで既存のマクロを再利用して、他の複数のブックのすべてのデータを更新するにはどうすればよいですか? (つまり、VBScript ファイルに必要な変更を探しています。マクロ自体への変更を最小限に抑えたいと考えています。ファイル名は VBScript ファイルに含まれます) TIA。

4

3 に答える 3

2

このようなことができると思います。

  1. 指定されたフォルダー内のすべての Excel ファイルを検索します
  2. 各Excelファイルを選択して有効化
  3. refreshdata 関数を呼び出す

これをサポートするコード スニペット

Sub RefreshAllExcelInFolder()
    Dim fso
    Dim ObjFolder
    Dim ObjFiles
    Dim ObjFile
    Dim objExcel

    'Creating File System Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    'Getting the Folder Object
    Set ObjFolder = fso.GetFolder("<<C:folder path>>")

    'Getting the list of Files
    Set ObjFiles = ObjFolder.Files
        'On Error Resume Next
        For Each ObjFile In ObjFiles
            If LCase(Right(ObjFile.Name, 5)) = ".xlsx" Or LCase(Right(ObjFile.Name, 4)) = ".xls" Then
                Workbooks.Open(ObjFile).Activate
                RefreshAllData
            End If
        Next
End Sub

Sub RefreshAllData()
    ActiveWorkbook.RefreshAll
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    MsgBox ("Going back In")
End Sub

これが役立つことを願っています

于 2013-06-05T07:31:18.733 に答える
1

マクロをまったく変更しない場合は、Excel を再読み込みし続ける必要があります。次に、マクロ ワークブックを開いてから、ターゲット ワークブックを開き、マクロを実行します。削除できる場合:

Application.quit

次に、少なくともExcelを開いたままにし、毎回マクロを実行する前にターゲットブックを開いたままにすることができます。マクロコードをvbsファイルに入れる方が簡単だと思いますが

于 2013-06-05T06:55:39.113 に答える