キャロルには、YR1905-LIC12345-Smith、Harry-Brown、Maryなどの名前の約1,000個のファイルがあるディレクトリがあります。彼女は、これらすべてのファイル名(ファイル自体ではない)をワークシートに入れ、名前をダッシュ​​で区切りたいと考えています。したがって、サンプルファイル名は実際には1行の4つのセルを占有します。キャロルは、これを実現するにはマクロが必要だと考えていますが、そのマクロのファイル名にアクセスする方法がわかりません。

もちろん、これを行うためにマクロを使用することはできますが、マクロを使用する必要はありません。代わりに、古いDOS時代のトリックを使用して、必要なものを取得できます。

それ以降のバージョンのExcelを使用している場合にコマンドプロンプトにアクセスするには、タスクバーのWindowsアイコンの横にある検索ボックスに「コマンドプロンプト」(引用符なし)と入力するだけです。古いバージョンのExcelを使用している場合、コマンドプロンプトにはWindowsからアクセスできます。すべてのプログラム|アクセサリー|コマンド・プロンプト。コマンドプロンプトで、ファイルが含まれているディレクトリに移動するまでナビゲートします。この例では、次のディレクトリにあるファイルのリストを取得しようとしていると仮定します。

c:\Users\e07482\My Documents\rnp

そのディレクトリに移動するには、コマンドプロンプトで次のコマンドを入力します。

chdir "\Users\e07482\My Documents\rnp"

パス名にスペースがあるため、ディレクトリを引用符で囲む必要があります。次に、次のコマンドを入力して、ファイルリストが何であるかを画面上で確認します。

dir /b /a-d

「/ a-d」の部分は「ディレクトリをリストしない」ことを意味します。画面に表示される内容に満足したら、次を使用してファイルに送信できます。

dir /b /a-d > filelist.txt

これにより、現在のディレクトリ内のすべてのファイルのリストを含むテキストファイル(filelist.txt)が作成されます。これで、Excel内で次の手順を実行できます。

。 [開く]ダイアログボックスを表示します。 (Excel 2007では、[Office]ボタンをクリックし、[開く]をクリックします。Excel2010では、リボンの[ファイル]タブをクリックし、[開く]をクリックします。Excel2013では、リボンの[ファイル]タブをクリックし、[開く]、[コンピューター]、最後の順にクリックします。参照。以降のバージョンのExcelでは、リボンの[ファイル]タブをクリックし、[参照]をクリックします。)

。ダイアログボックスの下部にある[ファイルの種類]ドロップダウンリストを使用して、テキストファイル(.prn; .txt; * .csv)を開くことを示します。

。コマンドプロンプトで作成したfilelist.txtファイルに移動して選択します。

。 [開く]をクリックします。 Excelはテキストインポートウィザードを開始し、[ステップ1/3]ダイアログボックスを表示します。 (図1を参照)

。 [区切り]を選択していることを確認してから、[次へ]をクリックします。 Excelは、[ステップ2/3]ダイアログボックスを表示します。

。区切り文字としてダッシュを指定してください。 ([その他]をクリックしてから、区切り文字としてダッシュを入力する必要があります。)

。 [完了]をクリックします。必要に応じて、ファイルがインポートされ、ダッシュで分割されます。

上記の手順は、特にファイルリストをExcelにたまに取得するだけでよい場合は、かなり簡単に実行できます。より日常的に行う必要がある場合は、おそらくマクロを使用してそれを行う方法を探す必要があります。次のマクロは非常に高速に機能します:

Sub GetFileNames()

Dim sPath As String     Dim sFile As String     Dim iRow As Integer     Dim iCol As Integer     Dim splitFile As Variant

'specify directory to use - must end in "\"

sPath = "C:\"



iRow = 0     sFile = Dir(sPath)

Do While sFile <> ""

iRow = iRow + 1         splitFile = Split(sFile, "-")

For iCol = 0 To UBound(splitFile)

Sheet1.Cells(iRow, iCol + 1) = splitFile(iCol)

Next iCol         sFile = Dir     ' Get next filename     Loop End Sub

マクロを実行するときは、現在のワークシートに何もないことを確認してください。 (そこにあるものはすべて上書きされます。)また、マクロの先頭近くでsPath変数に割り当てられているディレクトリパスを変更する必要があります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11144)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excel-Pulling_Filenames_into_a_Worksheet [ファイル名をワークシートにプルする]