Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA Excel:如何使用用户单元格输入编辑链接?_Excel_Replace_Vba - Fatal编程技术网

VBA Excel:如何使用用户单元格输入编辑链接?

VBA Excel:如何使用用户单元格输入编辑链接?,excel,replace,vba,Excel,Replace,Vba,我正在尝试制作一个宏,其中包括更新多个单元格中的外部文件链接,其中,用户在另一个选项卡中指定了单元格中当前的文件位置以及要将其更改为的文件位置 我试图通过查找/替换来实现这一点;如果我尝试使用代码中指定的文本执行此操作: Range("b3").Formula = Replace(Range("B3").Formula, "\\folder\file", "\\folder\newfile") 然后它将替换此文本,链接将正确更新。如果我使用输入更改位置,例如oldlocation和newloc

我正在尝试制作一个宏,其中包括更新多个单元格中的外部文件链接,其中,用户在另一个选项卡中指定了单元格中当前的文件位置以及要将其更改为的文件位置

我试图通过查找/替换来实现这一点;如果我尝试使用代码中指定的文本执行此操作:

Range("b3").Formula = Replace(Range("B3").Formula, "\\folder\file", "\\folder\newfile")
然后它将替换此文本,链接将正确更新。如果我使用输入更改位置,例如oldlocation和newlocation:

这也行。但是如果我更改了位置的定义(例如B3:“\folder\file”):


它不再工作-在代码中的行上传递,没有更改或错误。我做了一个快速检查,范围(“b3”)。文本和“\folder\file”似乎都是文本字符串;在那之后,我被难住了。我尝试了几种不同的查找/替换格式,但结果都一样。我错过了什么

问题在于将要替换的字符串定义为

  oldlocation= Range("b3").text
oldlocation
变量将具有单元格的值(您在单元格中看到的数据),而不是包含当前引用的单元格的公式,因此replace函数不会找到要替换的字符串。
您必须从
范围(“b3”).formula
字符串中提取要替换的位置并使用它。

尝试添加调试。在replace命令之前打印oldlocation、newlocation以查看实际读取的内容。也许试试.value而不是.text?如果需要,可以使用str()函数将其转换为字符串;这就解决了问题。很高兴听到这个消息。请将答案标记为其他人的解决方案!
oldlocation= Range("b3").text
newlocation= Range("b4").text
  oldlocation= Range("b3").text