VBA范围优秀

时间:2017-10-31 22:51:21

标签: excel vba excel-vba

我对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中的第一个问题所以我为任何错误道歉。

3 个答案:

答案 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"

希望这有帮助!