gpt4 book ai didi

excel - VBA - 用于创建 Access 数据库和更新字段属性(日期/时间格式)的 Excel 宏

转载 作者:行者123 更新时间:2023-12-04 03:10:12 25 4
gpt4 key购买 nike

我有一个 Excel 宏,可将数据从多个 Excel 工作表复制到单个 Access 表。除了 access 中的数据应转换为 mmmm yyyy 而当我将其复制到 access 时,它始终转换为 dd/mm/yyyy 之外,一切都运行良好。

字段是“开始日期”和“结束日期”。

这是我的代码的摘录:

Dim Catalog As Object
Dim cn As ADODB.connection
Dim dbPath as String, scn as String

dbPath = CPTwb.Path & "\Flatfile.accdb"`
scn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";"

Set Catalog = CreateObject("ADOX.Catalog")`
Catalog.Create scn
Set Catalog = Nothing
Set cn = New ADODB.connection

With cn
.Open scn
.Execute "CREATE TABLE Flatfile ([Tracker Product] text(255) WITH
Compression, " & "[Contract ID] text(255) WITH Compression, " & _
"[Client] text(255) WITH Compression, " & _
"[Start Date] datetime, " & "[End Date] datetime)"
End With

TheSQL = "INSERT INTO Flatfile ([Tracker Product], [ContractID], [Client],[Start Date], [End Date])"
TheSQL = TheSQL & "SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & flatPath & "]." & "[" & Application.ActiveSheet.name & "$]"

cn.Execute TheSQL
cn.close

我了解“数据时间”属性始终获取系统日期的值,并且无法通过 DDL 进行编辑。

有没有办法通过 VBA 应用属性,如下面的屏幕截图所示?

enter image description here

最佳答案

格式仅用于显示。真正的日期值是一个数值。

所以使用这个:

"SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & flatPath & "]." & "[" & Application.ActiveSheet.name & "$]"

作为简单选择查询中的源。根据需要添加转换(和过滤)以确保您拥有 [Start Date] 的真实日期值。例如,日期可以作为文本读取,然后用 DateValue 转换:

TrueStartDate: DateValue([DateColumnFromExcel])

现在,保存该查询并在构建 TheSQL 时将其用作源。

关于excel - VBA - 用于创建 Access 数据库和更新字段属性(日期/时间格式)的 Excel 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45956581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com