在VBA的范围擅长

我对VBA相当陌生,试图创build一个使用VBA更改path并自动从其他工作簿收集数据的Excel模板。 基本上创build一个主文档来存储信息。

目前我正在使用以下代码:

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,并抓住input的数据编辑"='Y:\Public\QA Other\Scorecards\Copy of Scorecard v0.6 " & JobNumber & ".xlsm'!Total"将进入D4:D50。

我search了其他问题,试图做一个循环,但无法理解如何使范围工作。 总而言之,我使用该代码来inputC列中的信息,并用该信息replaceD列中的“JobNumber”部分,以使其具有正确的文件名。

请让我知道,如果我需要进一步澄清,并提前感谢帮助。 这也是我在Stackoverflow中的第一个问题,所以我对任何错误表示歉意。

下面的代码为我工作。

 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 

这里的技巧是准确地设置文件path。 你可以尝试replace下面的文件path,并testing它是否工作。

  Range("D4").Value = "='Y:\Public\QA Other\Scorecards\[Copy of Scorecard v0.6 " & JobNumber & ".xlsm]Total'!D4" 

如果上述不起作用,可以尝试在单元格D3中键入下面的值(或者在目标excel中select其他某个单元格),只需要完整的文件path,看下面的文件path部分代码正确翻译。

  ='Y:\Public\QA Other\Scorecards\[Copy of Scorecard v0.6 " & JobNumber & ".xlsm]Total'!D4:D50" 

希望这可以帮助!

循环是矫枉过正。 通过将值放入一个variables,您正在修复它每个单元格。 这对您的目的是无效的。

 Sub CallOtherWB() Range("D4:D50").FormulaR1C1= "='Y:\Public\QA Other\Scorecards\Copy of Scorecard v0.6 "" & RC[-1] & "".xlsm'!Total" End Sub 

我相信一个道路是不正确的,它应该是这样的(请看'字符和感叹号'在哪里):

='C:\path_to_directory\[file_name.xlsx]sheet_name'!A1

你想要达到的目标可以在没有VBA的情况下完成。 请看看INDIRECTfunction。 您需要在D4单元格中input以下公式:

=INDIRECT("'Y:\Public\QA Other\Scorecards\[Copy of Scorecard v0.6 " & C4 & ".xlsm]Total'!A1"