Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
テキストファイル出力について
投稿日時: 22/09/17 08:10:44
投稿者: mk2021

お世話になっています。
エクセルのA列からD列のデータを以下のようにメモ帳に出力しているのですが
これにはスペースがあったり、1行の空白行が生じてしまいます。
以下のように、
{"あああ", "いいい", "ううう", " 1 "},
 
{"あああ2", "いいい2", "ううう2", " 2 "},
 
これを以下のようにスペースなしで、空白行もなしで書き出したいのですがどうしたらよいのでしょうか。
{"あああ","いいい","ううう","1"},
{"あああ2","いいい2","ううう2","2"},
VBAは以下の通りです。
よろしくお願いいたします。
------------------------------------------------------------------------------------
Sub test()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
Dim datFile As String
datFile = ActiveWorkbook.Path & "\mytext.txt"
Open datFile For Output As #1
Dim i As Long
i = 1
Do While ws.Cells(i, 1).Value <> ""
    Print #1, "{""" & ws.Cells(i, 1).Value&; """, """; ws.Cells(i, 2).Value; """, """; ws.Cells(i, 3).Value&; """, """; ws.Cells(i, 4).Value; """},"
    i = i + 1
Loop
Close #1
End Sub
-----------------------------------------------------------------------------------

回答
投稿日時: 22/09/17 09:16:18
投稿者: simple

(1)""", """のようにカンマの後にスペースが入っているので、これを取ります。
   """,""" とします。
(2)数値には前後にスペースが入るようですから、Cstr関数で文字列に変換するとよいと
   思います。
以上の2点を考慮すると、スペースがなくなると思います。

投稿日時: 22/09/17 16:06:18
投稿者: mk2021

simple様
(1)の方は無事解決しました。ありがとうございました。
Cstr関数の使い方がわかりませんでした。どのように使うのか教えていただけませんか。
よろしくお願いいたします。
 

simple さんの引用:
(1)""", """のようにカンマの後にスペースが入っているので、これを取ります。
   """,""" とします。
(2)数値には前後にスペースが入るようですから、Cstr関数で文字列に変換するとよいと
   思います。
以上の2点を考慮すると、スペースがなくなると思います。

回答
投稿日時: 22/09/17 17:08:49
投稿者: simple

最後の項目が数値だとすると、

Print #1, "{""" & ws.Cells(i, 1).Value; ""","""; ws.Cells(i, 2).Value; ""","""; ws.Cells(i, 3).Value; ""","""; CStr(ws.Cells(i, 4).Value); """},"
のようにします。
もし数値かどうか不明なら、全項目にCStrをつけます。
文字列にCStrを施しても支障ありません。

投稿日時: 22/09/17 18:09:59
投稿者: mk2021

simple様
ありがとうございます。
無事解決しました。