1

ハイパーリンクのワークブック名​​を取得してコードに入れようとしています。

Sub Workbook()

    Dim vbaname as string
    Dim WBMaster As Workbook, WBSource As Workbook
    Dim WSMaster As Worksheet, WSSource As Worksheet

    Range("b7").Hyperlinks(1).Follow

    'returns the hyperlink text "Vba Source test"
    VbaName = """" & Range("B7").Text & """"

    Set WBSource = Workbooks(VbaName)

添え字が範囲外のバグを取得します。これを行う別の方法はありますか。ハイパーリンクのテキストをそのブラケットに入れたいだけです。

4

1 に答える 1

0

あなたが実際にアクティブなウィンドウの値を保持している場合Debug.Print(ハイパーリンクの次のもの)。作業中のハイパーリンクからブックの名前を取得する場合は、次のコードを使用しますVbaNameB7

Sub GetWorkbookName()
    MsgBox "the name of the workbook in the hyperlink is: " & vbCrLf & _
            getWorkbookName(Range("B7").Text)
End Sub

Private Function getWorkbookName(hyperLink As String) As String
    Dim i&
    For i = 1 To Len(hyperLink)
        If StrComp(Left(Right(hyperLink, i), 1), "\", vbTextCompare) = 0 Then
            getWorkbookName = Right(hyperLink, i - 1)
            Exit For
        End If
    Next i
End Function


一方、ハイパーリンクからワークブックを開いて参照を割り当てようとしていると思います。あなたのやり方は、正しいアプローチではありません。私はあなたがこのようにすることを検討したいと思うかもしれません:

Sub Workbook()

    Dim wbFromHyperLink As String
    Dim WBSource As Workbook

    MsgBox "the name of the workbook in the hyperlink is: " & vbCrLf & _
            getWorkbookName(Range("B7").Text)

    wbFromHyperLink = getWorkbookName(Range("B7").Text)

    'Range("b7").Hyperlinks(1).Follow

    Set WBSource = Workbooks.Open(Range("B7").Text)

    ' do not forget to close and free the object
    ' WBSource.Saved = True
    ' WBSource.Close
    ' Set WBSource = Nothing
End Sub

Private Function getWorkbookName(hyperLink As String) As String
    Dim i&
    For i = 1 To Len(hyperLink)
        If StrComp(Left(Right(hyperLink, i), 1), "\", vbTextCompare) = 0 Then
            getWorkbookName = Right(hyperLink, i - 1)
            Exit For
        End If
    Next i
End Function
于 2013-07-05T07:54:45.060 に答える