Bruke anrops å kjøre VBA-makroer

March 15  by Eliza

Mens det er mulig å kjøre en VBA-makro fra en annen makro ved hjelp av tilnærming presentert i forrige tips, det er tider når en slik tilnærming bare ikke vil gjøre jobben. I stedet må du se etter en løsning som gjør at en feilsikker metode for å kjøre en makro. En tilnærming er å bruke Call kommandoen i VBA. Før du kan bruke kommandoen, derimot, må du legge til et prosjekt referanse til den kallende prosjekt. (Prosjekter er hvordan VBA refererer til innsamling av VBA-moduler, skjemaer, etc. i en mal. For eksempel refererer VBA til Normal-malen som "Normal" prosjekt.) Referanser mellom prosjekter gir et entydig definert kobling mellom et kall prosjekt og prosjektet for å bli kalt.

For eksempel, la oss si at MyMacro makro (den du ønsket å kjøre) var en del av CoolDoc mal. Å bruke Call riktig i VBA, må du legge til en referanse til CoolDoc.dotm prosjektet til makro som vil kalle MyMacro. Dessverre er dette en litt lettere sagt enn gjort på grunn av en potensiell "gottcha" i VBA: ". TemplateProject" Annet enn "Normal" prosjekt, gir VBA alle brukeropprettede mal prosjekter standard prosjektnavnet på Dette kan skape problemer siden å ha et unikt prosjekt navn er best når som ønsker å være konkret om makroen til å kjøre. Å gi CoolDoc.dotm et unikt prosjekt navn, gjør du følgende:

  1. Kontroller at CoolDoc.dotm malen er åpen.
  2. Vise VBA editor ved å trykke Alt + F11.
  3. I prosjektvinduet øverst til venstre i VBA editor, høyreklikker du på mappen for malen. Siden CoolDoc er en mal, er mappen som heter TemplateProject (CoolDoc). Word viser en kontekstmeny.
  4. Velg TemplateProject Properties alternativ fra kontekstmenyen. Dialogboksen Egenskaper vises.
  5. I prosjektnavnefeltet, skriv inn et passende navn for prosjektet. (CoolDoc ville være et fint navn, så lenge den er unik.)
  6. Klikk på OK. Dialogboksen forsvinner og prosjektet er omdøpt til CoolDoc.

Hvis du utvider alle objekter under CoolDoc, bør du se en modul eller to i prosjektet. (Husk; VBA-makroer finnes i moduler.) For å få til denne diskusjonen, la oss anta at MyMacro (den du ønsker å kjøre) er inneholdt i HotStuff modul av CoolDoc prosjektet. (Alle disse objektnavnene vil bli brukt kort tid. På dette punktet må du bare å merke seg navnene som brukes for prosjektet og modulen med makro.)

Nå er du klar til å faktisk legge CoolDoc prosjektet henvisning til prosjekt som makroen vil bli kalt. I dette tilfellet, la oss anta vil du kalle det fra en makro i Normal prosjektet. Du kan legge til referansen ved å gjøre følgende (forutsatt at VBA editor er fortsatt åpen):

  1. I prosjektvinduet øverst til venstre i VBA editor, velg Normal mappe.
  2. Velg Referanser fra Verktøy-menyen. Dialogboksen Referanser vises. (Se figur 1)

    Bruke anrops å kjøre VBA-makroer

    Figur 1. dialogboksen Referanser.

  3. I listen over tilgjengelige referanser, finne CoolDoc.
  4. Sørg for at boksen til venstre for CoolDoc alternativet er valgt.
  5. Klikk på OK.

Endelig er du klar til å legge til Call uttalelse til makro som du vil ringe MyMacro. Kommandolinjen vil se slik ut:

Ring CoolDoc.HotStuff.MyMacro

Dette kommandolinje, VBA til å kjøre ønsket makro, uten noen sjanse til tvetydighet. Det er noe viktig å merke seg imidlertid. Sette en referanse til CoolDoc prosjektet i Normal gjør Normal belastning en kopi av CoolDoc hver gang Word startes, selv om det ikke er noen dokumenter åpne som er basert på den CoolDoc.dotm mal.

Denne lasting av CoolDoc hever og åpenbare spørsmålet: Hva er poenget, i VBA, for å sette MyMacro i CoolDoc.dotm siden det ikke vil spare lastetid eller ressursbruk? Det korte svaret er at det ikke er noe poeng, annet enn CoolDoc.dotm muligens være en mer opplagt sted å sette kode som kun omhandler ting i CoolDoc.dotm. (Hele dette temaet fornuftig prosjektering er altfor stort et emne å diskutere i denne ene spissen.)

WordTips er din kilde for kostnadseffektiv Microsoft Word trening. (Microsoft Word er den mest populære tekstbehandlingsprogrammet i verden.) Dette tipset (11412) gjelder for Microsoft Word 2007 og 2010. Du kan finne en versjon av dette tipset for den eldre menygrensesnittet i Word her: Bruke anrops å kjøre VBA makroer.