Excelでファイル名を対象セルに入力する方法

このQ&Aのポイント
  • VBAを使用して、Excelの対象セルにファイル名を入力する方法を学びたいです。
  • また、選択したファイルのコピーを指定のフォルダに保存する方法も知りたいです。
  • ファイル名の取得と、ファイルのコピー保存について教えてください。
回答を見る
  • ベストアンサー

EXCELでFile名を対象セルに入力する方法

VBA勉強中です。 エクセルの対象セルに、対象ファイル名を入力するVBAを作りたいのですが、 うまくできません。。。 やりたいことは↓↓↓ ---------------------- 【1】ファイル名を対象セルに入力する 1.「ファイル名取得」ボタンをクリック 2.「ファイルを選択してください」ウィンドウ表示 ※.ここで、ファイル種類を制限  1) 画像ファイルのみ選択の場合  2) 全てのファイルを選択可能にする場合 3.ファイルを選択、「OK」をクリック 4.対象セルに、ファイル名が入力される(拡張子付) ---------------------- また、 以下もできると最高に嬉しいです!! ---------------------- 【2】選択したファイルのコピーが指定フォルダに保存される 1.デスクトップに「data」というフォルダが作成される 2.選択したファイルのコピーが「data」フォルダに保存される ---------------------- どなたか教えて頂ければ嬉しいです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

