FileDialogを使用してユーザーにファイル名を指定してもらい、結果からフルパスを取得する事はできたのですが、パスではなくファイル名を取得するにはどのようにすれば良いのでしょうか?
Dim lngCount As Long
' ファイル ダイアログを開きます。
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
'選択された各ファイルのパスを表示します。
For lngCount = 1 To .SelectedItems.Count
lblPath_1.Caption = .SelectedItems(lngCount)
Next lngCount
End With
No.1ベストアンサー
- 回答日時:
こんにちは。
ご質問は、単に、Office の VBAで、開くファイルの対象も書かれておりませんから、以下のように、ユーザー定義関数を用いればよいです。(Word・Excel共用です。)
例:
省略
・
For lngCount = 1 To .SelectedItems.Count
Debug.Print FullName2FName(.SelectedItems(lngCount))
Next lngCount
・
省略
Function FullName2FName(fn As String)
Dim buf As String
Dim i As Integer
i = InStrRev(fn, "\")
If i > 0 Then
buf = Mid$(fn, k + 1)
Else
buf = fn
End If
FullName2FName = buf
End Function
この回答への補足
ご回答ありがとうございます。
自作関数を作らなくてはいけないのですね、私は標準メソッドかなんかで取得できるものがあるのかと思い込んでいました。
で、教えていただいたFullName2FName関数ですが結果もフルパスで返ってきます。例えば"C:\Documents and Settings\My Documents\test_1.xls"を引数に入れた結果も"C:\Documents and Settings\My Documents\test_1.xls"でした。使用方法が悪いでしょうか?
No.3
- 回答日時:
For lngCount = 1 To .SelectedItems.Count
Debug.Print(Dir(.SelectedItems(lngCount)))
Next lngCount
とすればいかがでしょうか。
フルパスが実際に存在しないファイルの場合はだめですが、FileDialogから選択したのであれば、この方法が使えると思います。
No.2
- 回答日時:
こんにちは。
>標準メソッド
たぶん、それはプロパティですね。ファイルのオブジェクトを採らなくてはなりません。ただ、文字列から行ったほうが早いです。
それから、
>教えていただいたFullName2FName関数ですが結果もフルパスで返ってきます。
オンラインで書き換えたので、前のコードが残ってしまいました。
失礼しました。 k を i に変えてください。
buf = Mid$(fn, k + 1)
↓
buf = Mid$(fn, i + 1)
再度のご回答有難うございます。
buf = Mid$(fn, k + 1)
↓
buf = Mid$(fn, i + 1)
でうまく動きました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
FileDialog オブジェクトでファイル名のみを取得
PowerPoint(パワーポイント)
-
パワーポイント画面にそのファイル名を表示するには?
PowerPoint(パワーポイント)
-
【PowerPoint VBAの高速化】
その他(プログラミング・Web制作)
-
-
4
パワーポイント filedialogでフォルダ名
PowerPoint(パワーポイント)
-
5
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
6
ExcelVBAにて既に開かれているPowerpointをアクティブにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cの関数で自分自身のパス取得
-
エクセルvbaでdocuworksprinter...
-
バッチファイル 二つ上のディ...
-
エクセルのマクロで特定フォル...
-
【VB.NET】App.configにファイ...
-
Eclipse
-
【VBA】ExcelマクロでCSVファイ...
-
実行ファイルのパスを取得したい
-
C#でのProcess.Startと変数path
-
Excel 相対パス
-
EXCEL(VBA)で指定フォルダ内の...
-
VBA★PDFをPDFアプリで印刷し...
-
ExcelVBAの使い方 ¥の使い方...
-
C++でネットワークパスのファイ...
-
【続き】windowsペイントを開く...
-
ListViewにSETしたファイル...
-
FolderBrowserDialogについて-2
-
VBAでファイル名の取得方法
-
VBS パスに変数を入れたい
-
1行単位のデータをテキストファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
バッチファイル 二つ上のディ...
-
Excel 相対パス
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
【VB.NET】App.configにファイ...
-
SaveAsの保存先について
-
ExcelVBAの使い方 ¥の使い方...
-
エクセルのマクロで特定フォル...
-
【VBA】ExcelマクロでCSVファイ...
-
EXCEL(VBA)で指定フォルダ内の...
-
VBA一覧取得 再投稿
-
指定したフォルダ内の最新ファ...
-
ExcelのVBAで上書き保存を確...
-
VBAでパワーシェルを実行したい...
-
コマンドプロンプトのコピー関...
-
VBA★PDFをPDFアプリで印刷し...
-
アプリケーションのインストー...
-
開いているファイルを削除し、...
-
A列に記載されているフォルダ...
おすすめ情報