2011-09-14 80 views
0

我正在使用excel vba編寫一個宏,該宏從Excel工作表讀取數據並對其進行處理。基本上,我正在將Excel工作簿A中的數據複製到Excel工作簿B中的工作表X中。工作簿B包含一個宏,它執行此複製,然後將數據從工作表X中讀取到記錄集中。Excel表單中的非空字段在記錄集中顯示爲空白

我遇到了一個真正奇怪的問題。我的問題是記錄集中有一個字段在我嘗試打印記錄集值時顯示爲空白。

這是我的代碼中有問題的部分。將packageName傳遞給包含字符串的此函數。記錄集對象objRecordset錯誤地取回Name字段,並在我嘗試打印該項目的記錄集值時顯示爲空白,即使該項目不爲空。其他領域打印出來很好。名稱字段包含字母和數字,如ABC1232WHSJ, ABCD3456。任何想法出了什麼問題?

Dim objConnect As ADODB.Connection, objRecordset 
Set objConnect = New ADODB.Connection 

objConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";" 

Const adOpenStatic = 3 
Const adLockOptimistic = 3 
Const adCmdText = &H1 

Set objRecordset = CreateObject("ADODB.Recordset") 
objRecordset.Open "Select * FROM [Sheet1$] WHERE Package LIKE '" & _ 
      packageName & "'", objConnect, adOpenStatic, adLockOptimistic, adCmdText 

Debug.Print objRecordset.Fields.Item("Package") 
Debug.Print objRecordset.Fields.Item("Name") 
+0

爲我工作。很難真正測試沒有你的實際數據集。 –

+0

1)看看源列是否有任何奇特的格式(如「文本」).... 2)「名稱」字段可能會被誤解爲單元格地址? – MikeD

+0

感謝您的建議傢伙。任何想法是否與連接字符串中的「擴展屬性」有關?另外,如何確保名稱不會被誤解爲單元格地址?源代碼沒有花哨的格式。它只是一個包含csv的字段。我只是手動創建了一個具有類似數據的工作表,它工作正常,所以我認爲它可能與實際數據集有關,但不知道是什麼。 –

回答

0

我有同樣的問題。

驗證列是否具有相同的數字格式。

當您使用ado連接時,請使用第一行的格式。例如,如果是一個數字,第二個是字符串,表中的值是空的(如果創建一個表,否則您收到錯誤)

解決方案(工作對我來說)是在導入數據之前的打開工作簿,一個需要格式的列,我使用範圍內的屬性數字格式。

[]的

+0

解決方案! –

相關問題