OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

(Excel)VBA ファイルパスからファイル名を求める

  • 困ってます
  • 質問No.143989
  • 閲覧数460
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 75% (34/45)

Excel97のVBAで
 f-name = Application.GetOpenFilename()
とするとf-nameにはオープンしたファイルのパスを含めたファイル名が代入されます。
これをそのまま
 Workbooks(f-name).close
とすると、パス部分が余分なのかエラーになります。
そこで、このf-nameからファイル名(ブック名)だけ切り出す方法があれば教えてください。
もしくはこのオープンからクローズまでの流れとして良いやり方があれば教えてください。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

Excel97の場合は、最後の『\』を探しにいく必要があると思います。下記は処理例です。
キャンセルした時のf-nameは別途処理してください。

Public Function myFileName(flName As String)
  Dim L As Integer
  For L = Len(flName) To 1 Step -1
    If Mid(flName, L, 1) = "\" Then
      myFileName = Right(flName, Len(flName) - L)
      Exit For
    End If
  Next
End Function
お礼コメント
smatsuz

お礼率 75% (34/45)

回答ありがとうございます。
ばっちり動きました。
元々UNIX屋なので(マクロの様に用意されていて)もっと簡単にできるかと思っていました。
投稿日時 - 2001-10-02 09:36:55
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 51% (1179/2272)

こんにちは。maruru01です。 以下の関数を作成しました。 参考になりますか。 では。 ' フルパスからファイル名を取り出す Public Function MakeFileName(fileName As String) As String   Dim z0 As Long   z0 = InStrRev(fileName, "\") ...続きを読む
こんにちは。maruru01です。
以下の関数を作成しました。
参考になりますか。
では。

' フルパスからファイル名を取り出す
Public Function MakeFileName(fileName As String) As String

  Dim z0 As Long

  z0 = InStrRev(fileName, "\")
  If z0 <> 0 Then
    MakeFileName = Mid(fileName, z0 + 1)
  Else
    MakeFileName = fileName
  End If

End Function
お礼コメント
smatsuz

お礼率 75% (34/45)

回答ありがとうございます。
残念ながらInStrRev()がundefineになってしまします。
私の環境がおかしいか、Excel97にはないのかもしれませんね。
投稿日時 - 2001-10-02 09:34:07

  • 回答No.3
レベル8

ベストアンサー率 35% (14/40)

EXCEL2000でですが、GetOpenFilenameの後に、 Dim ファイル名 As String ファイル名 = Dir(CurDir() & "\*.*") とすると、選んだファイル名のみ、ファイル名に格納されました。 EXCEL97で出来るか判りませんが、試してみてはいかがでしょうか? ...続きを読む
EXCEL2000でですが、GetOpenFilenameの後に、
Dim ファイル名 As String
ファイル名 = Dir(CurDir() & "\*.*")
とすると、選んだファイル名のみ、ファイル名に格納されました。

EXCEL97で出来るか判りませんが、試してみてはいかがでしょうか?
お礼コメント
smatsuz

お礼率 75% (34/45)

回答ありがとうございます。
残念ながらExcel97ではうまく行きませんでした。
でもなんとなくDir()とCurDir()の組み合わせでGetOpenFilename()の選択ファイルが認識できるとは思えないんですが......
投稿日時 - 2001-10-02 09:39:31
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