Excel 如何让VBA宏在整个工作簿的公式中执行搜索/替换?
我将Excel工作簿分发给许多用户,他们应该在XLSTART文件夹中预装一个特定的宏文件 如果他们没有正确安装宏,并将工作簿发送回我,则任何依赖于它的公式都包括宏的完整路径,例如:Excel 如何让VBA宏在整个工作簿的公式中执行搜索/替换?,excel,replace,vba,Excel,Replace,Vba,我将Excel工作簿分发给许多用户,他们应该在XLSTART文件夹中预装一个特定的宏文件 如果他们没有正确安装宏,并将工作簿发送回我,则任何依赖于它的公式都包括宏的完整路径,例如: 'C:\Documents and Settings\richard.tallent\Application Data\ Microsoft\Excel\XLSTART\pcs.xls'!MyMacroFunction() 我想创建一个快速宏,用于从工作簿中的每个公式中删除不正确的路径 我已经使用GetSpecia
'C:\Documents and Settings\richard.tallent\Application Data\
Microsoft\Excel\XLSTART\pcs.xls'!MyMacroFunction()
我想创建一个快速宏,用于从工作簿中的每个公式中删除不正确的路径
我已经使用GetSpecialFolder(一个工作正常的外部函数)成功地检索了这个特殊文件夹,但是下面显示的替换调用本身抛出了一个“应用程序定义的或对象定义的错误”
自动搜索和替换并不是我的强项,我做错了什么
我已经注释掉了一些似乎不重要的参数。尝试以下操作:
Sub FormulaFindAndReplace(phrase As String)
For Each Sheet_Select In ActiveWorkbook.Worksheets
Sheet_Select.Activate
Set Found_Link = Cells.Find(what:=phrase, After:=ActiveCell, _
LookIn:=xlFormulas, lookat:=xlPart, searchorder:=xlByRows, _
searchdirection:=xlNext, MatchCase:=False)
While UCase(TypeName(Found_Link)) <> UCase("Nothing")
Found_Link.Activate
Found_Link.Formula = Replace(Found_Link.Formula, phrase, "")
Set Found_Link = Cells.FindNext(After:=ActiveCell)
Wend
Next Sheet_Select
End Sub
这是从以下地方黑客入侵的:
无需使用此函数,您可以使用以下语句:
'Replace with a reference to other workbook
xlBook.ChangeLink Name:= _
"C:\LISTADOS\reporte_gestion_sucursales\modelo_vaciado\modelo_reporte.xlsx", _
NewName:=fileIn2, Type:=xlExcelLinks
FormulaFindAndReplace "'" & GetSpecialFolder(AppDataFolder) & "\Microsoft\Excel\XLSTART\mymacro.xls'!"
'Replace with a reference to other workbook
xlBook.ChangeLink Name:= _
"C:\LISTADOS\reporte_gestion_sucursales\modelo_vaciado\modelo_reporte.xlsx", _
NewName:=fileIn2, Type:=xlExcelLinks