我对VBA很陌生,并尝试创建一个使用VBA更改路径并自动从其他工作簿收集数据的Excel模板。基本上创建一个主文档来存储信息。
目前我正在使用以下代码:
Sub CallOtherWB()
Dim JobNumber As String
JobNumber = Range("C4").Value
With Range("D4")
.Formula = "='Y:\Public\QA Other\Scorecards\Copy of Scorecard v0.6 " &
JobNumber & ".xlsm'!Total"
End With
End Sub
但是我还没弄清楚如何让范围通过C4:C50并抓住输入的数据来编辑"='Y:\Public\QA Other\Scorecards\Copy of Scorecard v0.6 " & JobNumber & ".xlsm'!Total"
,这将进入D4:D50。
我搜索了其他问题并试图做一个循环,但无法理解如何使范围工作。 总结一下,我正在使用该代码在C列中输入信息,并为该信息替换D列中的“JobNumber”部分,以使其具有正确的文件名。
如果我需要进一步澄清这一点,请告诉我,并提前感谢您的帮助。 这也是我在Stackoverflow中的第一个问题所以我为任何错误道歉。
答案 0 :(得分:0)
循环过度。通过将值放入变量,您将按单元格修复它。这对您的目的来说效率很低。
Sub CallOtherWB()
Range("D4:D50").FormulaR1C1= "='Y:\Public\QA Other\Scorecards\Copy of Scorecard v0.6 "" & RC[-1] & "".xlsm'!Total"
End Sub
答案 1 :(得分:0)
我认为路径不正确,应该是这样的(请看'
字符和感叹号在哪里):
='C:\path_to_directory\[file_name.xlsx]sheet_name'!A1
您想要实现的目标可以在没有VBA的情况下完成。请查看INDIRECT功能。您需要在D4
单元格中输入以下公式:
=INDIRECT("'Y:\Public\QA Other\Scorecards\[Copy of Scorecard v0.6 " & C4 & ".xlsm]Total'!A1"
答案 2 :(得分:0)
以下代码对我有用。
WHERE
这里的诀窍是准确设置文件路径。您可以尝试替换下面的文件路径并测试它是否有效。
Sub CallOtherWB()
Dim JobNumber As String
Dim srcCell As String
Dim id As Integer
For id = 4 To 50
srcCell = "C" & id
JobNumber = Range(srcCell).Value
Range("D" & id).Value = "='C:\Users\banand\Desktop\test\[" & JobNumber & ".xlsx]Total'!D4"
Next
End Sub
如果以上操作不起作用,您可以尝试在单元格中键入以下值,D3(或您在目标Excel中选择的其他单元格),只需输入完整的文件路径,如下所示代码的文件路径部分正在正确翻译。
Range("D4").Value = "='Y:\Public\QA Other\Scorecards\[Copy of Scorecard v0.6 " & JobNumber & ".xlsm]Total'!D4"
希望这有帮助!