首页 > 解决方案 > Excel vba CopyFromRecordset 不粘贴日期格式的单元格

问题描述

我有 2 个 Excel 文件,第一个是人们可以修改和上传新信息的地方,第二个是一个数据库,当其他 excel 已上传时,我在其中放置所有信息。

例如,当我从另一个 Excel 将一个包含信息的新行放入我的数据库时,问题就开始了,当我打开第一个 excel 时,我的代码必须 CopyFromRecordset 才能从数据库中获取所有信息并显示在第一个擅长。发生这种情况时,代码会粘贴所有信息,但它不会粘贴两个包含日期信息的单元格,它显示为空,我不知道如何修复它。

我一直在寻找问题出在哪里,当我向数据库添加信息时,如果我打开这个数据库,在包含新信息的单元格上加上日期信息,我按“F2”和“回车”,此时,当我将数据库中的 CopyFromRecordset 复制到第一个 excel 时,它可以工作,并复制这两个单元格。

我希望你们能帮助我,因为你们知道,假设不打开数据库并这样做。

我在这里过去的代码:

第一个是当我在第一个 excel 中添加新信息并放入数据库时​​:

Public objFSO, objFile As Object
Public bdFile, ConnString As String

Sub SyncBD()
    bdFile = Sheet3.Range("O2").Value 'This is when I put the rute of the file (Data Base)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(bdFile)
        Kill (bdFile)
        ThisWorkbook.Sheets("BDinhibSCE").Copy
        ActiveWorkbook.SaveAs bdFile, FileFormat:=51
        ActiveWorkbook.Close False
End Sub

第二部分是当数据库中有新信息时,我想将数据库中的信息带到第一个 excel 中。

Public conn As New ADODB.Connection
Public record As New ADODB.Recordset
Public cmd As New ADODB.Command
Sub SyncBD2()
        cmd.CommandTimeout = 0
        conn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & Sheet3.Range("O2").Value & >";Extended Properties=""Excel 12.0 Xml;HDR=Yes;"";"
        record.Open "select*FROM[BDinhibSCE$]", conn
        Sheet1.Cells(2, 1).CopyFromRecordset record
        record.Close
        conn.Close
End Sub

这是数据库的截图

正如您在“Fecha de inhibición”列中看到的那样,我放了一个日期格式,这是在我运行代码的第二部分时不会粘贴到 excel 1 上的日期,直到我单击包含新信息的单元格然后按“F2”+“Enter”。

重要的是,这仅在我插入新行时发生,并且仅在包含日期信息的单元格中发生。

在此处输入图像描述

标签: excelvba

解决方案


推荐阅读