excel 从录制文件复制格式问题

s3fp2yjn  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(112)

当我使用CopyFromRecords方法时,即使我显式地将列格式化为货币,Excel工作表也会将列E中的前10条记录作为日期。列B也有同样的问题,但在我添加格式代码后,它的格式设置正确。
我知道我可以通过循环记录来解决这个问题,但有人知道为什么会发生这种情况吗?我使用的Excel模板文件已经有列B,C和E格式化为货币。因此,CopyFromRecords方法必须更改前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"
e0uiprwp

e0uiprwp1#

有趣的是,我认为问题是新的工作手册。您提供的代码似乎只创建一个新的空白工作簿。如果你想打开一个模板文件,你需要指定模板文件路径如下。

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

相关问题