gpt4 book ai didi

vba - 将 Access 查询结果导出到 csv

转载 作者:行者123 更新时间:2023-12-01 12:58:35 27 4
gpt4 key购买 nike

我有一个 Access 数据库,它可以处理来自 Magento 电子商务商店的数据,重新格式化数据并(希望如此!)吐出一个 CSV 文件,然后可以将其导入 ebay Turbolister 以批量上传到 eBay。

我已经创建了一个查询,该查询将数据正确地布置为 Turbolister 所需的格式。

我的问题多种多样(包括一些似乎与 Access 处理大字段内容有关的问题),但是我的问题的症结在于我正在努力工作一个简单的脚本,该脚本将查询结果正确地导出为格式化的 CSV(包括在文本值内需要双引号时加倍,即如果值本身包含需要保留的引号)。

DoCmd.TransferText 解决方案会抛出与字段大小相关的错误(“字段太小,无法接受您尝试添加的数据量”),所以这样不好。

有没有人在 VBA 中有一个很好的工作 CSV 导出例程,他们可以推荐?

干杯

最佳答案

这是我有时使用的一个旧函数,它允许您指定分隔符,它还会检查它正在输出的数据,如果它不能被评估为日期或数字等,那么它会使用 double引用:

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

它可能需要一些调整,因为我已经删除了一些只与我的特定情况相关的部分,但这可能是一个起点。

关于vba - 将 Access 查询结果导出到 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13309994/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com