Кнопка макроса под настроенной вкладкой ленты пытается открыть старый файл Excel

Я создал пользовательскую вкладку ленты в своем Excel как Excel_app_v1.xlsmи кнопка под этой вкладкой ленты связана с макросом. Поэтому, когда я нажимаю эту кнопку, макрос выполняет некоторые приложения для импорта таблиц.

Первая странная вещь заключается в том, что я создал эту вкладку ленты и кнопку только для этого файла Excel, но вкладка ленты и кнопка отображаются во всех других файлах Excel, даже если исходный файл Excel Excel_app_v1.xlsm не открыт

Вторая проблема заключается в том, что я создал вторую версию моего предыдущего файла Excel с опцией "Сохранить как". Таким образом, новый файл Excel похож на Excel_app_v2.xlsm, Когда я нажимаю кнопку под вкладкой ленты, открывается первый файл Excel. Excel_app_v1.xlsmдаже если он не открыт. Я удалил первый файл Excel, но затем я получил сообщение об ошибке "Не удалось найти Excel_app_v1.xlsm на пути".

Очевидно, что кнопка макроса под настраиваемой вкладкой ленты связана с первым файлом Excel, но я не смог найти пункт меню, чтобы изменить это. я добавил ThisWorkbook прежде чем все sheet выражения в коде VBA, но это не решило проблему. Нажатие кнопки все еще пытается открыть старый файл 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

4 ответа

Подсказка, как быстро это исправить, была размещена ниже roncruiser с одним небольшим поворотом.

Все в сети, кажется, чувствуют, что PERSONAL.XLSB ключ здесь - нет. На самом деле, игра с этим файлом только смутила меня еще дольше. Вот что я сделал вместо этого:

  1. Щелкните правой кнопкой на ленте и выберите "Настроить ленту";
  2. Перейдите к оскорбительным макросам, которые вы установили с помощью кнопок;
  3. Найдите и нажмите Импорт / Экспорт;
  4. Экспортируйте ваши пользовательские кнопки (макросы будут работать очень хорошо);
  5. Откройте этот получившийся файл и отредактируйте оскорбительные ссылки на другой файл, который вызывает у вас столько горя - пример:

    <mso:button idQ="x1:HideRows_0_EA10D6" label="HideRows" imageMso="_3DPerspectiveDecrease" onAction="!HideRows" visible="true"/>
    

    Я вынул все после idQ-"x1... до фактического имени макроса. Я также вынул ту же внешнюю ссылку, найденную в onAction="... Принять все до отметки взрыва.

    Сохраните его под любым именем, но с тем же расширением (для моей настройки оно называлось ExportedCustomizations.exportedUI (да, это длинное продолжение));

  6. Повторите первые несколько шагов здесь, но на этот раз импортируйте отредактированный файл.

  7. Вуаля, все золотое.

Нет необходимости возиться с уничтожением существующей работы и начинать все сначала. Сработало для меня заклинание, так что большой совет от "Шляпы" найти подсказку.

Просто чтобы подтвердить, что сумгейн уже написали выше.

Это прекрасно работает, просто сделайте, как он сказал: удалите часть после "x1:", которая относится к конкретной книге, до начала имени макро. пример: при экспорте пользовательской ленты с прикрепленным к ней макрокомандой она будет выглядеть следующим образом: idQ="x1:C:_FolderName_Filename.xlsm_Fill_Formulas_Cells"

Затем вы удалите упомянутую часть, и она станет такой:

IDQ="x1:Fill_Formulas_Cells"

То же самое для onAction, сохраняйте только имя макроса. Тогда оно будет работать идеально, пока вы не измените имя макроса в книге, если вы изменили имя макроса, то вы должны изменить его в файле exportedUI.

Затем, когда вы перезагрузите новый файл, вы можете проверить в настройках ленты параметров Excel на кнопке настройки, если вы поместите указатель на нее, вы увидите "Maccro: Имя вашего макроса"

И не путь к файлу, из которого был создан макрос.

Нет необходимости использовать пользовательский редактор пользовательского интерфейса или какие-либо другие вещи, такие как персональный макрокомандат, по крайней мере для этого, и если вы не хотите иметь собственную ленту во всех ваших рабочих книгах.

Конечно, это очевидно, но все же полезно напомнить об этом, вам нужно иметь в рабочей книге макрокоманду. Эта процедура предназначена для вызова макрокоманды, связанной с рабочей книгой, она не содержит код макрокоманды.

Ура Ромен

Это все еще работает? Я делал это в прошлом с успехом, но не могу заставить его работать сейчас. Я экспортирую файл, редактирую его и импортирую обратно. Похоже, он работает, но когда я закрываю панель параметров ленты, мои пользовательские кнопки исчезают.

Точно такая же вещь произошла со мной. Есть способ обойти это.

По умолчанию, когда вы создаете макрос в Excel и запускаете его через пользовательскую кнопку ленты, этот макрос кнопки ленты работает только в книге, в которой он находится.

Чтобы обойти это и чтобы макросы кнопок работали во всех книгах, вам необходимо создать личную книгу макросов. Затем любые макросы, которые вы храните в своей личной книге на компьютере, становятся доступны вам в любой книге, когда вы запускаете Excel на этом же компьютере.

Создать персональную макрокоманду

Чтобы заставить те же макросы кнопки ленты работать на другом компьютере, вам необходимо скопировать книгу личных макросов на другой компьютер и сохранить ее в папке XLSTART. Ссылка выше содержит всю необходимую вам информацию.

Примечание. Удалите старые макросы кнопки ленты. Убедитесь, что вы создали новые макросы кнопок ленты, которые ссылаются на макросы из вашей личной рабочей книги макросов.

Другие вопросы по тегам