1

Excel ワークブックの内容をタブ区切りファイルとして保存する次のコードがあります。

Sub maketxtfile(className As String, rosterFileHandle As String)
Dim i As Long, gradebookContent As String
With Worksheets(className).UsedRange
    For i = 1 To .Rows.Count
        gradebookContent = gradebookContent & vbCrLf & Join$(Application.Transpose(Application.Transpose(.Rows(i).Value)), vbTab)
    Next
    End With

 Open Replace(ThisWorkbook.FullName, "Fall_2013_2014.xlsm", rosterFileHandle) For Output As #1
     Print #1, Mid$(gradebookContent, Len(vbCrLf) + 1)
Close #1

End Sub

問題は、タブ区切りファイルをファイルと同じディレクトリに配置したくないことxlsmです。ファイルをサブディレクトリに配置したいと思います。絶対パス名を使用して投稿されたソリューションを見てきました。それは私にとって選択肢ではありません。パス名が事前にどうなるかは必ずしもわかりません。

私は次のようなことができると思いました:

 Open Replace(ThisWorkbook.FullName, "Fall_2013_2014.xlsm", "rosters/" & rosterFileHandle) For Output As #1
     Print #1, Mid$(gradebookContent, Len(vbCrLf) + 1)
Close #1

しかし、これは私にエラーをもたらしました。私はMacで作業していますが、使用してみまし"rosters\"たが、これは機能していましたが、ファイルはサブディレクトリではなく、\\パス名に含まれるファイルに配置されました。

相対パス名 を使用してこれを行う方法を示すソリューションをいただければ幸いです。

ちなみに、最初に現在のディレクトリにタブ区切りファイルを作成してから、サブディレクトリに移動してもかまいません。

4

3 に答える 3

1

多くの検索の後、私は機能するものを見つけました。

私は書くことができます:

Open Replace(ThisWorkbook.FullName, "Fall_2013_2014.xlsm", ".:rosters:" & rosterFileHandle) For Output As #1
     Print #1, Mid$(gradebookContent, Len(vbCrLf) + 1)
Close #1

ディレクトリ パスを示すために ":" を使用する構文は少し奇妙に思えますが、機能します。問題は、これが移植可能で、私の他のマシンで正しく動作するかどうかです。

于 2013-08-25T17:00:30.920 に答える
1

Mac はパス区切りとして : を使用します。DOS/Windows に慣れていると奇妙に見えるだけです。または、失読症の *nix ユーザーの場合は ;-)。

「私の他のマシン」がWindowsボックスを意味する場合、いいえ、コロンはファイル名のドライブ文字を区切ることに制限されているため、移植できません。最善の策は、次のようなことです。

Function PathSep() As String
#If Mac Then
    PathSep = ":"
#Else
    PathSep = "\"
#End If
End Function

次に、次のことができます。

Open Replace(ThisWorkbook.FullName, "Fall_2013_2014.xlsm", "." & PathSep & "rosters" & PathSep & rosterFileHandle) For Output As #1
于 2013-08-26T14:39:54.803 に答える