我编写了一个将工作表传输到Access数据库的宏,但它不会分别在存储电话号码和日期的列中添加值。
问题1(忽略):在Access中,PhoneNumber字段数据类型是一个数字。当我将DataType更改为短文本时,电话号码成功传输到Access数据库。我认为Excel中的PhoneNumber列将数据存储为字符串而不是数字,因此我添加了一些代码将其转换为数字,但这没有帮助。 编辑:我现在将电话号码存储为短文本数据类型。
问题2:另一个不会传输值的列是“DateProcessed”列,它反映了添加的日期。我已经仔细检查过格式和值都存储为Date。 编辑:我是一个白痴,并没有导入位于R列的Date Processed列。
将电话号码转换为数字的代码
Dim lastRow As Long
lastRow = Range("A" & Rows.Count).End(xlUp).Row
Range("C2:C" & lastRow).Select
On Error Resume Next
For Each xCell In Selection
xCell.Value = CDec(xCell.Value)
xCell.NumberFormat = "0"
Next xCell
On Error GoTo 0
将电子表格转移到访问的代码
Dim acc As New Access.Application
acc.OpenCurrentDatabase "C:\Users\Benjamin\Documents\Database1.accdb" '
acc.DoCmd.TransferSpreadsheet _
acImport, _
acSpreadsheetTypeExcel12Xml, _
"CallLog", _
Application.ActiveWorkbook.FullName, _
True, _
"A1:Q" & lastRow
acc.CloseCurrentDatabase
acc.Quit
Set acc = Nothing
答案 0 :(得分:0)
使用转换代码,您将每个单元格的值设置为数字,但Excel可能仍将单元格格式化为文本,这可能会导致问题。尝试将xCell.NumberFormat = "0"
添加到For
循环中。这将确保每个单元格的格式设置为数字。