excel - 从另一个 Excel 宏运行 Excel VBA 宏-错误 : Can't find PERSONAL. XLSB

标签 excel vba

我正在尝试跨多个文件运行宏。我以前使用过这个脚本并且它有效,但也许我无意中改变了一些东西?我遇到的问题是我收到一条错误消息“无法找到 PERSONAL.XLSB,它是否可能已被移动...”但是,我使用的是 .xlsb 文件的完整路径并且我正在运行该文件中的宏。
这是我的脚本:

'Sub SHELLforMacros()

   Dim wbMatrix As Workbook
   Dim strFileName As String
   Dim strPath As String
   Dim strExt As String
   Dim objWorkbook As Workbook
   Dim ws As Worksheet

    'This is the folder of files it needs to run through:
      strPath = "C:\Users\myname\Desktop\All_mricgcm3_files\45\Fall45\test\"
      strExt = "csv"

      strFileName = Dir(strPath & "*." & strExt)

      While strFileName <> ""
      
           Set wbMatrix = Workbooks.Open(strPath & strFileName)
           'Set objWorkbook = ActiveWorkbook

         Application.Run "C:\Users\myname\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB'!Graph_NEW"

           wbMatrix.ActiveWorkbook.Save
           wbMatrix.Close SaveChanges:=True

            strFileName = Dir
      Wend
End Sub
我还尝试将 PERSONAL.XLSB 文件放入与其需要运行的文件相同的文件夹中(并更改路径以反射(reflect)这一点)。我尝试从文件夹中的一个文件而不是从 PERSONAL.XLSB 运行或启动它,而不使用完整路径。我不明白为什么找不到。谢谢。

最佳答案

从另一个工作簿运行宏可以很简单,我将在下面的步骤中尝试描述。
但是运行“跨多个文件的宏”并不意味着在调用宏方面进行任何修改。您没有显示宏代码,但如果它引用了 ThisWorkbook与要处理的一样,它必须引用所需的( ActiveWorkbookwb ,如果以前是 Set )。
如果“我正在从该文件运行宏”表示运行宏 来自 “PERSONAL.XLSB”,它应该简单地称为:

  Graph_NEW
正如已经建议的那样。如果你坚持使用Application.Run ,即使没有必要,也可以试试:
  Application.Run "Graph_NEW"
现在,如果你运行代码 在不同的工作簿中 并且需要从“PERSONAL.XLSB”运行宏,最简单的方法是使用:
  Application.Run "PERSONAL.XLSB!Graph_NEW"
当然,“PERSONAL.XLSB”应该是打开的。
如果您坚持使用“PERSONAL.XLSB”完整路径,它也可以工作,您可以使用与您正在尝试的类似的东西。优点是,如果工作簿已关闭,它将打开以运行宏 :
Application.Run 
  Application.Run "'C:\Users\myname\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB'!Graph_NEW"
您的代码缺少前缀 "'" .如果 没有它也可以工作工作簿完整路径中不存在任何空格 ,但是您应该删除“!”之前的那个...在您的情况下,如果“myname”不包含任何空格,则它可能会丢失。
您还可以添加对“Personal.xlxb”的引用 VBA项目并调用宏就像您在工作手册中所做的那样 .为此,之前更改初始/现有标准名称,例如“PersVBProject”(右键单击 VBE 的“项目资源管理器”中的项目,选择“VBAProject 属性...”,更改现有名称并按“确定”) .
所以,简单地称之为:
   Graph_NEW

关于excel - 从另一个 Excel 宏运行 Excel VBA 宏-错误 : Can't find PERSONAL. XLSB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69340870/

相关文章:

vba - 如何使用 VBA 宏附加到 word 文档

security - 我需要 VBA 库引用

vba - 检测其他工作簿中对单元格的引用?

excel - 删除O列中包含特定单词的所有行的最佳代码?

c# - 将日期单元格从 Excel 导入到 ASP SQL DB 时包含时间

VBA - 离开执行直到到达特定行

vba - 在执行当前函数之前检查函数

vba - Excel/VBA : Using a Function to Retrieve a Column Letter based on Column Title

VBA 灰色复选框

excel - 如何从多行/列 Excel 电子表格生成格式化的 Word 报告