私はいくつかの名前をプルダウンするためにMSSQL 2008サーバーに接続するために使用しているExcel 2007ブックを持っていますが、これを正常に達成することができます。私の問題は、新しいワークシートをSQL Serverから取得した名前から作成したいということです。Excel 2007 VBA - 実行時エラー1004
私は結果の配列を作成し、新しいシートを作成する配列を反復することができましたが、シートの名前を変更できませんでした。VBは実行時エラー1004を返します。アプリケーション定義またはオブジェクト定義エラー。私はそれを繰り返し、msgboxに表示されている名前が正しく、適切な量の配列結果を出力するmsgboxを作成しました。
誰かが自分のコードに関する問題を指摘できますか、このエラーの意味と解決方法を教えてください。私のコードは、アクティブシートの名前が配列の名前に変更されている行でエラーが発生しています。名前を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
フィードバックをお寄せいただきありがとうございます。誰かが同じ問題に遭遇する時期は決してありません。 – Treb