【问题标题】:Hyperlinks.add changes hyperlink unwantedHyperlinks.add 更改不需要的超链接
【发布时间】:2018-03-27 23:59:27
【问题描述】:

我已经多次使用hyperlinks.add 并且从未遇到任何问题。 现在我在我的基本代码中添加了一行代码:SourceBook.Sheets(ESN & "_SV" & SV).Hyperlinks.Add Anchor:=Range("A" & i), _ Address:=ToPath & NewName(您可以在此处找到)。这应该会添加一个指向新创建的文档的链接。

问题是excel总是说不能打开文件。我通过代码输入的链接是正确的,因为我用debug.print 复制了它,它打开了文件没有问题。

当我将鼠标悬停在超链接上时,我注意到我添加的超链接被 excel 修改了。我想知道这怎么可能。

我遇到的第二个问题是,当我手动输入超链接并手动导航到文件以确保它采用正确的文件时,excel 仍然会修改我的链接并显示“无法打开指定的文件”。

有人知道这里可能出了什么问题吗?谢谢!

代码:

`Application.ScreenUpdating = False
Dim i, j, FSO As Object, SV, ESN, PartName, ToPath, FromPath, NewName, MsgBoxAnswer, TargetBook As Workbook, SourceBook As Workbook
Dim OS, PN, SN, ProjectNumber, Customer, StartDate, EndDate, LastRowCMM
ESN = ActiveWorkbook.ActiveSheet.Range("G2").Value
SV = ActiveWorkbook.ActiveSheet.Range("K2").Value
ProjectNumber = ActiveWorkbook.ActiveSheet.Range("A3").Value
Customer = ActiveWorkbook.ActiveSheet.Range("G3").Value
Set FSO = CreateObject("scripting.filesystemobject")
PGB.Min = 0
PGB.Value = 0
PGB.Max = 22

'Create main folder
If SV <> 1 Then
SV = "(SV " & SV & ")"
ToPath = "U:\tmo\vanmolle\fiches constat\Fiches constats #" & ESN & " " & SV
Else
ToPath = "U:\tmo\vanmolle\fiches constat\Fiches constats #" & ESN
End If
If FSO.folderexists(ToPath) = True Then
MsgBoxAnswer = MsgBox("Folder already created.", vbExclamation, "Folder exists.")
Exit Sub
End If
FSO.createfolder (ToPath)


'Create all Excel files & fill them in
For i = 6 To 27
FromPath = "U:\tmo\VANMOLLE\Fiches constat\Template fiches constat LEAP.xlsm"
If SV <> 1 Then
ToPath = "U:\tmo\vanmolle\fiches constat\Fiches constats #" & ESN & " " & SV & "\"
Else
ToPath = "U:\tmo\vanmolle\fiches constat\Fiches constats #" & ESN & "\"
End If

FSO.copyfile Source:=FromPath, Destination:=ToPath
NewName = "#" & ESN & "_" & ActiveWorkbook.ActiveSheet.Range("A" & i) & ".xlsm"
If SV <> 1 Then
FromPath = "U:\tmo\vanmolle\fiches constat\Fiches constats #" & ESN & " " & SV & "\Template fiches constat LEAP.xlsm"
Else
FromPath = "U:\tmo\vanmolle\fiches constat\Fiches constats #" & ESN & "\Template fiches constat LEAP.xlsm"
End If

Name FromPath As ToPath & NewName
Set SourceBook = ThisWorkbook
Set TargetBook = Workbooks.Open(ToPath & NewName)
TargetBook.Sheets("Sheet1").Activate
PartName = SourceBook.ActiveSheet.Range("A" & i).Value
OS = SourceBook.ActiveSheet.Range("D" & i).Value
PN = SourceBook.ActiveSheet.Range("B" & i).Value
SN = SourceBook.ActiveSheet.Range("C" & i).Value
    If SN = "" Then SN = "N/A"
StartDate = SourceBook.ActiveSheet.Range("G" & i).Value
EndDate = SourceBook.ActiveSheet.Range("H" & i).Value

'check for right CMM
'LastRowCMM = TargetBook.Sheets("Révision CMM").Range("B6").End(xlDown).Row
'For j = 1 To LastRowCMM
'If PartName = TargetBook.Sheets("Révision CMM").Range("A" & j).Value Then ActiveWorkbook.ActiveSheet.Range("A23").Value = ActiveWorkbook.Sheets("Révision CMM").Range("B" & j).Value
'Next j

TargetBook.ActiveSheet.Range("B9").Value = PartName
TargetBook.ActiveSheet.Range("B10").Value = OS
TargetBook.ActiveSheet.Range("B11").Value = "# " & ESN
TargetBook.ActiveSheet.Range("B12").Value = PN
TargetBook.ActiveSheet.Range("B13").Value = SN
TargetBook.ActiveSheet.Range("E9").Value = StartDate
TargetBook.ActiveSheet.Range("E10").Value = EndDate
TargetBook.ActiveSheet.Range("B14").Value = ProjectNumber
TargetBook.ActiveSheet.Range("B15").Value = Customer
TargetBook.ActiveSheet.PageSetup.PrintArea = "$A$1:$E$39"

TargetBook.Close True

'Add hyperlink
SourceBook.Sheets(ESN & "_SV" & SV).Hyperlinks.Add Anchor:=Range("A" & i), _
Address:=ToPath & NewName

Application.Wait (Now + TimeValue("00:00:01"))
Progress.PGB.Value = i - 5
Progress.Lbl.Caption = "File " & i - 5 & " of 22 copied."
Next i
Application.ScreenUpdating = True`

【问题讨论】:

    标签: excel vba hyperlink


    【解决方案1】:

    首先要明确声明每个变量。例如:

    Dim i as Long, j as Long, FSO As Object, SV as String, ESN as String 等。 您的代码中的方式 - Dim i, j, SV, ESN, PartName, ToPath 它们被声明为变体。

    第二件事 - 尝试一些非常小的东西来进一步调试。例如。写这篇小文章:

    Sub TestMe()    
        With Worksheets(1)
          .Hyperlinks.Add anchor:=.Range("A1"), Address:="C:\Users\UserName\Desktop\test.docx"
        End With        
    End Sub
    

    并检查它是否有效。如果没有,请进一步调试,检查单元格是否被锁定或类似情况。

    【讨论】:

    • 你好,已经开始这样做了(变量),这是我的第一个宏:)。我所做的测试在 print.debug 中有效,在 excel 中无效。这是我以前从未有过的。单元格没有被锁定,它会创建超链接,它只是修改它们
    猜你喜欢
    • 1970-01-01
    • 2014-08-28
    • 2020-02-29
    • 2012-03-10
    • 2013-02-04
    • 2015-11-28
    • 2014-07-27
    • 1970-01-01
    • 2016-09-24
    相关资源
    最近更新 更多