目標
VBScriptからVBAのプロシージャを呼び出すプログラムを記述する
前回の記事ではVBScriptを利用して原本ファイルの複製を行いました。この複製後のファイルはその後、仕事で利用されシートに沢山の情報が追加されていきます。場合によっては今後も使う情報が追加されることがあります。今後も追加される情報であれば原本ファイルもそのようにアップデートされる必要があることになります。
今回はこの複製のプログラムを再利用して「作業後のファイル(お仕事時点では最新の情報のファイル)→複製元のファイル」へ上書をした後にVBAのプロシージャを利用して「不要な情報のみファイルから消す」といった操作をできるようにスクリプトを改変していきたいと思います。
Excel VBA プロシージャの追加
「VBA_System.xlsm」のModule2に次のプロシージャを準備します。
Sub dataClear()
Dim sheetName(7) As String
sheetName(1) = "現金"
sheetName(2) = "カード売上"
sheetName(3) = "銀行預金"
sheetName(4) = "日別統合"
sheetName(5) = "シート統合"
sheetName(6) = "勤務休憩シート"
sheetName(7) = "ドリンクバック集計"
Dim tableRow As Integer
Dim tableColumns As Integer
Dim i As Integer
For i = 1 To 7
Sheets(sheetName(i)).Select
If i <= 5 Then
Range("A5").Select
If ActiveCell.Value <> "" Then
ActiveCell.CurrentRegion.Select
tableRow = Selection.Rows.Count
tableColumns = Selection.Columns.Count
ActiveCell.Offset(2, 0).Resize(tableRow - 2, tableColumns).Select
Selection.ClearContents
End If
Else
Range("A2").Select
If ActiveCell.Value <> "" Then
ActiveCell.CurrentRegion.Select
tableRow = Selection.Rows.Count
tableColumns = Selection.Columns.Count
ActiveCell.Offset(1, 0).Resize(tableRow - 1, tableColumns).Select
Selection.ClearContents
End If
End If
Next i
End Sub
VBScriptプログラムの編集
前回の記事はこちらからご覧いただけます。
VBScriptプログラムの編集
「NewFile.vbs」をエディタで開いて次のように編集します。編集後は「callVBS.vbs」というファイル名で保存しています。
Option Explicit
Dim objExcel, objOpenExcel, objFSO, FileTitle
Set objExcel = CreateObject( "Excel.Application" )
Set objFSO = CreateObject( "Scripting.FileSystemObject" )
'-------- 日付を取得--------
FileTitle = Date
FileTitle = mid(FileTitle,1,4) & mid(FileTitle,6,2)
'------- 最新ファイルから新しい原本を作成 --------
objFSO.CopyFile "..\WORKSPACE\" & FileTitle - 1 & ".xlsm", ".\VBA_System.xlsm"
objExcel.Application.Visible = true
Set objOpenExcel = objExcel.Workbooks.Open("C:\Users\appsg\Desktop\ORIGINALFILE\VBA_System.xlsm")
objOpenExcel.Application.Run "Module2.dataClear"
objOpenExcel.Save
objOpenExcel.Close
objExcel.Quit
'------- 原本から新規のファイルを作成 --------
If (objFSO.FileExists("..\WORKSPACE\" & FileTitle & ".xlsm") = False) Then
objFSO.CopyFile ".\VBA_System.xlsm" , "..\WORKSPACE\" & FileTitle & ".xlsm"
End If
Set objFSO = Nothing
Set objOpenExcel = Nothing
Set objExcel = Nothing
記述したら「ファイル」タブから「名前を付けて保存」を選択して「ORIGINALFILE」フォルダに「callVBS.vbs」の名前で保存します。
※Visual Studio Code
これで「callVBA.vbs」の準備は終わりです。
これまでの操作で「ORIGINALFILE」内は次のようになっています。この中で利用するファイルは「callVBS.vbs」と「VBS_System.xlsm」のファイルのみです。
VBScriptプログラムの利用
callVBA.vbsを動かしてみる
「callVBA.vbs」をダブルクリックするとプログラムが動きます。結果は「WORKSPACE」フォルダにある先月のフォルダをコピーして「ORIGINALFILE」内にある原本のファイル「VBA_System.xlsm」を上書きします。その後、新しくなった「VBA_System.xlsm」内の「現金」「カード売上」「銀行預金」「日別統合」「シート統合」「勤務休憩シート」「ドリンクバック集計」の7枚のシートのデータをクリアします。
実行結果「ORIGINALFILE」フォルダ
「VBA_System.xlsm」内では従業員登録給与表シートの従業員名簿以外のシートデータはクリアされています。
実行結果「WORKSPACE」フォルダ
今回は以上です。次回は今回利用したVBScriptの解説記事となっています。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。