| 
    
     |  | ▼にしもり さん: 
 解決されたようで何よりですが、
 BookとしてOpenする方法でない方法を紹介しておきます。
 参考にしてください。
 
 Sub JoinCSV()
 Dim Files, outFilename As String
 Dim myPath As String
 Dim i As Long
 Dim io As Integer, oo As Integer
 Dim buf() As Byte
 Dim ss As String
 
 Files = Application.GetOpenFilename _
 (FileFilter:="CSV, *.csv", MultiSelect:=True)
 If IsArray(Files) Then
 i = InStrRev(Files(1), "\")
 myPath = Left$(Files(1), i - 1)
 outFilename = Application.GetSaveAsFilename( _
 myPath & "\JoinCSV.csv", "CSV,*.csv")
 If outFilename = "False" Then Exit Sub
 oo = FreeFile()
 Open outFilename For Output As oo '初期化
 Close oo
 Open outFilename For Binary As oo
 
 io = FreeFile()
 For i = 1 To UBound(Files)
 Open Files(i) For Binary As io
 ReDim buf(1 To LOF(io))
 Get io, , buf
 Close io
 If i = 1 Then  'そのままバイトデータをPut
 Put oo, 1, buf
 Else      '1行目を削除してPut
 ss = StrConv(buf, vbUnicode)
 ss = Split(ss, vbCrLf, 2)(1)
 Put oo, , ss
 End If
 Next
 Close oo
 End If
 End Sub
 
 ◆検証していて気がついたのですが、
 
 > Files = Application.GetOpenFilename _
 >    (FileFilter:="CSV, *.csv", MultiSelect:=True)
 
 GetOpenFilename は複数ファイルを選択でき便利なのですが、
 ユーザーの選択順を変えるのが難点ですね。
 たとえば、$1.csv, $2.csv, $3.csv のファイルをこの順番にダイアログで
 選択しても、Files() 内は $3.csv, $1.csv, $2.csv に変更されてしまいます。
 順番を指定して結合したいばあいには、GetOpenFilename は使えないですね
 
 
 |  |