我在vfp中創建了一個大視圖。這個觀點達到了約400萬條記錄。我需要連接它並將其導入到Excel工作簿中。將大視圖導入excel工作表
雖然導入工作表達到的限制(約150萬條記錄)時發生錯誤。
任何解決方案?我正在考慮將它導入到不同的工作表中,但尚未找到解決方案。
我在vfp中創建了一個大視圖。這個觀點達到了約400萬條記錄。我需要連接它並將其導入到Excel工作簿中。將大視圖導入excel工作表
雖然導入工作表達到的限制(約150萬條記錄)時發生錯誤。
任何解決方案?我正在考慮將它導入到不同的工作表中,但尚未找到解決方案。
這是MS Excel的限制。你無法避免這一點。或導出爲Excel表格的另一種格式。
我可以將它導入到不同的wroksheets – user1912404
是的,當然。我認爲Archlight的答案會幫助你。 – Oleg
對於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
嘿感謝您的代碼。我面臨的唯一問題是,我想查詢一個視圖 – user1912404
我的sqlquery如下所示:「select * from v_wldr1」代碼沒有找到視圖,因爲我只指示dbf文件夾路徑而不是.dbc文件 – user1912404
Hov dbf的工作是這樣的:該文件夾有點像數據庫名稱,文件是表或視圖名稱。所以你必須在文件夾中有一個名爲v_wldr1.vue的文件。所以你應該可以使用select * from v_wldr1.vue。我不再爲dbf文件編程。所以我不是100%確定的語法。但是請把它放在這裏,或者在得到它時編輯我的答案。 – Archlight
這是一個關閉數據傳輸或你要多次運行的東西嗎? – Archlight
以及最終用戶可能需要連接到不同的相同的視圖,但從不同的數據庫。但它不是非常頻繁地執行@Archlight – user1912404