如何使用VBA将Excel工作表中的单元格值(非范围)插入现有csv文件

如何使用VBA将Excel工作表中的单元格值(非范围)插入现有csv文件,excel,vba,csv,Excel,Vba,Csv,我已经成功地编写了使用循环将工作表中的单元格值插入SQL表的代码。 原始工作表中有未使用的列、行和不正确的标题,这些都是由VBA代码管理的 现在数据库正在关闭,我们希望使用csv文件将数据上载到另一个数据库。 什么代码用于打开csv文件并逐个单元格插入数据 遍历所有活动工作表 对于每个工作表,遍历所有使用的行 对于每一行,遍历所有列 通过将每个单元格值包装为双精度来构建行字符串 引号和用逗号分隔 将行字符串写入csv文件 您是否介意这一点很有帮助:我很感谢您的回答,但我需要更多的理解。我已经使用

我已经成功地编写了使用循环将工作表中的单元格值插入SQL表的代码。 原始工作表中有未使用的列、行和不正确的标题,这些都是由VBA代码管理的 现在数据库正在关闭,我们希望使用csv文件将数据上载到另一个数据库。 什么代码用于打开csv文件并逐个单元格插入数据

  • 遍历所有活动工作表
  • 对于每个工作表,遍历所有使用的行
  • 对于每一行,遍历所有列
  • 通过将每个单元格值包装为双精度来构建行字符串 引号和用逗号分隔
  • 将行字符串写入csv文件

  • 您是否介意这一点很有帮助:我很感谢您的回答,但我需要更多的理解。我已经使用循环定义了我的值,只需要了解如何发布到csv文件。我当前用于将值发布到数据库表中的命令是:conn.Execute“insert into[dbo]。[SAF_Forecast_Weekly]([Date effect]、[Region]、[Month]、[Date]、[day]、[Leachpad Location])”&vbCrLf和&“values(“&fDeff&”“fRegion&”“fmon&”“fDate&”“fDate&”“fday&”“flechpad&”)”我在找类似的东西。
    Const sFilePath = "C:\test\myfile.csv"
    Const strDelim = ","
    Sub CreateCSV_Output()
        Dim ws As Worksheet
        Dim rng1 As Range
        Dim X
        Dim lRow As Long
        Dim lCol As Long
        Dim strTmp As String
        Dim lFnum As Long
    
        lFnum = FreeFile
        Open sFilePath For Output As lFnum
    
        For Each ws In ActiveWorkbook.Worksheets
            'test that sheet has been used
            Set rng1 = ws.UsedRange
            If Not rng1 Is Nothing Then
                'only multi-cell ranges can be written to a 2D array
                If rng1.Cells.Count > 1 Then
                    X = ws.UsedRange.Value2
                    'The code TRANSPOSES COLUMNS AND ROWS by writing strings column by column
                    For lCol = 1 To UBound(X, 2)
                        'write initial value outside the loop
                         strTmp = IIf(InStr(X(1, lCol), strDelim) > 0, """" & X(1, lCol) & """", X(1, lCol))
                        For lRow = 2 To UBound(X, 1)
                            'concatenate long string & (short string with short string)
                            strTmp = strTmp & (strDelim & IIf(InStr(X(lRow, lCol), strDelim) > 0, """" & X(lRow, lCol) & """", X(lRow, lCol)))
                        Next lRow
                        'write each line to CSV
                        Print #lFnum, strTmp
                    Next lCol
                Else
                    Print #lFnum, IIf(InStr(ws.UsedRange.Value, strDelim) > 0, """" & ws.UsedRange.Value & """", ws.UsedRange.Value)
                End If
            End If
        Next ws
    
        Close lFnum
        MsgBox "Done!", vbOKOnly
    
    End Sub