19. august 2004 - 14:04Der er
18 kommentarer og 2 løsninger
Udfør macroer der ligger i en anden fil
Hej.
Jeg søger råd til hvordan man nemmest, og ikke mindst bedst, klarer nedenstående opgave:
Jeg har en Excel fil med flere ark. Disse ark benytter sig at en masse macroer. Disse macroer vil jeg nu gerne flytte over i en Excel fil for sig selv, sådan så jeg let kan rette eventuelle fejl og dermed ikke igen skal sende den rettede Excel fil rundt til alle dem der bruger det.
Hvordan kalder man derfor bedst en macro som ligger i et andet ark? Jeg skulle gerne kunne sætte parametre på når jeg kalder macroerne i det andet ark.
Skal man "bare" åbne filen med macroer når man åbner den anden fil, og så er alt som det plejer? Vil det give nogen problemer når der er flere der skal bruge filerne på samme tid?
Proceduren for at lave en xla fil er (så vidt jeg lige husker):
- Opret et tomt ark med alle dine makroer - Gem regnearket som en xla-fil ("Gem som" filtype "Tilføjelsesprogram" eller et eller andet med xla)
Sværere er det faktisk ikke.
For at få adgang til makroerne, skal du
- Vælg menuen Funktioner/Tilføjelsesprogrammer - Find din fil på listen eller brug funktionen "Gennemse" til at finde filen (Den dukker automatisk op på listen, hvis filen er gemt i mappen "Bibltek" i "Programmer\Microsoft Office\Office\")
sjap: Jeg kan ikke helt få det til at virke. Jeg har oprettet en .xla fil med et par macroer for at teste det. Derefter har jeg lavet et alm. Excel dokument hvor jeg har tilføjet mit .xla dokument under Tools -> Add-ins. Min .xla fil bliver tilføjet uden fejl, og hvis jeg går ind i VBA editoren, så er .xla filen da også åben når jeg åbner mit alm. Excel dokument. Problemet er bare at jeg ikke umiddelbart kan tilgå de macroer jeg har i min .xla fil - jeg får bare fejlen "Sub or Function not defined"
Public Function MyReturnThis(pMessage As String) As String MyReturnThis = "Du skrev: " & pMessage End Function
Den funktion vil jeg så gerne kalde fra. f.eks. en knap i mit andet Excel dokument.
tmpstr = MyReturnThis("Dette er en anden test") virker ikke - får fejlen som beskrevet i 07:50:46. Hvis jeg sætter Application.Run ind, så kommer der en anden fejl.
Mine Subs og Functions skal udelukkede kaldes fra en anden macro!
Du har gemt en funktion i din xla-fil, der har samme navn som en funktion i det regneark du har åbnet. Hvis det er den samme funktion, skal du slette den ene. Hvis det er forskellige funktioner, kan du jo lige prøve at omdøbe den ene.
Prøv i project-explorer at stille dig på selve xla-projetet. Giv nu dit xla project et sigende navn og gem.
Nu går du så til dit nye projekt og sætter så referencen til dit sigende navn for xla-projektet. Så skulle du gerne undgå konflikter som skyldes at der i reference listen er flere navne med navnet VBA-project
Men det vil vel ikke give nogen problemer at der er flere som benytter sig at dette på samme tid? Altså at der f.eks. er 3 brugere som åbner mit Excel dokument som jo henviser til den samme .xla fil.
Under alle omstændigheder bedes bak lave et svar så i kan deles om pointene :)
Du må selv teste om det giver problemer. Der sker det når brugerne skal indsætte din add-inn at de bliver spurgt om de vil kopiere den over i deres eget xla-bibliotek. Hvis de gør det er der ingen problemer.
Har lige testet det lidt, og det ser ikke ud til at give problemer, at der er flere brugere der har det samme dokument åben med henvisningen til .xla dokumentet.
Fandt desuden af af det ikke er nødvendigt at tilføje .xla dokumentet i det normale Excel dokument som beskrevet i 07:50:46, men det er nok bare at lave det som en reference i VBA editoren.
For hvis man tilføjer .xla dokumentet som beskrevet i 07:50:46, så vil den jo prøve at åbne .xla'en hver gang Excel startes, og det er jo ikke nødvendigt ;)
Jeg var bare lige væk et øjeblik (som så blev til 3 timer), men godt at problemet nu ser ud til at være løst :0)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.