如何通过在单元格中输入文件名来更改我在代码中引用的另一个Excel工作簿的名称?

时间:2018-03-11 19:21:05

标签: vba excel-vba excel

这就是我要做的事情。

我的Excel工作簿InspectionFormTemplate3.4.xlsm作为模板存在,用于复制具有完全不同格式的各种其他工作簿中的数据。该代码适用于复制数据,但我有1500个报告要转换,每次我必须手动进入我的代码并按ctrl + f替换它引用要转换的报告的所有实例。相反,我将数据输入单元格(S50)并尝试用名为oldfilename的变量替换引用的文件名。这就是给我一个错误,这就是我所坚持的。

我已经环顾了好几个小时才能找到能够做我想做的事情,但我根本没有VBA的实际经验。我认为这可能只是一个简单的语法错误。

所以,这是我目前用我当前代码尝试的内容。

Private Sub ConvertButton_Click()

Dim oldfilename As String

oldfilename = Range("S50")

'建筑物名称和日期

Workbooks("InspectionFormTemplate2018.3.4.xlsm").Worksheets("COVER PAGE").Range("C9").Value = Workbooks("ReporttoConvert.xls").Worksheets("Cover Page").Range("B5").Value

显然,“ReporttoConvert”是实际工作簿名称的占位符。它在我手动插入文件名时起作用,但我需要它看起来更像这样:

Workbooks("oldfilename")

以便将其更改为我在单元格S50中输入的文件名。我敢肯定这可能很简单,但我不知道这将被称为或如何做到这一点。

1 个答案:

答案 0 :(得分:0)

试试这个,你启用宏的工作簿应该保存在与其他工作簿相同的文件夹中,否则你将不得不改变'ThisWorkbook.path ...

Dim OpenWb As String
OpenWb = ThisWorkbook.Worksheets("COVER PAGE").Range("S50").Value

Workbooks.Open Filename:=ThisWorkbook.Path & "\" & OpenWb

ThisWorkbook.Worksheets("COVER PAGE").Range("C9").Value = Workbooks(OpenWb).Worksheets("Cover Page").Range("B5").Value