/ / Neprenosné chovanie makra Excel VBA - excel-vba, excel-2010, vba, excel

Neprenosné správanie makra programu Excel VBA - excel-vba, excel-2010, vba, excel

Používam program Excel 2010 a pridávam malé makro VBAdo tabuľky. (Účelom makra je zobrať údaje z aktívneho hárka a exportovať ich do súboru CSV, ale to je tangenciálne k otázke.) Makro určuje výstupnú cestu k súboru pomocou ThisWorkbook.Path. Na panel nástrojov Rýchly prístup som tiež pridal vlastné tlačidlo na aktiváciu makra.

Po získaní funkčného algoritmu na mieste v mojomexperimentálna tabuľka (Test.xlsm, uložená v jednej ceste), vytvoril som kópiu tabuľky v inej ceste a premenoval som ju na _Database.xlsm. Potom som otvoril súbor _Database.xlsm a spustil makro. Na moje prekvapenie bol súbor zapísaný na pôvodnú cestu, nie na novú. A pri pohľade dolu na panel s nástrojmi Windows som videl, že program Excel otvoril pôvodný súbor tiež na pôvodnej ceste.

Po dlhom blúdení s vylepšeniami kódukontrola vlastností a podobne som nakoniec zistil, že tomu môžem zabrániť otvorením skopírovanej tabuľky, odstránením tlačidla panela nástrojov Rýchly prístup, opätovným pridaním a následným uložením súboru. Moje otázky sú:

  1. Prečo nie je makro „samostatne prenosné“ spolu s tabuľkou? Teda prečo si kópia zachováva tento druh väzby na pôvodný list?

  2. Existuje spôsob, ako môžem vytvoriť alebo upraviť makro tak, aby bolo v tomto zmysle prenosné?

odpovede:

1 pre odpoveď č. 1

Ak chcete, aby panel s nástrojmi cestoval s asúbor (tj. nie vždy odkaz späť na pôvodnú verziu), musíte ho pridať do samotného súboru, nie do QAT. QAT „vie“ iba skutočný súbor, s ktorým ste prepojili tlačidlo.

Môže byť lepšie pridať makro do osobného zošita s makrami a potom ho nechať len pracovať s ActiveWorkbookom.

Ak ho však chcete distribuovať ďalším používateľom, môžete makro ponechať v zošite „databázy“ a pridať vlastnú časť pásky. Pozri: http://www.rondebruin.nl/win/s2/win001.htm