ファイルを結合するプログラムが中断される例を挙げます。中断された際のあとの処理についてご説明します。
プログラムとサンプルデータを下図の様に準備して下さい。
ダウンロードリンク先 → hiro-yukioのサイト 次に進みます。
準備が出来ましたら「170830_●サンプルデータ1.xlsx」と「170830_●サンプルデータ2.xlsx」の中(下図参照)を見て、「理科」と「算数」の列が入れ替わっていることを確認して下さい。次に進みます。
「複数ファイルの結合_VBA.xlsm」の Module1 を実行してみましょう。
下図の様にメッセージが表示され、処理が中断します。「OK」をクリックします。次に進みます。
プログラム内の「Stop」が黄色の網掛けになりました。この部分で処理が中断されました。
次に進みます。
プログラムで異常を判定している部分の抜粋です。
For カウンター変数 = 1 To 対象ブックの最終列_1
If 対象ブックの表題名_2(カウンター変数) <> _
.Cells(1, カウンター変数) Then
'処理を中断へ
MsgBox "表題の並びまたは列名が前のファイルと異なる為、
処理を中断します。" & カウンター変数 & "列目"
Stop
Else
End If
Next カウンター変数
赤文字の部分で 配列変数の値 と 開いたファイルの表題 をFor ~ Next文で1つずつ照合しています。1つ目のファイルは11列目が理科でしたが、2つ目のファイルは11列目が算数で表題名が一致しないと判定されました。
本来は中断された原因を見つけるために、このタイミングでファイル内の確認を行う事になります。
それでは次に、中断された後のプログラムやファイルに対してのあとの処理をご説明します。
「Stop」が黄色の網掛けになっていますが、リセット「■」をクリックしてプログラムを完全に終了します。(上図参照)
プログラムが正常終了していない為、下図の様にプログラムが入ったファイル以外に2つのデータファイルが開いたままです。
「データ結合用一時ブック.xlsx」と「170830_●サンプルデータ2.xlsx」です。
この2つのファイルを閉じます。
「データ結合用一時ブック.xlsx」は削除します。(このファイルは正常にファイルの結合が出来ると「データ結合用フォルダ」に名前を変えて保存され、このフォルダーからは消えます。)
これで、異常終了した際のあと処理はおわりです。
(実際の処理であれば、データファイルを修正して、再度結合の処理を行います)
余談ですが、プロのプログラマーであれば異常終了した場合も、使用者に次に何をすべきかを説明するなり、開きっぱなしのファイルを閉じて、自動的に削除するなりの処理も記述すると思います。この辺りはどこまで自動で処理をさせたいか、プログラムを組む人の考え方によると思います。
次回の内容は考慮中です。読者のみなさんの今までのアクセス数で興味を持たれている方が多いと思われる内容を記載したいと思っています。お楽しみに。
読者の方へ。過去の記事をご覧になられていて、「画像」が上手く表示されない場合は、「hiro-yukioのサイト」の「過去のブログ記事」フォルダーにPDFで保存しましたのでこちらでご覧下さい。




