2017-04-27 26 views
0

このコードを見つけて試しました。それは正常に動作しますが、保存されたテキストファイルでは、最初の列には(すべての行に対して)空白があります。私はこのコードを修正することができません。助けてください。Excelシートをタブ区切りのテキストファイルとして保存するVBAコード

Sub ExportRange() 
Dim ExpRng As Range 
Open ThisWorkbook.Path & "\AllDXL.txt" For Output As #1 
Set ExpRng = Worksheets("Sheet1").Range("A1").CurrentRegion 
FirstCol = ExpRng.Columns(1).Column 
LastCol = FirstCol + ExpRng.Columns.Count - 1 
FirstRow = ExpRng.Rows(1).Row 
LastRow = FirstRow + ExpRng.Rows.Count - 1 
For r = FirstRow To LastRow 
Data = "" 
For c = FirstCol To LastCol 
    ' data = ExpRng.Cells(r, c).Value 
    Data = Data & vbTab & ExpRng.Cells(r, c).Value 
Next c 
Print #1, Data 
Next r 
Close #1 
End Sub 

答えて

1

最初のセルも含めて、各セルに接頭辞はvbTabです。次のように変更します。

Data = Data & vbTab & ExpRng.Cells(r, c).Value 

また
If c = FirstCol Then 
    Data = Data & ExpRng.Cells(r, c).Value 
Else 
    Data = Data & vbTab & ExpRng.Cells(r, c).Value 
End If 

に、常に各ライン上のいくつかのデータが存在する場合は、あなただけでPrint段階で、各ラインからの最初のvbTabを取り除くことができます:

0123に

Print #1, Data 

を変更

Print #1, Mid(Data, 2, Len(Data)-1) 
+0

おかげCLR、**印刷#1、ミッド(データ、2、レン(データを)-1)作品**の最初の文字を省略させ最初の列データ。 ** Print#1、Mid(Data、1、Len(Data)-1)**に変更しました。ありがとう – Siraj

+0

あなたは私の答えの* *を使用していないですか?あなたはどちらか一方しか必要としません。最初の( 'IF ELSE THEN'構造体を使用する)場合、' Print'変更は必要ありません。両方を使用するが 'Print'部分を' Print#1、Mid(Data、1、Len(Data)-1) 'に変更すると、各行の最後の文字が失われます。 – CLR

+0

偉大な、ありがとうCLR – Siraj

1

また、これは...

Sub ExportRange() 
Dim ExpRng As Range 
Dim myTab As String 
Open ThisWorkbook.Path & "\AllDXL.txt" For Output As #1 
    Set ExpRng = Worksheets("Sheet1").Range("A1").CurrentRegion 
    FirstCol = ExpRng.Columns(1).Column 
    LastCol = FirstCol + ExpRng.Columns.Count - 1 
    FirstRow = ExpRng.Rows(1).Row 
    LastRow = FirstRow + ExpRng.Rows.Count - 1 
    For r = FirstRow To LastRow 
     Data = "" 
     For c = FirstCol To LastCol 
      If c = 1 Then myTab = "" Else myTab = vbTab 
     ' data = ExpRng.Cells(r, c).Value 
      Data = Data & myTab & ExpRng.Cells(r, c).Value 
     Next c 
     Print #1, Data 
    Next r 
Close #1 
End Sub 
+0

素敵なMiguelH、それはシームレスに動作します。ありがとう – Siraj

関連する問題