2016-12-06 9 views
0

私はCSVでデータ範囲をエクスポートするには、この機能を使用して:VBAでCSV形式でエクスポートするには?

Sub Fct_Export_CSV() 
    Dim Value As String 
    Dim size As Integer 

    Value = ThisWorkbook.Path & "\Export_" & Sheets(1).range("B20").Value & ".csv" 
    chemincsv = Value 

    Worksheets("Database").Select 
    Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$ 
    Sep = ";" 
    size = Worksheets("Database").range("B" & Rows.Count).End(xlUp).Row 
    Set Plage = ActiveSheet.range("A1:G" & size) 

    Open chemincsv For Output As #1 
    For Each oL In Plage.Rows 
    Tmp = "" 
    For Each oC In oL.Cells 
     Tmp = Tmp & CStr(oC.Text) & Sep 
    Next 
    Print #1, Tmp 
    Next 
    Close 

    MsgBox "OK! Export to " & Value 
End Sub 

エクスポートが動作しますが、私はあまりにも1を持っています「;」各行の終わりに。

例は、CSVエクスポート:;木;グループ;姓;姓;のsAMAccountName;ルール

フォルダを、
FOLDER; TREE; DL-FOLDER-R; John; TOTO; JTOT; R;

ここでは、このVBAスクリプトを変更して、 ";"を付けずにCSVを生成します。最後に ?
私の目標:

フォルダ;ツリー;グループ;姓;姓;のsAMAccountName;ルール
FOLDER; TREE; DL-FOLDER-R;ジョン; TOTO; JTOT; R

+0

あなたのコードのためのいくつかのヒントを指定:それはまだ淡色表示されていない場合は薄暗いchemincsvを(世界的に)。ワークシートを '.Select'しないで、単に' ActiveSheet'の代わりに 'Worksheet(" Database ")を使います。あなたのすべての範囲を 'Range'として' Dim'します。変数に 'range'という名前を付けないでください(あなたのコードで大文字ではないので、どこかで行ったと思われます) – arcadeprecinct

答えて

3

これを達成するには複数の方法があります。 たとえば、 Tmp = Tmp & CStr(oC.Text) & Sepにif条件を入れて、繰り返しが最後のものであればsepを追加しないでください。

もう1つの方法は、左の関数を使用することです。あなたのコードをあまり変更することなく、これは良いアプローチだと思います。動作するはずです、最後のprint文の前にコードの1行を追加しました

Sub Fct_Export_CSV() 
    Dim Value As String 
    Dim size As Integer 

    Value = ThisWorkbook.Path & "\Export_" & Sheets(1).range("B20").Value & ".csv" 
    chemincsv = Value 

    Worksheets("Database").Select 
    Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$ 
    Sep = ";" 
    size = Worksheets("Database").range("B" & Rows.Count).End(xlUp).Row 
    Set Plage = ActiveSheet.range("A1:G" & size) 

    Open chemincsv For Output As #1 
    For Each oL In Plage.Rows 
    Tmp = "" 
    For Each oC In oL.Cells 
     Tmp = Tmp & CStr(oC.Text) & Sep 
    Next 


'take one less than length of the string number of characters from left, that would eliminate the trailing semicolon 
    Tmp = left(Tmp, Len(Tmp)-1) 

    Print #1, Tmp 
    Next 
    Close 



    MsgBox "OK! Export to " & Value 
End Sub 

:ここ は、サンプルコード(havntが試した)です。レーム知っている。

+0

こんにちは、それがあなたのために働いた場合、答えを受け入れてください:) –

0

あなたはセミコロンをローカルセパレータとして設定されているマシン上で動作する場合は、CSVファイルとしてシートを保存することができますし、Local:=True

Worksheets("Database").SaveAs Filename:=Value, FileFormat:=xlCSV, Local:=True 
関連する問題