3
我有一個Excel 2007工作簿,我正在使用它連接到MSSQL 2008服務器以拉下一些名稱,我能夠成功實現此目標。我的問題是我想要從SQL Server獲得的名稱創建新的工作表。Excel 2007 VBA - 運行時錯誤1004
我已經能夠創建一個結果數組並迭代創建一個新工作表的數組,但無法讓它重新命名工作表,VB返回一個1004的運行時錯誤:應用程序定義或對象定義錯誤。我創建了一個msgbox,輸出數組結果作爲Im遍歷它,並且msgbox中顯示的名稱是正確的且數量正確。
是否有人能夠指出我的代碼有任何問題,或者可能解釋這個錯誤意味着什麼以及如何解決它?我的代碼在activesheet被重命名爲數組中名稱的行上出錯。如果我要將名稱作爲i的值,則重命名活動頁面。
這裏是我使用的代碼:
Public Sub Dataextract()
' Create a connection object.
Dim cnPubs As ADODB.Connection
Set cnPubs = New ADODB.Connection
' Provide the connection string.
Dim strConn As String
strConn = "Source=OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;" _
"Persist Security Info=True;Data Source={REMOVED};"
'Now open the connection.
cnPubs.Open strConn
' Create a recordset object.
Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset
With rsPubs
' Assign the Connection object.
.ActiveConnection = cnPubs
' Extract the required records.
' The Select Query to display the data
.Open "SELECT DISTINCT [databaseName] FROM [DBMonitor].[dbo].[dbGrowth]"
' Copy the records into cell A2 on Sheet1.
'Sheet1.Range("A2").CopyFromRecordset rsPubs
vArray = rsPubs.GetRows()
rowsreturned = UBound(vArray, 2) + 1
For i = 0 To rowsreturned - 1
' Added the following to see if it errors anywhere else, or if it is
' just the one record.
'On Error Resume Next
Sheets.Add After:=Sheets(Sheets.Count)
' FAILS HERE....
ActiveSheet.Name = vArray(0, i)
MsgBox (i & " " & vArray(0, i))
Next i
' Tidy up
.Close
End With
cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing
End Sub
任何幫助,任何人都可以提供將不勝感激。
感謝,
馬特
感謝您的信息,名字沒有必須任何特殊字符,他們在那裏所有長度小於20個字符,但數據庫中的字段是一個varchar(50),當名字被應用時,它試圖插入50個字符。我現在修改了數據庫結構,使它只有30個字符(名字永遠不會比這更大),並且我還使用了Trim()。 感謝信息堆,它是不勝感激。 Matt – Lima 2009-08-09 12:28:53
感謝您的反饋,您永遠不知道何時會有人遇到同樣的問題... – Treb 2009-08-09 17:12:46