ここまでに使用したコードの内容を、処理の流れに沿って簡単に解説します。
①フォルダパスとファイル名の指定して結合
basePath = "C:\Users\sasio-tech.SASIO.JP\Documents\作業申請ツール"
srcPath = basePath & "\sample_001.xlsx"
outPath = basePath & "\sample_002.xlsx"
basePath:ファイルが格納されているフォルダのパスを指定します。
srcPath:参照元ファイル(sample_001.xlsx)のフルパスを作成します。
outPath:出力先ファイル(sample_002.xlsx)のフルパスを作成します。
<変数の中身のイメージ>
参照元ファイル:
C:\Users\sasio-tech.SASIO.JP\Documents\作業申請ツール\sample_001.xlsx
出力先ファイル:
C:\Users\sasio-tech.SASIO.JP\Documents\作業申請ツール\sample_002.xlsx
③参照元のファイルを呼び出し
Set srcBook = xlApp.Workbooks.Open(srcPath)
Set srcSheet = srcBook.Sheets(1)
参照元ファイル(sample_001.xlsx)をExcelオブジェクト上で読み込み、操作可能な状態にします。
対象となるシートとして、1番目のシート(例:「サーバー情報」シート)を指定します。
出力元ファイル(sample_002.xlsx)をExcelオブジェクト上で読み込み、操作可能な状態にします。
④出力先のファイルを呼び出し
Set outBook = xlApp.Workbooks.Open(outPath)
Set outSheet = outBook.Sheets(1)
出力先ファイル(sample_002.xlsx)をExcelオブジェクト上で読み込み、操作可能な状態にします。その後、1番目のシート(表紙シート)を操作対象として指定します。
⑤出力元ファイル(sample_002.xlsx)の表紙のセルへ値を出力
outSheet.Cells(7, 4).Value = setDateStr
outSheet.Cells(8, 4).Value = shinseiUser
outSheet.Cells(9, 4).Value = workStartDate
outSheet.Cells(10, 4).Value = workEndDate
outSheet.Cells(14, 4).Value = workStartDate
outSheet.Cells(15, 4).Value = workEndDate
申請日、申請者、保守作業開始日、保守作業終了日のセルに情報出力していきます
⑥出力元ファイル(sample_002.xlsx)のD列の文字を左寄せ
outSheet.Range("D7:D10").HorizontalAlignment = -4131
outSheet.Range("D13:D15").HorizontalAlignment = -4131
2つの範囲のセルを中央揃えしていきます。
⑦改訂履歴に情報を追記
Set outSheet = outBook.Sheets(2)
outSheet.Cells(4, 2).Value = setDateStr
outSheet.Cells(4, 4).Value = setDateStr
outSheet.Cells(4, 5).Value = shinseiName2
outSheet.Cells(4, 6).Value = setDateStr
1番目のシート(表紙シート)を操作対象として指定した後に、「日付」「作成日」「作成者」「承認日」のセルへ情報を出力していきます。
⑧改定履歴の処理の文字の位置の変更
outSheet.Cells(4, 2).HorizontalAlignment = -4108
outSheet.Cells(4, 4).HorizontalAlignment = -4108
outSheet.Cells(4, 6).HorizontalAlignment = -4108
追記した情報を中央揃えします。
⑧実機環境作業手続き申請書のシートを指定
Set outSheet = outBook.Sheets(3)
サーバー管理台帳で取得した情報をシートに出力するため3番目のシートを指定する
⑨サーバー管理台帳のオートフィルタの有無
Const xlCellTypeVisible = 12
Const xlUp = -4162
dataStartRow = 4
If srcSheet.AutoFilterMode = False Then
MsgBox "オートフィルタが設定されていません。"
srcBook.Close False
outBook.Close False
xlApp.Quit
WScript.Quit
End If
サーバー管理台帳にオートフィルタが設定されているか確認する
⑩サーバー管理台帳のオートフィルタの有無
srcSheet.Range("A4").AutoFilter 7, "*" & targetDate & "*"
「見出しが3行目にある表」に対して4行目以降のデータ行を対象にG列(7列目以降)に targetDate を含む行だけをフィルタをかける。
⑪サーバー管理台帳の対象の日付の確認
On Error Resume Next
srcSheet.Range("G4:G41").SpecialCells xlCellTypeVisible
If Err.Number <> 0 Then
MsgBox "対象日付のデータがありません。"
Err.Clear
srcBook.Close False
outBook.Close False
xlApp.Quit
WScript.Quit
End If
On Error GoTo 0
lastRow = srcSheet.Cells(srcSheet.Rows.Count, "G").End(xlUp).Row
フィルタがかかっている範囲(=データ行の開始地点~終了地点)でファイルの件数の結果が
0件の場合のチェックします。

