- ベストアンサー
Excelでファイル名を対象セルに入力する方法
- VBAを使用して、Excelの対象セルにファイル名を入力する方法を学びたいです。
- また、選択したファイルのコピーを指定のフォルダに保存する方法も知りたいです。
- ファイル名の取得と、ファイルのコピー保存について教えてください。
- みんなの回答 (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)) の部分は、選択したファイルのパスの部分を省いています。
その他の回答 (2)
- hallo-2007
- ベストアンサー率41% (888/2115)
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) 画像ファイルのみ選択の場合 はエクセルファイルにしていますので、ご希望に合わせて編集してください。
お礼
ありがとうございます! 早速ボタンを作ってやってみました。 【1】ボタン1で拡張子含む名称を表示するにはどうすればよいでしょうか。。。 ボタン2は、はじめファイルが見つかりませんとのエラーがでたのですが、 "A1"と"B1"を差し替えたらうまくできました! また、 【2】選択するファイル形式を複数にする場合、どのように記述すればよいでしょうか。 Filter関数やfilterIndexなど調べているのですが、 分かりません。。。 申し訳ありませんが、 教えていただければ幸いです。 また、勉強中と大それたことを書いてしまいました。 まだ始めて3日目です。基本事項が分かっておらずすみませんです。
- temtecomai2
- ベストアンサー率61% (656/1071)
ファイルやフォルダーの操作全般は 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
お礼
ありがとうございます!! まさに必要としていたことでした。 もしお時間ありましたら、 【1】ファイル種別を複数選択にする場合 についても教えて頂ければ嬉しいです。 .jpg、.gif、.png、などを考えているのですが。 勉強が全く追いついておらず申し訳ありません。
お礼
ありがとうございます!! 勉強になります。如何せん<>はなんだろうというところから始めていたので、 Split関数の読み込みまで追いついていませんでした。 この2日で大分理解が進んだ気がします。 ありがとうございました!