获取运行时错误9:下标超出范围

时间:2016-04-05 02:10:33

标签: excel vba excel-vba

我对VBA的能力非常有限,无法复制别人的辛勤工作并修补它以使其能够满足我的需求。 我一直在寻找不同的网站,并玩了很多选择。我需要搜索网络文件夹 - 将文件夹中的所有文件与存储在A列中的文件编号匹配,并创建指向这些文件的超链接,并在A列中维护文件名。 我可以“找到我需要的东西,但却无法在网上混合这些来创造我的答案。 电子表格每周添加一次,新数据添加到现有数据中,因此A列中的文件名数量是可变的。

搜索的任何文件类型/扩展名是否也可以是变量,或者文件类型必须是一种类型,例如。 msg或pdf?

以下代码只是一次失败的努力

Sub Hyperlinks()
'
    Const sFILENAME_CELLS   As String = "A2:A3200"

    Const sLINKS_COLUMN     As String = "A"
    Const sFOLDER_NAME      As String = "C:\Users\*****\Desktop\Benny PDFs"
    Const sSHEET_NAME       As String = "Projects"

    Dim rFilenameCells      As Range
    Dim rFilenameCell       As Range
    Dim sFilename           As String
    Dim sFullName           As String
    Dim wksTarget           As Worksheet
    Dim iRowNo              As Integer

    Set wksTarget = ThisWorkbook.Sheets(sSHEET_NAME)

    Set rFilenameCells = wksTarget.Range(sFILENAME_CELLS)

    For Each rFilenameCell In rFilenameCells.Cells

        sFilename = rFilenameCell.value

        If sFilename <> vbNullString Then

            sFullName = sFOLDER_NAME & "\" & sFilename

'           Check that the file exists in the specified folder
            If Dir$(sFullName) = sFilename Then

                iRowNo = rFilenameCell.row

                With wksTarget
                    .Hyperlinks.Add Anchor:=.Range(sLINKS_COLUMN & iRowNo), _
                                    Address:=sFullName, _
                                    TextToDisplay:=sFilename
                End With

            End If

        End If

    Next rFilenameCell

End Sub

1 个答案:

答案 0 :(得分:0)

  

获取运行时错误9:下标超出范围

原因可能是您的工作簿中没有Projects表。 也改变这一行:

Const sLINKS_COLUMN     As String = "A"

到A之后的其他东西,因为像这样A2:A3200中的文件名将替换为文件的超链接。