1

我正在使用 VBA 来控制带有 OLE 自动化的数据库前端。数据库查询的输出采用表格格式,我可以使用应用程序的 OLE 方法来读取单个单元格。我的目标是自动化将此输出转换为 CSV 的过程。我的方法是循环遍历每个单元格并使用 VBA 的WRITE函数输出到 CSV,但是这种方法在每行上都留下了多余的逗号。请帮助我删除这个额外的逗号或在没有它的情况下写下一行。在此先感谢您的时间。

第一个循环写入列标题,第二个循环写入表的数据。两个循环都会产生最后一个不需要的逗号。

'4. Write headers and table content to CSV File
     Open pathOutput For Output As #1
         For h = 1 To results.columnCount
             Write #1, Cells(1, h);
         Next h
         Write #1,

         For i = 1 To results.rowCount
             For j = 1 To (results.columncount)
                 Write #1, results.cell(i, j);
             Next j
             Write #1,
         Next i

     Close #1
4

2 回答 2

3

这应该可以解决问题:

'4. Write headers and table content to CSV File
    Open pathOutput For Output As #1
        For h = 1 To Results.columncount
            'Add a comma unless it's the last column
            If h <> Results.columncount Then
                Write #1, Cells(1, h);
            Else
                Write #1, Cells(1, h)
            End If
        Next h
        Write #1,

        For i = 1 To Results.RowCount
            For j = 1 To (Results.columncount)
                'Add a comma unless it's the last column
                If j <> Results.columncount Then
                    Write #1, Cells(1, j);
                Else
                    Write #1, Cells(1, j)
                End If
            Next j
            Write #1,
        Next i

    Close #1

我还没有找到这方面的文档,但是分号比如在这里找到

Write #1, Cells(1, j);导致Write以逗号而不是默认的 Crlf (related question)结束行。

于 2013-01-23T20:11:12.890 回答
1

我认为最后的Write #1,陈述可能是罪魁祸首。当你删除它们时会发生什么?

于 2013-01-23T18:17:56.307 回答