お久しぶりです。ということで、Application.PathSeparatorをヘルプで調べました。
Application.PathSeparator
を使うと、Win/Mac共通コードを書くとき、
便利ですよ。
パス セパレータ (Windows では "\"、Macintosh では ":") を返します。
ファイル構成 |
フォルダやファイルの説明 |
---|---|
とあるフォルダ ├Book1.xls └dir1 └aaa.ini |
マクロが入ったエクセルブック 開きたいファイル |
Module1(標準モジュール)ー
Application.PathSeparatorプロパティを使う
方法
|
---|
Option Explicit Private Const m_dir1Name As String = "dir1" Private Const m_ini1Name As String = "aaa.ini" 'aaa.iniの絶対パスを返す Private Function iniFilePath() As String Dim sp As String 'フォルダの区切り文字 sp = Application.PathSeparator iniFilePath = ThisWorkbook.Path & sp & "dir1" & sp & "aaa.ini" End Function 'ファイルを開くだけのサンプル Sub openFile() '宣言 Dim lngFileNo As Long 'ファイル番号(1から511の数 字) Dim strFileFullName As String 'ファイルのフルパス 'いろいろ初期化 lngFileNo = 0 'ファイルを開く On Error GoTo ErrorHandler strFileFullName = iniFilePath lngFileNo = FreeFile Open strFileFullName For Input As #lngFileNo GoSub CloseFile Debug.Print strFileFullName & "を開く事に成功しました" Exit Sub 'すべてのファイルを閉じる(GoSub文で呼び出して下さい) CloseFile: Close lngFileNo = 0 Return 'エラー処理 ErrorHandler: GoSub CloseFile Debug.Print strFileFullName & "を開く事が出来ませんでした。" & vbNewLine _ & "エラー番号:" & Err.Number & vbNewLine _ & "エラー詳細:" & Err.Description End Sub |
Module2(標準モジュール)ー 条件付きコンパイルを使う方法 |
---|
Option Explicit #If Mac Then Private Const m_strIniFile As String = ":dir1:aaa.ini" #Else Private Const m_strIniFile As String = "\dir1\aaa.ini" #End If 'ファイルを開くだけのサンプル Sub openFile() '宣言 Dim lngFileNo As Long 'ファイル番号(1から511の数 字) Dim strFileFullName As String 'ファイルのフルパス 'いろいろ初期化 lngFileNo = 0 'ファイルを開く On Error GoTo ErrorHandler strFileFullName = ThisWorkbook.Path & m_strIniFile lngFileNo = FreeFile Open strFileFullName For Input As #lngFileNo GoSub CloseFile Debug.Print strFileFullName & "を開く事に成功しました" Exit Sub 'すべてのファイルを閉じる(GoSub文で呼び出して下さい) CloseFile: Close lngFileNo = 0 Return 'エラー処理 ErrorHandler: GoSub CloseFile Debug.Print strFileFullName & "を開く事が出来ませんでした。" & vbNewLine _ & "エラー番号:" & Err.Number & vbNewLine _ & "エラー詳細:" & Err.Description End Sub |