VBA – Excelmacros创buildAccess数据库并更新字段属性(date/时间格式)

我有一个Excelmacros将数个Excel工作表中的数据复制到单个Access表中。 除了访问数据应该转换为mmmm yyyy而我将其复制到访问权限时,它一直转换为dd/mm/yyyy

这些字段是“开始date”和“结束date”。

这是我的代码的摘录:

 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 

我明白属性“datatime”总是获取作为系统date的值,并且不可能通过DDL进行编辑。

有没有办法通过VBA像下面的截图中的财产申请?

在这里输入图像说明

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

所以使用这个:

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

作为简单select查询中的源代码。 根据需要添加转换(和筛选)以确保您具有[Start Date]真实date值。 例如,date可能会被读取为文本,然后使用DateValue进行转换:

 TrueStartDate: DateValue([DateColumnFromExcel]) 

现在,保存该查询并在构buildTheSQL时将其用作源代码。