2016-10-13 82 views
0

我在Ms Access中有一個以227,288行運行的查詢。我做了一個命令按鈕,可以將查詢導出到Excel中。我已搜索並找到此代碼當使用VBA在MS Access中導出查詢時丟失行

Private Sub Export_Click() 
    Dim rst   As DAO.Recordset 
    Dim excelApp As Object 
    Dim sht   As Object 
    Dim fldHeadings As DAO.Field 

    Set rst = CurrentDb.OpenRecordset("acct file", dbOpenDynaset) 

    Set excelApp = CreateObject("Excel.Application") 

    On Error Resume Next 

    Set Wbk = excelApp.Workbooks.Open(book1) 
    If Err.Number <> 0 Or Len(book1) = 0 Then 
     Set Wbk = excelApp.Workbooks.Add 
     Set sht = Wbk.Worksheets("CSC Landed") 
     If Len(sheet1) > 0 Then 
      sht.Name = Left("acct file", 34) 
     End If 
    End If 

    Set sht = Wbk.Worksheets.Add 
    If Len(sheet1) > 0 Then 
     sht.Name = Left("acct file", 34) 
    End If 

    On Error GoTo 0 

    excelApp.Visible = True 

    On Error GoTo Errorhandler 

    For Each fldHeadings In rst.Fields 
     excelApp.ActiveCell = fldHeadings.Name 
     excelApp.ActiveCell.Offset(0, 1).Select 
    Next 

    rst.MoveFirst 
    sht.Range("A2").CopyFromRecordset rst 
    sht.Range("1:1").Select 

    excelApp.Selection.Font.Bold = True 
    With excelApp.Selection 
     .HorizontalAlignment = -4108 
     .VerticalAlignment = -4108 
     .WrapText = False 
     With .Font 
      .Name = "Arial" 
      .Size = 10 
     End With 
    End With 

    excelApp.ActiveSheet.Cells.EntireColumn.AutoFit 

    With excelApp.ActiveWindow 
     .FreezePanes = False 
     .ScrollRow = 1 
     .ScrollColumn = 1 
    End With 
    sht.Rows("2:2").Select 
    excelApp.ActiveWindow.FreezePanes = True 

    With sht 
     .Tab.Color = RGB(255, 0, 0) 
     .Range("A1").Select 
    End With 

    rst.Close 
    Set rst = Nothing 

Exit Sub 

Errorhandler: 
    DoCmd.SetWarnings True 
    MsgBox Err.Description, vbExclamation, Err.Number 
    Exit Sub 

End Sub 

但是,導出完成後,它僅導出496行。我搜索並嘗試了不同的嘗試,但我得到的行只有496個。我也在研究VB中的偏好。

我在Access中很新。我做了幾項研究,但仍無法做到。

Image

+0

你好安妮工作。我們不在這裏添加[解決]標題,這就是蜱符號的用途。我還在我的維基答覆中加入了「代表發佈」的內容,以清楚表明它不是我解決它 - 如果您想發佈自己的答案,我很樂意刪除我的答案。 – halfer

+1

謝謝@halfer! – Anne

回答

0

(發佈代表OP)

我知道了由

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ 
    "acct file", "C:\Users\user\Desktop\acctfile.xlsx", True 
0

假設你是從Microsoft Access中運行Export_Click代碼,你可以使用下面的代碼來調用「輸出到」 DoCmd對象的動作:

Private Sub Export_Click() 

    DoCmd.OutputTo acOutputQuery, "acct file", acFormatXLSX, , True 

End Sub 
+0

Hi Ric,我應該堅持以前的代碼,只需添加您的代碼?謝謝.. – Anne

+0

我已經試過了代碼...仍然我得到劃分行..只有400 ++行。 :( – Anne

+0

hi @ ricardo-gerbaudo得出口極限65,000 ++行......我試過使用轉換表格,但是遇到了麻煩。 – Anne