快速版本:我在一个正在使用的文件中断了链接,因为它们指的是别人的硬盘.在其他人的文件中出现错误,该文件通过在公式之前附加撇号将所有公式转换为文本.我写了一个宏来解决这个问题,但文件中有大量的外部链接.宏基本上将公式从第一行更改为下面的第二行,只需删除不必要的撇号.
1) '='C:\OtherPersonsFolderPath\[FileName.xlsm]Sheet1'!A1
2) ='C:\OtherPersonsFolderPath\[FileName.xlsm]Sheet1'!A1
Run Code Online (Sandbox Code Playgroud)
如果我手动执行此操作,Excel将打开一个对话框,要求我通过指向正确的文件在FileName.xlsm中"更新值".我不想更新文件路径:我打算将此文件路由回原始所有文件的所有者,sans撇号.如果我点击该对话框上的"取消"按钮,我会得到预期的效果:公式更新为我需要的内容,并且值会更改为当它是一个工作链接时所用的任何内容.如果我每次弹出时手动点击框中的"取消",它工作正常,但我已经有数千个单元格遍历数十张.我需要一种方法告诉VBA在该框中说"取消",或者防止该框出现在第一位.有任何想法吗?我的代码如下:
Public Sub MyBugFix()
Application.Calculation = xlCalculationManual
'Note that I unsuccessfully tried options like "ThisWorkbook.UpdateLinks = xlUpdateLinksNever" and "Application.DisplayAlerts = False" here
Dim WS_Count As Integer
Dim I As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
Sheets(I).Visible = True
Sheets(I).Select
Range("A1:BZ400").Select
'Simple fix for embedded apostrophes in formulas (e.g., an equals sign in an IF statement)
Selection.Replace What:="'=", Replacement:="=", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'More complex fix for apostrophes at …Run Code Online (Sandbox Code Playgroud)