VBA - 创建Access数据库和更新字段属性(日期/时间格式)的Excel宏
问题描述:
我有一个Excel宏,可将数个Excel工作表中的数据复制到单个Access表中。除了访问中的数据应该转换为mmmm yyyy
,而我将其复制到访问权限时,它一直运行良好,它始终转换为dd/mm/yyyy
。VBA - 创建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申请属性,如下面的截图所示?
答
格式为显示只。一个真正的日期值是一个数值。在一个简单的选择查询
"SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & flatPath & "]." & "[" & Application.ActiveSheet.name & "$]"
源:
所以用这个。根据需要添加转换(和筛选)以确保您具有[Start Date]
的真实日期值。例如,日期可能被解读为文本,然后用DateValue将转换:
TrueStartDate: DateValue([DateColumnFromExcel])
现在,保存查询,当你建立TheSQL
使用它作为源。
非常感谢,我会努力的! – rGabiru