No2です。 【2】選択するファイル形式を複数にする場合、どのように記述すればよいでしょうか。 Application.GetOpenFilename 画像 で検索すると、サンプルが沢山ありますよ。 Sub ボタン1_Click() Dim OpenFileName As String Dim tmp As Variant OpenFileName = Application.GetOpenFilename(FileFilter:="画像 ,*.jpg; *.gif; *.bmp", Title:="ファイルの選択") If OpenFileName <> "False" Then Range("A1").Value = OpenFileName tmp = Split(OpenFileName, "\") Range("A2").Value = tmp(UBound(tmp)) End If End Sub では如何でしょうか。 【1】ボタン1で拡張子含む名称を表示するにはどうすればよいでしょうか。。。 前回のコードに Range("A2").Value = Split(Range("A2").Value, ".") がありましたが、Split関数を使って、拡張子を省いています。 tmp = Split(OpenFileName, "\") Range("A2").Value = tmp(UBound(tmp)) の部分は、選択したファイルのパスの部分を省いています。

oo_mosaki
質問者

お礼

ありがとうございます!! 勉強になります。如何せん<>はなんだろうというところから始めていたので、 Split関数の読み込みまで追いついていませんでした。 この2日で大分理解が進んだ気がします。 ありがとうございました!

その他の回答 (2)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

VBA勉強中とのことで Webで vba dialog 組み込み VBA FileCopy SpecialFolders("Desktop")  ででも検索してみてください。 情報が沢山あります。 一例ですが 新しいシートに ボタンを 2つ配置 Sub ボタン1_Click() ChDir ThisWorkbook.Path Dim OpenFileName As String Dim tmp As Variant OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", Title:="ファイルの選択") If OpenFileName <> "False" Then Range("A1").Value = OpenFileName tmp = Split(OpenFileName, "\") Range("A2").Value = tmp(UBound(tmp)) Range("A2").Value = Split(Range("A2").Value, ".") End If End Sub Sub ボタン2_Click() Dim wScriptHost As Object Set wScriptHost = CreateObject("WScript.Shell") ChDir wScriptHost.SpecialFolders("Desktop") Dim SaveFileName As String SaveFileName = Application.GetSaveAsFilename(InitialFileName:=Range("A2").Value, _ Title:="ファイルの保存", FileFilter:="Microsoft Excelブック,*.xls?") If SaveFileName <> "False" Then Range("B1").Value = SaveFileName FileCopy Range("A1").Value, Range("B1").Value End If End Sub 1.デスクトップに「data」というフォルダが作成される は無視しています。 最初から保存するフォルダーは決めておいて方が良いでしょう。 1) 画像ファイルのみ選択の場合 はエクセルファイルにしていますので、ご希望に合わせて編集してください。

oo_mosaki
質問者

お礼

ありがとうございます! 早速ボタンを作ってやってみました。 【1】ボタン1で拡張子含む名称を表示するにはどうすればよいでしょうか。。。 ボタン2は、はじめファイルが見つかりませんとのエラーがでたのですが、 "A1"と"B1"を差し替えたらうまくできました! また、 【2】選択するファイル形式を複数にする場合、どのように記述すればよいでしょうか。 Filter関数やfilterIndexなど調べているのですが、 分かりません。。。 申し訳ありませんが、 教えていただければ幸いです。 また、勉強中と大それたことを書いてしまいました。 まだ始めて3日目です。基本事項が分かっておらずすみませんです。

回答No.1

ファイルやフォルダーの操作全般は FileSystemObject を調べると良いでしょう。 フォルダー新規作成、ファイル コピーなどができます。 また、ファイルのフルパスからファイル名だけを取り出したりもできます。 ファイル選択ダイアログを表示し、選択したファイルのファイル名をセル A1 に表示する Sub hoge()   Dim dlg As FileDialog   Set dlg = Application.FileDialog(msoFileDialogFilePicker)   dlg.AllowMultiSelect = False   dlg.Filters.Add "すべてのファイル(*.*)", "*.*"   dlg.Filters.Add "画像ファイル(*.jpg)", "*.jpg"   If dlg.Show = -1 Then     ' ファイル種別で処理がかわるならこの Select Case で処理を分ける     ' 処理を分けないのなら Select Case ~ End Select は不要     Select Case dlg.FilterIndex       Case 1 ' すべてのファイル       Case 2 ' 画像ファイル     End Select     Dim strFullPath As String     Dim strFileName As String     strFullPath = dlg.SelectedItems(1) ' 選択したファイルのフルパスを取得     Dim fso As Object     Set fso = CreateObject("Scripting.FileSystemObject")     strFileName = fso.GetFileName(strFullPath) ' フルパスからファイル名を取得     Cells(1, 1).Value = strFileName ' セル A1 にファイル名を表示   End If End Sub

oo_mosaki
質問者

お礼

ありがとうございます!! まさに必要としていたことでした。 もしお時間ありましたら、 【1】ファイル種別を複数選択にする場合 についても教えて頂ければ嬉しいです。 .jpg、.gif、.png、などを考えているのですが。 勉強が全く追いついておらず申し訳ありません。

関連するQ&A

  • EXCELである条件のファイルを開くようにしたい

    A行にファイル名(拡張子なし)がずらっと入力されております。そのセルをクリックすると、または、そのセルの横に「開く」などのボタンを作って、ある特定のフォルダー内にあるA行のセル入力値のファイルを開くようにしたい。例えば、A1:0001、A2:0002、A3:0003…のように入力されており、A1をクリックすると、あるフォルダーの\\○○\△△\□□ 内の0001.pdfが開くようにしたい。 ファイル一覧の行が数百行ありますので、ハイパーリンクで1個1個設定するには効率が悪いため、一括でVBA(使ったことがありませんが…)などでできないでしょうか? 宜しくお願いします。

  • 日付を入力したセルをファイル名にして保存するには

    こんにちは。VBA 初心者です。 あるセルに日付を入力しています。 そのセルは書式設定の表示形式・日付で「2001/3/14」と入力した時に、「2001年3月14日」と表示される様に設定しています。 そしてこのファイルをマクロで名前をつけて保存するとき、上記のセル(の値)をファイル名したいのですが、2001\3\14と認識され、エラーが出ます。 セルに日付を入力する時に、出来るだけかな入力はせず、日付をファイル名にして保存するにはどういう方法があるでしょうか。 わかりにくい説明で申し訳ありません。ウィンドウズXP・エクセル2003です。よろしくお願いします。

  • VBAからファイルをセル入力から開く方法

    VBAからファイルをセル入力から開く方法 だれかご教授頂けませんでしょうか?VBAからエクセルファイルを開こうとしています。 そこでシート1のA1セルにファイル名を記述してあり、そのファイル名からファイルを開く事は出来ますでしょうか? 何か良い方法がありましたら教えて頂きたいのですが。

  • エクセルで、ファイル内に入力した日付を、保存時のファイル名に反映したい

    エクセルで、ファイル内に入力した日付を、保存時のファイル名に反映したい。 お世話になります。請求書の作成・保存を効率よくしたいと考えています。 例:作ったファイルの、ある特定のセル(日付を入力)で平成22年6月と表示された状態で名前をつけて保存をクリックすると、ファイル名の欄に自動的に2206・・と反映され、なおかつ、自分の言葉で現場名などを入力して2206グーマンション・・という風にして保存したいです。もっというと、保存先のフォルダも自動的に2206フォルダとかに入るようにできないでしょうか?? 詳しい方、教えていただけるとありがたいです・・!お願いします

  • エクセルのファイル名に変数を指定して開く方法

    エクセルのVBA初心者です。 最近、といっても2~3日前に始めたのですが、簡単なところで つまづいてしまい、本を読んでもにっちもさっちもいかず、困っております。 下記にやりたいことと、構文を記載しますので、お手数ですがアドバイスを 頂ければ助かります。 <やりたいこと> 特定のセルに記載された文字をファイル名としたエクセルファイルを VBAで開きたい。 <構文> Sub W() Dim ファイル名 As Integer ファイル名 = Range("C5").Value Workbooks.Open "D:\日本\データ\ファイル名.xlsx" End Sub <問題点> 上記のように構文を組んでも、「実行時エラー '1004'」なるメッセージが出て 「***が見つかりません。ファイル名およびファイルの保存場所が正しいか...」とのメッセージが出てしまいます。 C5のセルにはファイル名が記載され、このファイル名を変数としたつもりです。 VBAが入っているファイルは、「日本」というフォルダに入っており、変数によるファイルは「日本」というフォルダの子供である「データ」というフォルダに入っています。 アドバイスよろしくお願いします。

  • エクセルでファイル名を任意のセルに入力するマクロを組むには?

    エクセルにて、マクロを実行すると、 ダイアログボックスが出てきて、ファイルを 選ぶと、そのファイル名が任意のセル (たとえばB10とか)に入力されるような マクロを組みたいのですが、うまくいきません。 しかも、そのファイル名についている拡張子なしで 入力されるようにしたいです。 どなたかご教授ください。

  • セルに入力されたファイル名からその画像を探しだしたい。

    いつもお世話になります。 エクセルはVBAの入門書を読んで勉強中というレベルです。 仕事の上で以下の作業が出来れば助かるので教えていただきたいのですが、 例えばエクセルでC列に画像データファイル名(TIF)が入力されているとして、そのファイル名から簡単に別のフォルダの中にある同じファイル名の画像を探してきて表示する・・・というようなことができますでしょうか? よろしくお願いいたします。

  • VBAでパスを取得しファイル名を入力するには

    EXCEL2003です。同じフォルダにVBAマクロとデータのcsvファイルがあります。このとき、マクロでパスを取得し、次にcsvファイル名を手入力あるいはそのフォルダの詳細表示からファイルをクリックすればデータを取り込めるようにしたいのですが、どなたかマクロを教えてくれないでしょうか。か。

  • 対象Excelファイルを開き日付入力をすると自動でファイル名+日付でファイルを保存

    対象Excelを開きます。→日付の入力画面起動(ポップアップ)→日付入力→同じディレクトリへ定形ファイル名+日付でファイル保存(例:Office20090812.xls) こうした事は出来るのでしょうか? また現在、対象ファイル起動後、外部データ取り込み→テキストファイルをインポートを行っておりますが、対象ファイル起動後、対象テキストファイルをインポートを自動と言いますが、どのファイルをインポートするのかポップアップで出来ないでしょうか? テキストファイルのインポートはセルA1列のみです。 可能でしょうか? 宜しくお願いします。

  • エクセルで入力したセル内の文字を!!

    エクセルで入力したセル内の文字を!! 保存時、名前を付けて保存→ファイル名の入力・・・・ この時の、ファイル名の入力欄に、そのまま表示させる方法はないでしょうか? ファイル名がかなり長い為、毎回の入力する面倒が省ければ良いと思うのですが。 ちなみに、コピーの後貼り付ける事は出来ませんでした。 エクセル2003です。

専門家に質問してみよう