gpt4 book ai didi

Excel 2007 VBA - 运行时错误 1004

转载 作者:行者123 更新时间:2023-12-02 17:17:51 25 4
gpt4 key购买 nike

我有一个 Excel 2007 工作簿,我用它连接到 MSSQL 2008 服务器来提取一些名称,我能够成功实现这一点。我的问题是我想要根据从 SQL Server 获取的名称创建新工作表。

我已经能够创建结果数组并迭代该数组创建新工作表,但无法重命名该工作表,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

任何人可以提供的任何帮助将不胜感激。

谢谢

马特

最佳答案

设置名称可能失败的三个想法:

  1. 您的工作簿中是否已有具有该名称的工作表?
    尝试设置已在使用的名称将导致“1004”

  2. 您尝试设置的名称可能包含一些非法字符:
    :/\* ? [ ] 不允许

  3. 不允许使用空字符串或超过 31 个字符的字符串

关于Excel 2007 VBA - 运行时错误 1004,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1250484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com