【问题标题】:How to transfer more than 65536 rows from excel to Access (Both Version 2010) [duplicate]如何将超过 65536 行从 excel 传输到 Access(两个版本 2010)[重复]
【发布时间】:2014-03-05 04:24:58
【问题描述】:

我有以下代码将一些行从 Excel 传输到 Access 数据库,然后从 Access 导出到 .txt 文件。问题是当我将它导出到 Access 时,它只导出 65536 行。有办法解决吗?

 Sub Mailing_Recebido()

    Dim i As Long
    Dim Caminho As String
    Dim A As Object

    Range("i27").Value = "Inicio da Exportação..."

    Range("BJ18").Select
    ActiveCell.FormulaR1C1 = "=CELL(""nome.arquivo"")"
    Range("BJ18").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.TextToColumns Destination:=Range("BJ18"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="[", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    Range("BK18").Select
    Selection.ClearContents
    Caminho = Range("bj18").Value

    Sheets("Mailing_Recebido").Select

    Range("a5").Select
    i = Cells(Rows.Count, 1).End(xlUp).Row

    Sheets("Plan1").Select
    Range("BO5").Value = i

    Range("BO3").Select
    ActiveCell.FormulaR1C1 = "=COUNTA(Mailing_Recebido!R[2]C[-66]:R[1048573]C[-66])"

    ActiveSheet.Calculate


    'Range("BN3").Select
    Range("BM26").Select
    Range("BM26").Value = Range("BO8").Value


    Set A = CreateObject("Access.Application")
    A.Visible = False
    A.OpenCurrentDatabase (Caminho + "\Cria_Mailing.mdb")
    A.DoCmd.RunMacro "Executar"

    'Range("bk22").Value = FileLen(Caminho + "\" + Range("c32").Value)
    Calculate

    'Call XTo_txt
    Range("i27").Value = "Exportação Completada..."



   End Sub

函数“Exportar”调用 2 个新函数“Importar”然后是“Exportar”:

Option Compare Database


Function exporta()


    Dim rs As DAO.Recordset
    Dim caminho As String
    Dim NomeArq As String

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("NOMEBASE")


    caminho = rs.Fields(0).Value + "\" + rs.Fields(1).Value



    DoCmd.TransferText acExportFixed, "Mailing_Envio", "BASE", caminho



End Function


Function importa()

    Dim rs As DAO.Recordset
    Dim inicio As String
    Dim fim As String



'DoCmd.TransferSpreadsheet acImport, , _
    '"NOMEBASE", Application.CurrentProject.Path() + "\Abre_Envio_Novo_Layout.xlsm", True, "Plan1!BJ25:BM26"

 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
    "NOMEBASE", Application.CurrentProject.Path() + "\Abre_Envio_Novo_Layout.xlsm", True, "Plan1!BJ25:BM26"


   ' TypeExcel12



    Set db = CurrentDb()
    Set rs = db.OpenRecordset("NOMEBASE")

    inicio = rs.Fields(2).Value
    fim = rs.Fields(3).Value


'DoCmd.TransferSpreadsheet acImport, , _
    '"BASE", Application.CurrentProject.Path() + "\Abre_Envio_Novo_Layout.xlsm", True, "Mailing_Recebido!A:AX"
    ' + inicio + ":" + fim


DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
    "BASE", Application.CurrentProject.Path() + "\Abre_Envio_Novo_Layout.xlsm", True, "Mailing_Recebido!A:AX"
    ' + inicio + ":" + fim


    rs.Close

End Function

没有人知道吗? =(

【问题讨论】:

  • 对不起,忘了说!都是 2010 年。
  • 在访问时,如果我在访问时检查数据库,它只收到 65536 行,因此它只将 65536 行导出到 .txt 文件。
  • 我会做的,谢谢! “Executar”调用 2 个函数“Importar”,然后是“Exeportar”,我会用它们来编辑问题。
  • 不知道为什么这被标记为“已回答”问题的重复。链接的“已回答”问题不一样。这个问题有一个指定的范围,而链接的问题答案没有。这会有所不同;指定范围限制为 65536 行 - 这是需要回答的问题。

标签: database excel ms-access import export


【解决方案1】:

您是否尝试导入 .xls 文件,即使它是使用 Excel 2010 创建的?因为 all .xls 文件中的最大行数限制为 65536。您可以尝试使用 .xlsx 文件来查看它是否仅导入 65536 行。

【讨论】:

  • 是的,我尝试了这两个扩展并且都有这个限制..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多