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

问题描述:

我有一个Excel宏,可将数个Excel工作表中的数据复制到单个Access表中。除了访问中的数据应该转换为mmmm yyyy,而我将其复制到访问权限时,它一直运行良好,它始终转换为dd/mm/yyyyVBA - 创建Access数据库和更新字段属性(日期/时间格式)的Excel宏

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

这里是我的代码的摘录:

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”总是得到值作为系统日期,它是不可能通过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使用它作为源。

+0

非常感谢,我会努力的! – rGabiru