01-VBA

VBScriptを利用したVBAプロシージャの呼び出し(Part.1)| 現役エンジニア&プログラミングスクール講師

目標

VBScriptからVBAのプロシージャを呼び出すプログラムを記述する

前回の記事ではVBScriptを利用して原本ファイルの複製を行いました。この複製後のファイルはその後、仕事で利用されシートに沢山の情報が追加されていきます。場合によっては今後も使う情報が追加されることがあります。今後も追加される情報であれば原本ファイルもそのようにアップデートされる必要があることになります。

今回はこの複製のプログラムを再利用して「作業後のファイル(お仕事時点では最新の情報のファイル)→複製元のファイル」へ上書をした後にVBAのプロシージャを利用して「不要な情報のみファイルから消す」といった操作をできるようにスクリプトを改変していきたいと思います。

Excel VBA プロシージャの追加

ワークシート内の不要な情報を消去するといったプログラムはVBAで準備します。VBScriptはこのプロシージャを呼び出すといったプログラムとなっています。

「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プログラムの編集

この記事のプログラムは前回までに作成した「NewFile.vbs」を編集して完成させています。編集後のファイル名は「callVBS.vbs」として保存をしています。

前回の記事はこちらからご覧いただけます。

VBScriptを利用したファイルの複製(Part.3)| 現役エンジニア&プログラミングスクール講師VBScriptを利用したファイルコピーについて記事にしています。タスクスケジューラなどを利用すると定期的なファイル生成を自動化できます。この記事はVBAユーザーフォームの記事で作成したシステム用で作成しています。...

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

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枚のシートのデータをクリアします。

今回は前の月のファイルを手作業で作成(名前付け)して「WORKSPACE」内に保存をして実行をかけました。

実行結果「ORIGINALFILE」フォルダ
「VBA_System.xlsm」内では従業員登録給与表シートの従業員名簿以外のシートデータはクリアされています。

実行結果「WORKSPACE」フォルダ

今回は以上です。次回は今回利用したVBScriptの解説記事となっています。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

ダイアログボックス|Excel VBA (Part.2)【MsgBox】組み込み定数編 | 現役エンジニア&プログラミングスクール講師

2022年12月3日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

クラスの利用方法|Excel VBA (Part.2) | 現役エンジニア&プログラミングスクール講師

2023年2月18日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の エラー処理(Part.2)| 現役エンジニア&プログラミングスクール講師

2022年12月27日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ExcelVBAのActiveSheetプロパティ | 現役エンジニア&プログラミングスクール講師

2022年8月10日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の イベント編(Part.1)3つのプロシージャ /引数のByVal(値渡し)とByRef(参照渡し)| 現役エンジニア&プログラミングスクール講師

2022年12月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の イベント編(Part.2)Functionプロシージャ | 現役エンジニア&プログラミングスクール講師

2022年12月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site