3

Magentoのeコマースストアからのデータを操作し、データを再フォーマットし、(うまくいけば!)CSVファイルを吐き出し、eBayTurbolisterにインポートしてeBayに大量にアップロードできるアクセスデータベースがあります。

Turbolisterが必要とする形式にデータを正しくレイアウトするクエリを作成するところまで来ました。

私の問題はさまざまです(Accessの大きなフィールドコンテンツの処理に関連しているように見えるものも含まれます)が、私の問題の核心は、クエリ結果を適切にフォーマットされたCSVとしてエクスポートする単純なスクリプトを作成するのに苦労していることです(テキスト値内で必要な場合、つまり値自体に保持する必要のある引用符が含まれている場合は、二重引用符を2倍にすることを含みます。

DoCmd.TransferTextソリューションは、フィールドサイズに関連するエラー(「フィールドが小さすぎて、追加しようとしたデータの量を受け入れることができない」)をスローするため、適切ではありません。

誰かが提案できるVBAでうまく機能するCSVエクスポートルーチンを持っていますか?

乾杯

4

1 に答える 1

2

これは私が時々使用した古い関数であり、デリメータを指定できます。また、出力するデータをチェックし、日付や数値などに評価できない場合は、二重引用符を使用します。

Public Function ExportTextDelimited(strQueryName As String, strDelimiter As String)

Dim rs          As Recordset
Dim strHead     As String
Dim strData     As String
Dim inti        As Integer
Dim intFile     As Integer
Dim fso         As New FileSystemObject

On Error GoTo Handle_Err

    fso.CreateTextFile ("C:\Untitled.csv")

    Set rs = Currentdb.OpenRecordset(strQueryName)

    rs.MoveFirst

    intFile = FreeFile
    strHead = ""

    'Add the Headers
    For inti = 0 To rs.Fields.Count - 1
        If strHead = "" Then
            strHead = rs.Fields(inti).Name
        Else
            strHead = strHead & strDelimiter & rs.Fields(inti).Name
        End If
    Next

    Open "C:\Untitled.csv" For Output As #intFile

    Print #intFile, strHead

    strHead = ""

    'Add the Data
    While Not rs.EOF

        For inti = 0 To rs.Fields.Count - 1
            If strData = "" Then
                strData = IIf(IsNumeric(rs.Fields(inti).value), rs.Fields(inti).value, IIf(IsDate(rs.Fields(inti).value), rs.Fields(inti).value, """" & rs.Fields(inti).value & """"))
            Else
                strData = strData & strDelimiter & IIf(IsNumeric(rs.Fields(inti).value), rs.Fields(inti).value, IIf(IsDate(rs.Fields(inti).value), rs.Fields(inti).value, """" & rs.Fields(inti).value & """"))
            End If
        Next

        Print #intFile, strData

        strData = ""

        rs.MoveNext
    Wend

        Close #intFile

rs.Close
Set rs = Nothing

'Open the file for viewing
Application.FollowHyperlink "C:\Untitled.csv"   

Exit Function

Handle_Err:
MsgBox Err & " - " & Err.Description

End Function

私の特定のケースにのみ関連するいくつかのビットを取り出したので、それはいくつかの微調整を必要とするかもしれませんが、これは出発点かもしれません。

于 2012-11-09T14:51:45.443 に答える