【マクロ】まったり解説ExcelでCSV取込(2)

記事
IT・テクノロジー
今回は(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 でスルーしてやれば後続処理への影響も少なく済みます。

もちろん、ファイル選択すらユーザーにさせずにファイルを取り込むのが一番スマートだという意見もありますが、私の場合は「フォルダにあるファイルを、目で確認して取り込める」方法をご依頼いただくことが多いです。
ユーザーにとって一番使いやすいツールを作成できるようにしていきたいですね。

では今回はこの辺で。


ところで前回コードを直貼りしていたところ、なぜか本文が表示されず「!?」となってしまいました。サポートに問い合わせたところ、原因は波括弧が続いた場合に起こる表示不具合だったようです。
coco11.png
コードを貼る場合には注意しなければ…
(運営さんお世話になりましたm(__)m)
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す