VBA CopyFromRecordset 格式问题

问题描述 投票:0回答:1

当我使用 CopyFromRecordset 方法时,Excel 工作表将 E 列中的前 10 条记录作为日期,即使我将该列显式格式化为货币也是如此。 B 列也有同样的问题,但在我添加格式化代码后格式正确。

我知道我可以循环查看记录来解决这个问题,但是有人知道为什么会发生这种情况吗?我使用的 Excel 模板文件已将 B、C 和 E 列格式化为货币。那么,CopyFromRecordset 方法必须更改前 10 个单元格的设置,但随后它会忽略代码中的显式格式?

xlSheet.Range("A4").CopyFromRecordset rst
rst.Close
xlSheet.Range("B:C,E:E").NumberFormat = "$#,##0.00"

如果我把它改成这样,结果是一样的:

xlSheet.Range("A4").CopyFromRecordset rst
rst.Close
xlSheet.Range("B:C").NumberFormat = "$#,##0.00"
xlSheet.Range("E:E").NumberFormat = "$#,##0.00"
excel vba recordset
1个回答
0
投票

有趣的是,我认为问题出在新的工作簿上。 您提供的代码似乎仅创建一个新的空白工作簿。如果您要打开模板文件,则需要指定模板文件路径,如下所示。

Sub CopyDataFromRecordsetToExcel()
    Dim xlApp As Object ' Excel.Application
    Dim xlWorkbook As Object ' Excel.Workbook
    Dim xlSheet As Object ' Excel.Worksheet

    Dim TemplatePath As String
    ' Define the path to your personal template file
    TemplatePath = ".....\yourTemp.xltx"

    ' Create a new Excel application and workbook
    Set xlApp = CreateObject("Excel.Application")
    ' Open a new workbook based on the template
    Set xlWorkbook = xlApp.Workbooks.Add(TemplatePath)
    Set xlSheet = xlWorkbook.Worksheets(1)
    xlApp.Visible = True
    
end Sub
© www.soinside.com 2019 - 2024. All rights reserved.