Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8598 / 76732 ←次へ | 前へ→

【73704】Re:2つ目以降のcsvのタイトル行を削除しつつ結合するには
発言  kanabun  - 13/2/5(火) 20:06 -

引用なし
パスワード
   ▼にしもり さん:こんにちは〜

まず、後半の質問から。

>保存の際ダイアログが現れるロジックになっておりますが、
> 自動でtest.csvという名でCドライブMy Documentに保存するにはどうしたらいいでしょうか。

これについては、My Documentsフォルダを取得する一般的なやりかたがあります。
下のコードの
'----------------------------------------------------------------- 
'----------------------------------------------------------------- 
のなかを参照してください。

Sub JoinCSV3()
 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
'----------------------------------------------------------------- 
   outFilename = CreateObject("WScript.Shell"). _
          SpecialFolders("MyDocuments") & "\test.csv"
'-----------------------------------------------------------------   
   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


----
さて、前半の

> 仰るとおりの問題が起きましたので、恐れ入りますが
> 下記を使わせていただいております。

の件ですが、その「問題」というのが
GetOpenFilename メソッドの(XL2002, 2003 での)不具合のことでしたら、
いかんせん、ぼくのサンプルコードでも何ら不具合は修正されてません。
1.csv, 2.csv, 3.csv, 4.csv というファイルがあって、
それを 1 〜 4 の順番で読み結合したいのなら、XL2002, 2003 では 今の
ままで うまくいきません。

また、こうすればよい、という簡単明快な方法も知らないです。
ずっとむかし、UserForm を利用してユーザーに順番を並び替えさせるプロ
シージャを作ったことはありますが... めんどくさいです。

同じようにめんどうですが、
たとえば、Excelが2002か2003だったら、
GetOpenFilenameで選択した複数CSVファイルを いちどワークシートに書き
出して、ユーザーに 並び替えさせて結合順を指定なおす → プログラムを
2つに分ける
ような方法も考えられます。

いずれにしても 「問題が起きました」とおっしゃるのは、そのファイル選択
順が反映されないということですか?
408 hits

【73569】2つ目以降のcsvのタイトル行を削除しつつ結合するには にしもり 13/1/23(水) 2:33 質問
【73571】Re:2つ目以降のcsvのタイトル行を削除しつ... kanabun 13/1/23(水) 9:26 発言
【73572】Re:2つ目以降のcsvのタイトル行を削除しつ... UO3 13/1/23(水) 9:41 発言
【73574】Re:2つ目以降のcsvのタイトル行を削除しつ... にしもり 13/1/23(水) 11:46 お礼
【73575】Re:2つ目以降のcsvのタイトル行を削除しつ... kanabun 13/1/23(水) 13:03 発言
【73702】Re:2つ目以降のcsvのタイトル行を削除しつ... にしもり 13/2/5(火) 19:03 質問
【73704】Re:2つ目以降のcsvのタイトル行を削除しつ... kanabun 13/2/5(火) 20:06 発言
【73714】Re:2つ目以降のcsvのタイトル行を削除しつ... にしもり 13/2/6(水) 11:35 質問
【73722】Re:2つ目以降のcsvのタイトル行を削除しつ... kanabun 13/2/6(水) 18:22 発言
【73728】Re:2つ目以降のcsvのタイトル行を削除しつ... kanabun 13/2/6(水) 22:58 発言
【73738】Re:2つ目以降のcsvのタイトル行を削除しつ... にしもり 13/2/7(木) 14:09 お礼

8598 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free