简体   繁体   English

使用 DoCmd.TransferSpreadsheet 时如何避免 accdb 行大小限制?

[英]How to avoid accdb row size limitation when using DoCmd.TransferSpreadsheet?

I'm using a DoCmd.TransferSpreadsheet to import data from Excel to Access.我正在使用 DoCmd.TransferSpreadsheet 将数据从 Excel 导入到 Access。 Everything works fine except some Excel rows that are truncated because there are too much bytes for an Access single row (not field).一切正常,除了一些 Excel 行被截断,因为 Access 单行(不是字段)有太多字节。

I noticed that every field in Access is created as a text(255) while my Excel rows are all no more than 100 characters.我注意到 Access 中的每个字段都是作为文本(255)创建的,而我的 Excel 行都不超过 100 个字符。

I think that if I manage to import my Excel files creating fields with a default length of 100 chars, I will no longer get truncated data.我认为,如果我设法导入创建默认长度为 100 个字符的字段的 Excel 文件,我将不再获得截断的数据。

Is there a way to set the default text length for Access fields to a specific number?有没有办法将 Access 字段的默认文本长度设置为特定数字?


UPDATE更新

Decreasing the default field text size in Access 2010 options seems to be ignored when running DoCmd.TransferSpreadsheet运行DoCmd.TransferSpreadsheet时,似乎忽略了减小 Access 2010 选项中的默认字段文本大小

若要设置 Access (2007) 的默认文本长度,请单击 Office 按钮 >“Access 选项按钮”>“对象设计器”(在左侧窗格中),然后在“表格设计”下的“默认文本字段大小”框中输入 50并单击确定。

I wrote my own import function, and it works:我编写了自己的导入函数,它可以工作:

' Import from an Excel with a default field length different from 255 (must be < 255)
Function importFromExcel(fileName As String, fieldLength as integer)
    Dim my_xl_app As Object
    Dim my_xl_worksheet As Object
    Dim my_xl_workbook As Object
    Set my_xl_app = CreateObject("Excel.Application")
    Set my_xl_workbook = my_xl_app.Workbooks.Open(fileName)
    Set s = my_xl_workbook.Worksheets(1)

    Dim fieldsNumber As Integer
    Dim recordNumber As Long
    fieldsNumber = s.cells(1, s.Columns.Count).End(1).Column
    recordNumber = s.cells(s.Rows.Count, 1).End(3).Row
    tablename = "[" & Replace(GetFilenameFromPath(fileName), ".", "_") & "]"
    On Error Resume Next
    DoCmd.RunSQL "DROP TABLE " & tablename
    On Error GoTo 0

    ' Creo tabella
    sql = "CREATE TABLE " & tablename & " (F1 TEXT(" & fieldLength & ")) "
    DoCmd.RunSQL sql

    For i = 2 To fieldsNumber
        sql = "ALTER TABLE " & tablename & " ADD COLUMN F" & i & " TEXT(" & fieldLength & ")"
        DoCmd.RunSQL sql
    Next



    ' Ora insert
    For i = 1 To recordNumber
        sql = "INSERT INTO " & tablename & " VALUES ("
        For j = 1 To fieldsNumber
            sql = sql & " '" & Replace(s.cells(i, j), "'", "''") & "',"
        Next
        sql = Mid(sql, 1, Len(sql) - 1)
        sql = sql & ")"

    Next

    my_xl_workbook.Close SaveChanges:=False
    Set my_xl_app = Nothing
End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 DoCmd.TransferSpreadsheet 将数据添加到 MS Access 时如何过滤列? - How to filter columns when adding data into MS Access using DoCmd.TransferSpreadsheet? 使用DoCmd.TransferSpreadsheet方法从电子表格导入数据时,如何覆盖Access中的表? - How to overwrite a table in Access when importing data from a spreadsheet using the DoCmd.TransferSpreadsheet Method? 关于 DoCmd.TransferSpreadsheet - About DoCmd.TransferSpreadsheet &#39;DoCmd.TransferSpreadsheet&#39;导出到Excel - 'DoCmd.TransferSpreadsheet' to export to Excel 使用DoCmd.TransferSpreadsheet将Excel电子表格导入Access中会创建重复项 - Importing Excel Spreadsheet into Access using DoCmd.TransferSpreadsheet Creates Duplicates 如何使用VBA和后期绑定(无ADO,无DAO)将Excel数据移至Access-DoCmd.TransferSpreadsheet运行时错误424? - How to move Excel data to Access using VBA and late binding (no ADO, no DAO) - DoCmd.TransferSpreadsheet runtime error 424? MS Access挂在docmd.transferspreadsheet上 - MS Access Hangs on docmd.transferspreadsheet 无法使用 DoCmd.TransferSpreadsheet 打开从 Access 2010 导出的 .xlsx 文件 - Unable to open .xlsx file exported from Access 2010 using DoCmd.TransferSpreadsheet 如何使用doCmd.transferSpreadsheet从Excel工作簿导入第n张工作表 - How do I import the nth sheet from an excel workbook with doCmd.transferSpreadsheet Excel VBA DoCmd.TransferSpreadsheet不将数字/日期值传输到Access - Excel VBA DoCmd.TransferSpreadsheet not transferring numeric/date values to Access
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM