2014-01-23 68 views
0

我在vfp中創建了一個大視圖。這個觀點達到了約400萬條記錄。我需要連接它並將其導入到Excel工作簿中。將大視圖導入excel工作表

雖然導入工作表達到的限制(約150萬條記錄)時發生錯誤。

任何解決方案?我正在考慮將它導入到不同的工作表中,但尚未找到解決方案。

+0

這是一個關閉數據傳輸或你要多次運行的東西嗎? – Archlight

+0

以及最終用戶可能需要連接到不同的相同的視圖,但從不同的數據庫。但它不是非常頻繁地執行@Archlight – user1912404

回答

0

這是MS Excel的限制。你無法避免這一點。或導出爲Excel表格的另一種格式。

+0

我可以將它導入到不同的wroksheets – user1912404

+0

是的,當然。我認爲Archlight的答案會幫助你。 – Oleg

0

對於excel來說,400萬條記錄實在太多了。但是,如果你不得不通過vba連接到dbf文件夾並將數據手動輸入到excel中。

但是那樣會很慢。

這是您可以使用的代碼。 它在每張工作表中輸入1.5毫米的線,這可能太多了。我會用100.000行左右。但那是你的電話

我沒有運行它,但應該是正確的。

Option Explicit 
Sub import() 

    Dim con As Object 
    Dim rst As Object 
    Dim sql As String 
    Dim DbFolderPath As String 
    Dim i As Long 
    Dim ii As Integer 

    DbFolderPath = ThisWorkbook.Path & "\" 
    Application.ScreenUpdating = False 
    Set con = CreateObject("ADODB.connection") 
    con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DbFolderPath & ";Extended Properties=dBASE IV;" 
    sql = "SELECT * FROM myquery" 

    Set rst = CreateObject("ADODB.recordset") 
    rst.CursorLocation = 3 'adUseClient 
    rst.CursorType = 1 'adOpenKeyset 

    rst.Open sql, con 

    ReDim myValues(rst.RecordCount, 4) 
    ThisWorkbook.Sheets(0).Activate 
    i = 1 
    ii = 0 
    If Not (rst.EOF And rst.BOF) Then 
     rst.MoveFirst 
     Do Until rst.EOF = True 
      Cells(i, 1) = rst!Field1 
      Cells(i, 2) = rst!Field2 
      rst.MoveNext 
      i = i + 1 
      If i > 1500000 Then 
      i = 1 
      ii = ii + 1 
      ThisWorkbook.Worksheets.Add 
      ThisWorkbook.Sheets(ii).Activate 
      End If 

     Loop 
    Else 
     GoTo cleanup 
    End If 
    Columns("A:B").EntireColumn.AutoFit 
    GoTo cleanup 
    Exit Sub 
cleanup: 
    On Error Resume Next 
    rst.Close 
    con.Close 
    Set rst = Nothing 
    Set con = Nothing 
    Application.ScreenUpdating = True 
Exit Sub 
End Sub 
+0

嘿感謝您的代碼。我面臨的唯一問題是,我想查詢一個視圖 – user1912404

+0

我的sqlquery如下所示:「select * from v_wldr1」代碼沒有找到視圖,因爲我只指示dbf文件夾路徑而不是.dbc文件 – user1912404

+0

Hov dbf的工作是這樣的:該文件夾有點像數據庫名稱,文件是表或視圖名稱。所以你必須在文件夾中有一個名爲v_wldr1.vue的文件。所以你應該可以使用select * from v_wldr1.vue。我不再爲dbf文件編程。所以我不是100%確定的語法。但是請把它放在這裏,或者在得到它時編輯我的答案。 – Archlight