- 締切済み
EXCELVBAでデータをテキストファイルで出力したいと
EXCELVBAでデータをテキストファイルで出力したいと考えています。 ***************************** 作成したVBA ***************************** Sub test_Click() Dim fNAME As String fNAME = "c:\test.txt" Open fNAME For Output As #1 i = 1 Print #1, "<test=" & Cells(1, i) & "," & Cells(2, i) & "," & Cells(3, i) & "," & Cells(4, i) & "," & Cells(5, i) & ">" Close #1 '閉じる End Sub ***************************** エクセルの値 ***************************** A列 1 2 3 4 5 ***************************** 出力されたテキストファイル ***************************** <test=1,2,3,4,5> このようになっていますが、 エクセルが A列 1 2 のように、2個しかないと、 <test=1,2,,,> のようになってしまいます。 <test=1,2> ↑のようになるように、エクセルの値に応じて、 「,」が出力しないようにしたいです。 どうしたらよいのでしょうか。 よろしくおねがいします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
For文以外の方法ですと Replaceで置換でしょうね Dim ss as String ss = "<test=" & Cells(1, i) & "," & Cells(2, i) & "," & Cells(3, i) & "," & Cells(4, i) & "," & Cells(5, i) & ">" ss = Replace( ss, ",,", "" ) ss = Replace( ss, ",>", ">" ) print #1, ss といった具合です
- qualheart
- ベストアンサー率41% (1451/3486)
Sub test_Click() Dim fNAME As String fNAME = "c:\test.txt" Open fNAME For Output As #1 Dim tStr As String tStr = "<test=" & Cells(1, 1) i = 1 n = 2 Do While Cells(n, i) <> "" tStr = tStr & "," & Cells(n, i) n = n + 1 Loop tStr = tStr & ">" Print #1, tStr Close #1 '閉じる End Sub で、どうですか?
お礼
回答ありがとうございます。 やってみましたが、無限ループになってしまいました。 修正してみます。 他の方に別の回答をいただいたので、 とりあえず解決いたしました。 ありがとうございました。
- hisajiro
- ベストアンサー率37% (124/329)
そのソースではその結果になってしまいます。 for文を使ってみたらどうでしょうか? VBAでは入力されている最後のセル番号を取得できます。 for文で入力行数分回し、 ループ回数が0回でなければ","を出力し、 Cells(ループ回数, i)を出力していきます。 そうすれば余分なカンマが出ませんし、いくつ入力されていても対応できるようになります。
お礼
回答ありがとうございます。 FOR文を作成したことがありません。 恐縮ですが、 どのような感じのコードになるか教えていただくことは可能でしょうか。 よろしくおねがいます。
お礼
回答ありがとうございます。 やってみたらうまくできました。 ありがとうございました。