【问题标题】:Running excel macro from another workbook with dynamic File path location从另一个具有动态文件路径位置的工作簿运行 excel 宏
【发布时间】:2016-05-12 21:29:48
【问题描述】:

所以我在 Worksheet1 中有一个宏,可以打开另一个文件 (Worksheet2),然后复制并粘贴特定单元格并从 Worksheet1 传输到 Worksheet2。

一旦 Worksheet1 的宏完成将单元格从 Worksheet1 复制粘贴到 Worksheet2,Worksheet1 中的同一宏将触发另一个宏(嵌入在 Worksheet2 中)运行。

我的代码从打开 Worksheet2 开始工作,将数据从 worksheet1 复制并粘贴到 worksheet2,唯一的问题是 Worksheet1 中的宏触发运行嵌入在 Worksheet2 中的宏。

Sub FCY()
'
' Macro3 Macro
'

    Dim MainFile As Workbook
    Dim jnl As Workbook
    Dim RF As Workbook
    Dim FileExt As String

    Set MainFile = ActiveWorkbook

    'FileExt - Cells where is Worksheet2 being saved (example: Worksheet2.xls)
    FileExt = Sheets("REF Data").Cells(25, 7).Value & "." & Cells(25, 9).Value

    'Set jnl - a command to open the Worksheet2 by using the "FileExt" plus the File Location
    'which is entered in Cells (22,7) or Range("G22") (example - C:\Documents\Worksheet2.xls)
    Set jnl = Workbooks.Open(Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt)

    'Selecting the specified cells to copy and paste from Worksheet1 to Worksheet2
    MainFile.Activate
    Sheets("FCY").Select
    Range("B11:BJ11").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    jnl.Activate
    Range("B11:BJ11").Select
    ActiveCell.PasteSpecial xlPasteValues


    'Command which runs another Macro embedded in Worksheet2
    'Incorrect code to run the macro in Worksheet2
    Application.Run (Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt & SaveAstab)

'
End Sub

我已经知道可以使用以下代码来实现:

Application.Run ("'C:\Documents\Worksheet2.xls'!SaveAstab") 

注意:SaveAstab是Worksheet2中宏的名称

但是,如果您注意到上面的文件位置 + 文件名 + 扩展名是用户在特定单元格上输入的。我的意思是,文件位置+文件名+扩展名的详细信息是动态的,由用户输入。

我的问题是,如果我调用为文件位置 + 文件名 + 扩展名分配的单元格,我会遇到错误(运行时错误 9)。

‘Incorrect code to run the macro in Worksheet2
Application.Run (Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt & SaveAstab)

有人可以分享他们在这方面的专业知识吗?非常感谢

【问题讨论】:

  • 为什么使用 SaveAsTab 作为变量?它是在某个地方定义的吗,对我来说看起来你应该像这样使用“!SaveAstab”作为字符串
  • 嗨@DoktorOSwaldo,感谢您查看此内容。是的,“SaveAstab”是在 WorkSheet2 上定义的。它是另一个人开发的宏。我无法效仿他的所作所为,我需要时间才能完全按照他的所作所为。因此,我没有这样做,而是使用 application.run 代码在 Worksheet2 中使用 worksheet1 运行宏。
  • 不不,这不是我要问的 =) 我问的是你的最后一行代码:Application.Run (Worksheets("REF Data").Cells(22, 7).Value & " \" & FileExt & SaveAstab)
  • 只是拆分它并像 string runCommand = Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt & SaveAstab /Debug.print runCommand /Application.运行(运行命令)。然后看看是否和预期的一样。因为我认为有你的问题;)
  • 它捕获了正确的文件路径“'C:\Documents\”,但缺少文件名 (Worksheet2)、扩展名 (xls) 和宏名 (SaveAstab),因此出现错误。跨度>

标签: vba excel


【解决方案1】:

试试看……

Dim runCommand as String
runCommand = Chr(39) & Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt & Chr(39) & "!SaveAstab" 
Debug.print runCommand 
Application.Run(runCommand)

然后给我输出 uf debug.print

【讨论】:

  • 我得到了这个 C:\Documents\Worksheet2.xls!SaveAsTab 但它仍然没有运行宏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多