【VBA入門者向けTips】 ファイルの保存:ユーザーライクな仕様

ExcelVBA

Last Updated on 2024年6月1日

Excel VBAでファイルを保存する際、単純なコードだけでは不十分です。実務ではユーザーが遭遇する可能性のある問題を先回りして解決することが求められます。この記事では、そのための具体的なコード例と共に、注意点や工夫を紹介します。
                    (Initial Post Date:2024年6月1日)

ファイル保存の基本

基本コード

まず、ファイルを保存する基本的なサンプルコードを2種類示します。

①上書き保存

②名前を付けて保存

  

名前を付けて保存する 2つの方法

名前を付けてファイル保存するには、主に2つの方法があります。

  1. 指定フォルダに保存
  2. ダイアログで指定して保存

次に、それぞれの方法について詳細を説明します。 

  

指定フォルダに保存

あらかじめ保存フォルダを指定して、ファイルを保存する簡単なサンプルコードを紹介します。

開いたファイルを指定したフォルダに保存する

  

ダイアログで指定して保存

ダイアログを使ってフォルダを選択し、ユーザーに保存先フォルダを選んでもらうことで柔軟性を持たせます。

参照設定の追加

ダイアログを使用するためには、参照設定を行う必要があります。以下の手順に従って、参照設定を行ってください。

  1. ExcelのVBAエディタを開く
  2. 参照設定を開く
  3. 必要なライブラリを選択

以下のコードを使用します。

  

実務で考慮すべき点とその対応

実務では、以下のような問題や要望が予測されます。

  1. ファイルの存在確認: フォーマットファイルが存在しない場合にどうするか?
  2. 既存ファイルの上書き: 保存するファイルが既に存在する場合の対応。
  3. 月別フォルダの作成: 月ごとにフォルダを作成して保存したい。
  4. エラーハンドリング: 保存時に発生するエラーを適切に処理する。

これらの点を踏まえて、実用サンプルとして、帳票フォーマットを使用して毎日帳票を出力するツールを作成するための具体的なコードを紹介します。

(ダイアログで保存するコード)

コードの解説

ファイルの存在確認:

指定されたフォーマットファイルが存在するかを確認し、存在しない場合はエラーメッセージを表示して Exit Sub で処理を中断します。

フォルダの存在確認と作成:

Dir(saveFolderPath,vbDirectory) = “” Dir関数は指定されたパスのディレクトリの存在を確認します。vbDirectoryはディレクトリを示す定数です。この関数が空文字を返す場合、そのディレクトリは存在しません。MkDir saveFolderPath:MkDirステートメントは指定されたパスに新しいディレクトリを作成します。

日付フォルダの作成:

今日の日付を使用して今月のフォルダの存在を確認します。フォルダが存在しない場合はMkDirステートメントで作成します。

上書き確認:

既存のファイルがある場合、上書きするかどうかをユーザーに確認します。MsgBox関数を使ってユーザーに上書きの確認メッセージを表示し、Noが選択された場合は処理を終了します。

エラーハンドリング:

エラーハンドリングは、プログラムが実行中に発生するエラーを適切に処理するための方法です。VBAでは、エラーハンドリングを使用して予期しないエラーが発生した場合に、プログラムがクラッシュせずに適切な処理を行うことができます。

  • On Error GoTo エラーラベル名: エラーが発生した際に指定したエラーラベルにジャンプします。
  • Err.Description: エラーの詳細情報を取得します。

エラーラベルの名前は自由に設定できますが、わかりやすい名前をつけることをお勧めします。例えば、EXE_SaveError や ErrorHandler などです。

  

まとめ

単純な保存コードに加えて、実務で必要な機能を予測して実装することで、ユーザーにとって使いやすいVBAツールを提供できます。これにより、入門者から中級者へとスキルアップが期待できます。

 

おわりに

この記事で紹介した方法に、さらに追加機能を実装することで、信頼性の高いVBAコードを作成できます。バックアップ機能やログ機能などは別の機会にご紹介しますね。

コメント