名字确定没写错,我用MsgBox测试了下,Analysis.Sheets(1).Name输出的是sheet1,Analysis.Sheets(2).Name报下标越界,说明这句代码没操作Analysis对象指向的Workbook,而是本模块代码所在的Excel文件,求解惑
该回答引用ChatGPT;
如果您使用GetObject函数获取已经打开的Workbook对象,并且该Workbook对象并不是活动工作簿,那么在操作该Workbook对象中的Sheet对象时需要显式地指定Worksheet所在的Index或者Name,否则会出现下标越界错误。
以下是示例代码,通过GetObject方式获取名为"test.xls"的Workbook对象,并操作其中的Sheet1:
Sub Test()
Dim wb As Workbook, ws As Worksheet
Set wb = GetObject("C:\test.xls")
Set ws = wb.Sheets("Sheet1") '或者使用ws = wb.Sheets(1)
ws.Range("A1").Value = "Hello"
End Sub
在上述示例代码中,我们直接将ObjectName参数传入文件的全路径名称,这样即可获取已经打开的部分或全部Excel文件的Workbook对象。
希望这样能解决您的问题,如有任何疑问,请随时追问!