VBScriptでExcelの日付条件データ取得⑦(おさらい)

ここまでに使用したコードの内容を、処理の流れに沿って簡単に解説します。
①フォルダパスとファイル名の指定して結合

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件の場合のチェックします。

タイトルとURLをコピーしました