2016-05-30 135 views
0

有人能告诉我如何避免内存不足吗?我有2个工作表,我使用下面的代码从26-> 95更改超链接位置。它工作在工作表2上,但是工作表1上一直存在内存不足,而工作表2上没有问题,我的超链接位置成功更改。任何想法?谢谢你。非常感谢VBA宏在工作表1上工作,但不在工作表2上

Sub HyperLinkChange() 
    Dim oldtext As String 
    Dim newtext As String 
    Dim h As Hyperlink 

    oldtext = "My002vs0026" 
    newtext = "my002vs0095" 


    For Each h In ActiveSheet.Hyperlinks 
    x = InStr(1, h.Address, oldtext) 
    If x > 0 Then 
     If h.TextToDisplay = h.Address Then 
      h.TextToDisplay = newtext 
     End If 
     h.Address = Application.WorksheetFunction. _ 
     Substitute(h.Address, oldtext, newtext) 
    End If 
    Next 
End Sub 

当前超链接LOC的文件:/// \ My002vs0026 \ $系\文件名 新的超链接LOC的文件:/// \ my002vs0095 \ $系\文件名

,当我使用以下代码,只有部分的片材1页的超链接的改变而一些保持相同:

Option Explicit 

Sub ChangeHyperlinks() 
    Dim h As Long 
    Dim oldDr As String, newDr As String 
    oldDr = "\My002vs0026\" 
    newDr = "\my002vs0095\" 

    With Worksheets("Sheet1") 
      For h = 1 To .Hyperlinks.Count 
      With .Hyperlinks(h) 
       'Debug.Print .Address 
       .Address = Replace(.Address, oldDr, newDr, 1, -1,  vbTextCompare) 
       'Debug.Print .Address 
      End With 
     Next h 
    End With 
End Sub 
+0

我会改变这一行:'h.Address = Application.WorksheetFunction。 (h.Address,oldtext,newtext)'替换为:'h.Address = Replace(h.Address,oldtext,newtext)' –

+0

您的代码适用于我的情况,因此更改不是必需的。也许这只是替换所有东西的数量,所以表格中的数据也是如此。您应该上传数据的屏幕截图,而不是显示的文本,但超链接网址。 – Irithyll

+0

尝试在声明之后的一开始添加'Application.ScreenUpdating = False'和'Application.EnableEvents = False'。在代码结束时,再次将它们设置为true。 – Sun

回答

0

解决了这个通过使用记事本:

1)保存Excel电子表格,作为单个网页。 2)通过运行查找/替换选项在记事本中编辑此页面。 3)将此记事本文件保存为Excel文件 - 完成任务。

*网上发现的步骤

相关问题