我在Excel上创建了一个自定义功能区选项卡,如Excel_app_v1.xlsm
,此功能区选项卡下的按钮连接到宏。因此,当我单击此按钮时,宏会执行一些表导入应用程序。
第一件奇怪的事情是我创建了此功能区选项卡和仅用于此Excel文件的按钮,但功能区选项卡和按钮显示在所有其他Excel文件中,即使原始Excel文件Excel_app_v1.xlsm
不是开。
第二个问题是我使用" Save-as"创建了我以前的Excel文件的第二个版本。选项。所以新的Excel文件就像Excel_app_v2.xlsm
。当我单击功能区选项卡下的按钮时,它会打开第一个Excel文件Excel_app_v1.xlsm
,即使它未打开。我删除了第一个Excel文件,但后来出现了错误,例如"无法在路径上找到Excel_app_v1.xlsm
"。
显然,自定义功能区选项卡下的宏按钮链接到第一个Excel文件,但我找不到更改此选项的菜单选项。我在vba代码中的所有ThisWorkbook
表达式之前添加了sheet
,但它没有解决问题。按钮单击仍然试图打开旧的Excel文件。
VBA代码如下。该按钮链接到Sub ImportTable
。首先,它询问用户用户是否想要继续该过程。它会在单击按钮后立即打开上一个Excel文件,同时显示消息框。
Sub ImportTable()
Application.ScreenUpdating = False
YearMonth = ThisWorkbook.Sheets("tab1").Cells(11, 2).Value
' The Macro button opens the previous Excel file before clicking Yes or No on the message box
answer = MsgBox("Warning! Brings the newest source file. You want to continue?", vbYesNo + vbQuestion, "")
If answer = vbYes Then
RunSASCodeViaBatFile ' Another Sub which runs bat file to run a SAS-code. But it doesn't matter. Because the problem happens before I click on Yes or No.
InsertSASFileIntoExcel
Else ' Nothing happens if clicking No on the Message Box
End If
End Sub
答案 0 :(得分:1)
快速解决这个问题的线索由roncruiser发布在下面,稍作扭曲。
网络上的每个人似乎都认为PERSONAL.XLSB
是关键所在 - 不。事实上,玩这个文件只会让我感到困惑甚至更长时间。这就是我做的事情:
打开生成的文件,编辑出导致你如此悲痛的另一个文件的违规引用 - 例如:
<mso:button idQ="x1:HideRows_0_EA10D6" label="HideRows" imageMso="_3DPerspectiveDecrease" onAction="!HideRows" visible="true"/>
我在idQ-"x1...
之后取出了所有内容,直到宏的实际名称。我也在onAction="...
中找到了相同的外部参考文献。把所有东西都拿到了爆炸标记上。
将此保存在您希望的任何名称下,但使用相同的扩展名(对于我的设置,它被称为ExportedCustomizations.exportedUI
(是的,那么长的扩展名));
重复此处的前几个步骤,但这次要导入您编辑过的文件。
Voila,一切都是金色的。
不要乱用现有的工作并从头开始。为我带来了一种魅力,所以对于线索来说,这是一个重要的提示。
答案 1 :(得分:0)
只是要确认上面写的总结。
就像他说的那样,它工作得很好:删除指向特定工作簿的“ x1:”之后的部分,直到maccro名称的开头。 例如: 当您导出带有maccro的自定义功能区时,其内容将如下所示: idQ =“ x1:C:_FolderName_Filename.xlsm_Fill_Formulas_Cells”
然后删除提到的部分,它将变成这样:
idQ =“ x1:Fill_Formulas_Cells”
与onAction相同,仅保留Maccro名称 然后,只要您修改了宏的名称,然后您必须在exportedUI文件中对其进行修改,只要您在工作簿中的宏名称保持一致,它就可以完美地工作。
然后,当您重新加载新文件时,如果将指针放在上面,则可以在“自定义”按钮上的“ Excel选项”自定义功能区中签入,您将看到“ Maccro:您的Maccro名称”
不是maccro的文件路径。
至少不必为此使用自定义UI编辑器或其他任何东西,例如,个人宏,如果您不介意在所有woorkbook中安装自定义功能区。
很明显,但仍要提醒一下,您需要在工作簿中包含该宏,此过程仅在此位置以调用与该工作簿相关的宏,它不包含该宏的代码
欢呼 罗曼(Romain)