2016-07-28 11 views
0

下記のコードを使用して、Excelシートから.txtファイルを作成しています。しかし、それはファイルの先頭に別の列を生成するように思われ、私は理由を理解できません。どんな助けもありがとう。Excelスプレッドシートからtxtファイルを作成する

A9:M287もすべて内容で満たされているため、非表示の空白列ではありません。

Sub StoretoTXT() 

Dim answer As Integer 

answer = MsgBox("Have all the required fields been filled and are correct?", vbYesNo + vbQuestion, "Data Check") 
If answer = vbYes Then 
    Dim c As Range, r As Range 
    Dim output As String 

    For Each r In Range("A9:M287").Rows 
     For Each c In r.Cells 
      output = output & vbTab & c.Value 
     Next c 
     output = output & vbNewLine 
    Next r 

    Open "C:\Test\Desktop" & Format(Now(), "YYYYMMDDHHMMSS") & "Test.txt" For Output As #1 
    Print #1, output 
    Close 

    MsgBox "File has now been created. Excel will now close" 
    ActiveWorkbook.Close False 
Else 
    'do nothing 
End If 

End Sub 
+1

あなたは 'c.value'を追加する前に、' vbTab'を入れています。これにより、 'vbTab'で常に始まる' output' *が返されます。最初のセルであるかどうかをチェックする必要があります。もしそうなら、タブに入れないでください。 – tigeravatar

+0

Tab-Delimitedファイルとして直接保存する方法があります。 –

答えて

0

それだけでタブ区切りファイルを作成するために、SaveAsメソッドを使用する方が簡単かもしれません。あなただけにして、特定の範囲、新しいワークブックの範囲で最初のコピー、およびxlTextとして保存を探しているので:

Sub SaveAsTabDelimited() 
Dim rng as Range 
Dim newWB as Workbook 
Set rng = Range("A9:M287") 
Set newWB = Workbooks.Add 
Application.DisplayAlerts = False 
With newWB 
    Do While .Worksheets.Count > 1 
     .Worksheets(.Worksheets.Count).Delete 
    Loop 
End With 

rng.Copy newWB.Worksheets(1).Range("A1") 
'## Modify path to file output in the next line: 
newWB.SaveAs Filename:="C:\Debug\tab-delimited.txt", FileFormat:= _ 
    xlText, CreateBackup:=False 
Application.DisplayAlerts = True 
newWB.Close 
End Sub 
+0

ありがとうございました実際には私はそれをそのようにすることができたことを認識していませんでした – user3820933

関連する問題