Я використовую Excel 2010 і додаю невеликий макрос VBAдо електронної таблиці. (Призначення макросу - взяти дані на активному аркуші та експортувати їх у файл CSV, але це дотично до питання.) Макрос визначає вихідний шлях до файлу, використовуючи ThisWorkbook.Path
. Я також додав спеціальну кнопку на панель швидкого доступу, щоб активувати макрос.
Отримавши робочий алгоритм на місці векспериментальної таблиці (Test.xlsm, що зберігається в одному шляху), я зробив копію електронної таблиці в іншому шляху і перейменував її на _Database.xlsm. Потім я відкрив _Database.xlsm і запустив макрос. На мій подив, файл було записано на початковий шлях, а не на новий. І, подивившись на панель інструментів Windows, я побачив, що Excel також відкрив оригінальний файл у своєму початковому шляху.
Після численних хитрощів з налаштуваннями коду,перевіряючи властивості та подібні, я нарешті виявив, що можу запобігти цьому, відкривши скопійовану електронну таблицю, видаливши кнопку панелі швидкого доступу, повторно додавши її та збереживши файл. Мої запитання:
Чому макрос не є "самостійно переносним" разом із електронною таблицею? Тобто, чому копія підтримує такий тип прив'язки до оригінального аркуша?
Чи можу я створити або змінити макрос, щоб зробити його портативним у цьому сенсі?
Відповіді:
1 для відповіді № 1Якщо ви хочете, щоб панель інструментів / кнопка подорожувала за допомогоюфайл (тобто не завжди посилання назад на оригінальну версію), тоді вам потрібно додати його до самого файлу, а не до QAT. QAT "знає" лише про фактичний файл, до якого ви прив'язали кнопку.
Можливо, було б краще додати макрос до своєї особистої книги макросів, а потім просто дати йому працювати на ActiveWorkbook.
Однак, якщо ви хочете поширити його серед інших користувачів, ви можете зберегти макрос у книзі "база даних" і додати спеціальну частину стрічки. Подивитися: http://www.rondebruin.nl/win/s2/win001.htm