- ベストアンサー
VBAでタブ区切りテキストの保存に関する問題
- VBAを使用してタブ区切りテキストを保存する際、特定の行に不要な空白が保存される問題が発生しています。
- これにより、保存したテキストの読み込み時に不要な手作業が必要となります。
- VBAで指定した行にのみタブ区切りを保存する方法はあるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
データが、1行目2行目は1列、3行目以降に3列のみあるなら 以下のような感じで書けます。 3行目以降の行を最大10列目まで見ながらファイル出力します。 Dim row As Integer Dim col As Integer Dim mySht As Worksheet Set mySht = Sheets("sheet01") Open "D:\test.txt" For Output As #1 print #1,mySht.Cell(1,1).Text print #1,mySht.Cell(2,1).Text row = 3 Do If mySht.Cell(row,1).Text = "" Then Exit Do '1列目が空欄ならループを抜ける For col=1 To 10 '最大10列目まで見る If mySht.Cell(row,col).Text = "" Then Exit For 'col列目が空欄なら次の行へ If 1 < col Then '2列目以降ならタブを入れる print #1,vbTab; End If print #1,mySht.Cell(row,col).Text; Next col print #1,"" row = row + 1 Loop Close #1
その他の回答 (2)
- DOUGLAS_
- ベストアンサー率74% (397/534)
#2 DOUGLAS_ です。 Sheets("sheet01").Copy が抜けておりましたので、 ActiveSheet.UsedRange.Copy の前にでも入れてください。
- DOUGLAS_
- ベストアンサー率74% (397/534)
>あるプログラムで読み込ませるためには、 >この二つの行のタブ区切りをいちいち消す必要があり、 >毎回手作業でするのは面倒です。 お疲れさまです。 「D:\test.txt」に対しての書き込みの方法もさることながら、「一緒に保存されてしま」う「右側にも空白のタブ区切り」を削除する方法が、いろいろとあろうかと存じます。 お示しのコードは、シートごとテキストファイルに保存する方法ですが、下記は、 1)セル範囲をクリップボードに格納し、 2)クリップボードに格納されたデータの中から「タブ+改行」の文字列を「改行」に置換して、 3)「D:\test.txt」を開いて、ペーストして保存する。 という方法です。 「vbTab」・「vbNewLine」は「タブ」・「改行」の意味ですので「Chr(9)」・「Chr(13)」でも構いません。 Sub Macro1() Dim objCB As Object 'IDataAutoWrapper Dim objFso As Variant 'FileSystemObject Const ForWriting As Integer = 2 Dim objFile As Variant 'TextStream Set objCB = GetObject("new:" & "1C3B4210-F441-11CE-B9EA-00AA006B1A69") Set objFso = CreateObject("Scripting.FileSystemObject") Set objFile = objFso.OpenTextFile("D:\test.txt", ForWriting, True) ActiveSheet.UsedRange.Copy With objCB .GetFromClipboard Do .SetText Replace(.GetText, vbTab & vbNewLine, vbNewLine) .PutInClipboard Loop Until InStr(.GetText, vbTab & vbNewLine) = 0 objFile.Write .GetText End With objFile.Close Application.CutCopyMode = False ActiveWindow.Close SaveChanges:=False Set objFile = Nothing Set objFso = Nothing Set objCB = Nothing End Sub