2017-02-10 10 views
0

行1-26の情報を持つ複数の列(A〜G)を持つExcelスプレッドシートがあります。私はVBAスクリプトを使用して列AとDだけをCSVファイルに変換して列AとBに変換しようとしています。列AとDを変換でき、Aが正しい位置にあります(列A、行1-26 )、列Dは列Dおよび行27〜52で終わる。Excel to CSV VBAのみを使用して特定の列を印刷

エクセルの列DをCSVの列Bに移動するには何が欠けていますか?どんな助けでも大歓迎です!下記の私の現在のコードを参照してください:

Dim file As Integer 
Dim filepath As Variant 
Dim filename As Variant 
Dim Row As Integer 
Dim Col As Integer 
Dim Data1 As String 
Dim Data2 As String 
Dim Line As String 
Dim LineValues() As Variant 
Dim OutputFileNum As Integer 
Dim PathName As String 
Dim SheetValues() As Variant 

file = FreeFile 
filepath = "C:\Users\berniea\" 
filename = filepath & "Options" & ".csv" 
Open filename For Output As #file 

SheetValues = Sheets("Features").Range("A1:H26").Value 
Redim LineValues(1 To 8) 

For Row = 2 To 26 
    For Col = 1 To 1 
     LineValues(Col) = SheetValues(Row, Col) 
    Next 
    Data1 = Join(LineValues, ",") 
    Print #file, Data1 
Next 

SheetValues = Sheets("Features").Range("A1:H26").Value 
Redim LineValues(1 To 8) 

For Row = 2 To 26 
    For Col = 4 To 4 
     LineValues(Col) = SheetValues(Row, Col) 
    Next 
    Data2 = Join(LineValues, ",") 
    Print #file, Data2 
Next 

Close #file 

End Sub 

答えて

0

私はそれがより簡単であると思う:

Dim text As String 
file = FreeFile 
filepath = "C:\Users\berniea\" 
filename = filepath & "Options" & ".csv" 
Open filename For Output As #file 
For Row = 2 To 26 
text = text + Cells(Row, 1) & "," & Cells(Row, 4) & vbNewLine 
Next Row 
Print #file, text 
Close #file 
+0

完璧に動作することを!本当にありがとう! :D – Angela

+0

いつでも元気です;) –

1

私は可能な限りコードを簡略化しました。

Sub ColsAD() 
    Dim file As Integer: file = FreeFile 
    Open "C:\Users\berniea\Options.csv" For Output As #file 

    Dim row As Long, line As String 
    For row = 2 To 26 
     With Sheets("Features") 
      line = .Cells(row, 1) & "," & .Cells(row, 4) 
     End With 
     Print #file, line 
    Next 
    Close #file 
End Sub 
関連する問題