28. januar 2004 - 12:22Der er
12 kommentarer og 1 løsning
Makro fra XLA køre via ikon på st. værkstjsl.
Jeg har oprettet en knap på standard værktøjslinien, der skal køre en makro som ligger i et XLA bibliotek. Jeg kan dog ikke tilknytte makroen, da den ikke findes på listen (man kan åbenbart ikke se makroer i xla-bibliotekerne)
Jeg har lavet en foreløbig løsning, med en fil i StartUp biblioteket, men vil hellere have xla til at fungere.
Jeg er ikke interesseret i en ny værktøsjlinie eller en ny menu, der programmeres (det kan jeg nenmlig godt selv *S*), men kunne eventuelt være interreseret i en makro, der køres fra XLA ved opstart af Excel og som satte en knap på standardværktøjslinien med min makro fra XLA (udfordringen er her, at få det rigtige ikon på også, som ikke er at standardikon, og som jeg ikke ved hvordan jeg skal indsætte, når jeg koder det *S*) Jeg kunne dog også indsætte et ikon på værktøjslinien (som bliver gemt i Excel.xlb) og så på en eller anden måde sæte makroen fra XLA på...
rvm - hvis jeg forstå det rigtigt, så vil du have at når din xla-fil startes, så skal den sætte en knap på en eksisterende værktøjslinie, og den kan på skal starte en makro i xla'en. Knappen skal selvfølgelig kun være der, når xla'en er tilrådighed (altså indlæst via Funktioner|Tilføjelsesprogrammer) Er det rigtig forstået ?
Knappen som du selv har lavet, og vel sagtens kan få på en knap - hvordan får du så den over på en knap som du opretter!
Du kan laver noget fusk eller en omvej (vist et spørgsmål om temperament) Hvis du laver en værktøjslinie i din xla, hvor knappen findes med det rigtige ikon, så kan du kopiere ikonet fra den knap over til den nye du laver.
bak-> Jeg kender godt metoden til at kalde makroer i XLA, men hele øvelsen går netop ud på at, der kun ligger kode i XLA - og den kode skal aktiveres fra en knap på standard værktøsjlinien - ikke fra en ny vækrtøjslinie som jeg selv laver.
Flemming-> Din løsning med at oprette en skjult værktøjslinie tror jeg faktisk vil virke til at overføre ikonet - og jeg kan lave en AutOpen i XLA, der oprette knappen og sætter makroen på - det prøver jeg i morgen tidlig, når jeg er på arbejde igen *S*
Jeg er nu kommet så langt, at jeg opretter punkter på standard værktøjslinien via VBA og fra en XLS fil. I Xls filen har jeg oprettet en værktøjslinie (PPP) med mit eget ikon.
Jeg opretter punktet og ikonet således:
Sub PPP()
Set con = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, _ Before:=7) con.Caption = "PPP" con.OnAction = "Makro" con.Style = msoButtonIcon
Set con = Nothing End Sub
Nu mangler jeg bare at kopiere ikonet fra min værktøjslinie til mit nye punkt på standard værktøjslinien, men... det vil ikke lykkes. Jeg bruger følgende kode:
Sub Kopier()
Set myControl = CommandBars.FindControl(Type:=msoControlButton, _ ID:=CommandBars("PPP").Controls("PPP").ID)
myControl.CopyFace
Set myContro = CommandBars.FindControl(Type:=msoControlButton, _ ID:=CommandBars("Standard").Controls("PPP").ID)
Du mangler et L her "Set myContro = CommandBars......" Fil returneret (ser lidt anderledes ud end nedenstående, men princippet er det samme)
Jeg har lavet koden således: (Tilpasset ovenstående eksempel kodeeksempel)
Public Const mlPdfId As Long = 7
Sub AddButtonsToStandard() Dim oCtl As CommandBarControl
Set oCtl = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, _ Before:=mlPdfId) With oCtl .Caption = "PPP" .OnAction = "LavPdfFil" .Style = msoButtonIcon End With
Set oCtl = Nothing End Sub
Sub CopyFaceIdPPP() Dim oCtl As CommandBarButton
Set oCtl = CommandBars.FindControl(Type:=msoControlButton, _ ID:=CommandBars("PPP").Controls(1).ID) oCtl.CopyFace
Set oCtl = CommandBars.FindControl(Type:=msoControlButton, _ ID:=CommandBars("Standard").Controls(mlPdfId).ID) oCtl.PasteFace
Set oCtl = Nothing End Sub
Der skal selvfølgelig en AutoOpen og en AutoClose til også samt lidt mere, hvis det virkelig skal virke, men det her kan give andre læsere en ide.
Nu har jeg testet din makro, men den virke kun i Excel 2003 (ikke 97 eller XP), hvilket er ret mærkeligt... Jeg er dog ikke helt sikker på at min Excel XP er helt i orden, så måske skal jeg prøve at installere den på ny. Jeg takker dog mange gange for de input, der er kommet. Specielt har det med at man kan lave værktøjslinier i de enkelte Excel-filer været nyt for mig (fandt selv ud af hvordan, da jeg først vidste det var muligt).
Jeg lukker nu spørgsmålet, da jeg ikke tror vi kan komme tættere end dette. Hvis det stadig driller efter min reinstallation, så må kunden nøjes med tekst i stedet for et ikon (det har jeg forberedt dem på)*S*
Ja - men der er åbenbart forskel på Excel UK og DK på dette område. Jeg har nemlig nu afinstalleret og installeret Office XP DK og lagt alle opdateringer på, men det virker stadig ikke... Så nu må kunden nøjes med teksten - det går nok også *S*
Ja, det kan vist være forskel på navnet på de forskellige værktøjslinier.....
Prøv f.eks. at udskifte CommandBars("Standard"). med CommandBars(1). Så du arbejder på værktøjliniens index istedet for navnet på den....!
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.