Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2007)
選択したファイル名とActiveWorkbook.Nameでは中身が異なる
投稿日時: 17/08/04 12:03:21
投稿者: kazuei

選択したファイル名とActiveWorkbook.Nameで取得したファイル名が異なる現象に遭遇しました。
初めての経験なのでここで質問します。よろしくお願いいたします。Excel 2013でも同じです。
 
この現象は、ファイル名"TestData[テスト用].xls"で発生します。
 
Sub File選択()
Dim FileName As String
    ChDrive Left(ActiveWorkbook.Path, 1)
    ChDir (ActiveWorkbook.Path)
    FileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")
    If FileName <> "False" Then
        Workbooks.Open FileName
    Else
        MsgBox "キャンセルされました"
        End
    End If
 
Debug.Print FileName
    FileName = ActiveWorkbook.Name
Debug.Print FileName
    Workbooks(FileName).Close
End Sub
 
結果:
最初のDebug.Print  E:\Test\TestData[テスト用].xls
2番目のDebug.Print TestData(テスト用).xls
 
選択直後のファイル名の半角"[]"が、ActiveWorkbook.Nameでは半角"()"に変わっています。
原因がわかりません。
よろしくお願いします。
 

回答
投稿日時: 17/08/04 14:33:25
投稿者: だるま
投稿者のウェブサイトに移動

こんにちは
 
動作、確認しました。
 
エクセルではファイル名の [ ] は特別な意味を持つ為、新規に名前を付けて保存する
時には使用できません。
 
ところが、Windowsではファイル名に使用できるので、エクスプローラなどで
ファイル名に [ ] を含めるように変更できてしまいます。
 
エクセルでは基本的には使用できないのですが、既にそういう名前の付いている
エクセルファイルを開くことは出来る仕様になっているようです。
 
そのため、開いたブック名に [ ] が含まれている時は内部的に自動で ( ) に
変換している【ようです】。^d^
 
一応Excelがそのように対応してくれているみたいですが、[ ] 付のファイル名は
使用しない方が無難ではないかと思います。

投稿日時: 17/08/04 14:44:03
投稿者: kazuei

 Windowsでファイル名に [ ] が使用できることは確認したのですが、エクセルで [ ] を使用できないことは知りませんでした。また、勝手に ( ) に変更することも知りませんでした。
知識が増えました。ありがとうございました。