Excel,下标超出范围

Excel,下标超出范围,excel,vba,Excel,Vba,我可能已经阅读了互联网上的每一篇文章,但无法让它发挥作用 我创建了一个具有(1)列表框控件和(1)Excel电子表格控件的表单。就这样。我试图实现的是能够在电子表格控件中浏览excel工作簿 我已经从网络中的特定文件夹填充了列表,我也可以将数据转储到电子表格控件,但只能从“活动工作簿”中转储。这就是问题所在。我需要在单击列表框时激活不同的工作簿。请参阅下面我的列表框代码。单击()。我在此处收到错误消息Workbooks(workbooknow).Activate“。我已确保文件扩展名正确,文件名

我可能已经阅读了互联网上的每一篇文章,但无法让它发挥作用

我创建了一个具有(1)列表框控件和(1)Excel电子表格控件的表单。就这样。我试图实现的是能够在电子表格控件中浏览excel工作簿

我已经从网络中的特定文件夹填充了列表,我也可以将数据转储到电子表格控件,但只能从“活动工作簿”中转储。这就是问题所在。我需要在单击列表框时激活不同的工作簿。请参阅下面我的列表框代码。单击()。我在此处收到错误消息Workbooks(workbooknow).Activate“。我已确保文件扩展名正确,文件名也正确,并通过调试确认

私有子列表框1_单击()

端接头

这就是我在列表框中填充列表的方式

私有子用户表单_初始化()

Dim filelist()作为字符串
作为字符串的Dim fname
Dim FNAMEAS字符串
作为字符串的Dim fPath
作为整数的Dim I
'定义要搜索文件的目录
fPath=“X:\ESTIMATINGSOLUTIONS\”
'生成文件列表
fname=Dir(fPath&“*.xlsx”)
而fname“”
'将fName添加到列表中
I=I+1
ReDim保留文件列表(1到I)
文件列表(I)=fname
'工作簿(fname)。激活
'获取下一个文件名
fname=Dir()
温德
'查看是否找到任何文件
如果I=0,那么
MsgBox“未找到任何文件”
出口接头
如果结束
'循环浏览列表并添加到列表框
对于I=1到UBound(文件列表)
Me.ListBox1.AddItem文件列表(I)
下一个
端接头


我想知道此错误消息是否来自激活工作簿时的“文件路径”。此处有任何帮助。

您希望输入仅为
filename.filetype
,因此,例如
C:\test.xlsx
应仅为
工作簿(“test.xlsx”).activate
谢谢你,泽克,我可以在调试时确认这正是workbooknow所持有的。这很奇怪。我用不同的方法完成了它,但我得到了相同的错误。我甚至将文件名直接放在了Workbooks上(“assistivelistening.xlsx”).Activate和我得到相同的错误。可能是什么。该文件存在,因为它实际上已添加到列表框中。如果这是一个明显的问题,很抱歉,但我需要确定。您是否已打开目标文件?工作簿(x)。如果是,则仅激活函数。否则,请执行工作簿。打开(x)您希望输入仅为
filename.filetype
,因此例如
C:\test.xlsx
应仅为
工作簿(“test.xlsx”).activate
谢谢你,泽克,我可以在调试时确认这正是workbooknow所持有的。这很奇怪。我用不同的方法完成了它,但我得到了相同的错误。我甚至将文件名直接放在了Workbooks上(“assistivelistening.xlsx”).Activate和我得到相同的错误。可能是什么。该文件存在,因为它实际上已添加到列表框中。如果这是一个明显的问题,很抱歉,但我需要确定。您是否已打开目标文件?工作簿(x)。如果是,则仅激活函数。否则,请执行工作簿。打开(x)
Dim p_wsSheet As Worksheet
Dim p_rnData As Range
Dim p_owcSpread As OWC11.Spreadsheet
Dim workbooknow As String
Dim fPath As String

workbooknow = ListBox1.Text

Workbooks(workbooknow).Activate



Set p_wsSheet = ActiveSheet
Set p_rnData = p_wsSheet.Range("A1:N300")

Set p_owcSpread = Me.Spreadsheet1

With p_owcSpread
     'Populate a range.
    With .ActiveSheet
        .Range("A2:N300").Value = p_rnData.Value
    End With
     'Limit the range to be viewed in the control.
    With .ActiveWindow
        .ViewableRange = "A1:N300"
    End With
End With

Set p_owcSpread = Nothing
Dim filelist() As String
Dim fname As String
Dim fnameActivation As String
Dim fPath As String
Dim I As Integer



 'define the directory to be searched for files

fPath = "X:\ESTIMATINGSOLUTIONS\"

 'build a list of the files
fname = Dir(fPath & "*.xlsx")
While fname <> ""
     'add fName to the list
    I = I + 1
    ReDim Preserve filelist(1 To I)
    filelist(I) = fname

   ' Workbooks(fname).Activate
     'get next filename
    fname = Dir()

Wend
 'see if any files were found
If I = 0 Then
    MsgBox "No files found"
    Exit Sub
End If
 'cycle through the list and add to listbox
For I = 1 To UBound(filelist)
    Me.ListBox1.AddItem filelist(I)
Next