アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ばっちり動きました。
元々UNIX屋なので(マクロの様に用意されていて)もっと簡単にできるかと思っていました。

お礼日時:2001/10/02 09:36

EXCEL2000でですが、GetOpenFilenameの後に、


Dim ファイル名 As String
ファイル名 = Dir(CurDir() & "\*.*")
とすると、選んだファイル名のみ、ファイル名に格納されました。

EXCEL97で出来るか判りませんが、試してみてはいかがでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
残念ながらExcel97ではうまく行きませんでした。
でもなんとなくDir()とCurDir()の組み合わせでGetOpenFilename()の選択ファイルが認識できるとは思えないんですが......

お礼日時:2001/10/02 09:39

こんにちは。

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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
残念ながらInStrRev()がundefineになってしまします。
私の環境がおかしいか、Excel97にはないのかもしれませんね。

お礼日時:2001/10/02 09:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!