今回は(1)のアップグレード版です。
(1)では、特定のセルに取り込むCSVファイル名を入力する方法を紹介しました。でも実際の運用では「ファイル名を手入力するとミスが発生する」とか「複数一気に取り込みたい」なんて要望が来ることがあります。
というわけで今回は
・ボタンを押したらファイルダイアログが表示される
・ファイルダイアログでは複数ファイルを選べる
この機能を追加しましょう。
Dim Path As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "ファイルの選択"
If not .Show Then
MsgBox "キャンセルされました"
Exit Sub '処理を抜ける。Functionの場合はExit Function
End If
Path =.SelectedItems(1)
End With
Application.FileDialog プロパティを使用した方法です。
前回はセルの値を「Path 」としていましたが、今回はダイアログで選択したファイルを「Path」に設定するようにしました。
前回のコードに置き換え直せばそのまま使えます(^ ^)
Application.FileDialog プロパティは機能が豊富で、
複数ファイルを選択したい場合はAllowMultiSelect をTrueに。
開かれたときの初期パスを指定したい場合はInitialFileNameを設定。
フォルダ内にあるファイルを全部取り込みたい、という場合には、msoFileDialogFilePickerではなくmsoFileDialogFolderPickerを使うことでフォルダ全体のアイテムを取得する…など、ユーザーの要望に合わせてカスタマイズできるので、重宝しています。
また、フォルダ選択画面でキャンセルした場合の処理も
if not .Show then でスルーしてやれば後続処理への影響も少なく済みます。
もちろん、ファイル選択すらユーザーにさせずにファイルを取り込むのが一番スマートだという意見もありますが、私の場合は「フォルダにあるファイルを、目で確認して取り込める」方法をご依頼いただくことが多いです。
ユーザーにとって一番使いやすいツールを作成できるようにしていきたいですね。
では今回はこの辺で。
ところで前回コードを直貼りしていたところ、なぜか本文が表示されず「!?」となってしまいました。サポートに問い合わせたところ、原因は波括弧が続いた場合に起こる表示不具合だったようです。
コードを貼る場合には注意しなければ…
(運営さんお世話になりましたm(__)m)