• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro gekoppeld aan knop werkt wel maar als add-in niet

Status
Niet open voor verdere reacties.

peter59

Terugkerende gebruiker
Lid geworden
21 mei 2007
Berichten
2.618
Besturingssysteem
Windows 11
Office versie
Office 365
Hallo,

Ik heb een macro welke wel werkt bij klikken op een knop.
Het is de bedoeling om deze macro te gebruiken in een add-in maar dan werkt deze niet.
Onderstaand de betreffende macro.
Code:
Sub Macro1()
 With Workbooks.Open("C:\Users\467855\OneDrive - Sitech Services BV\Documents\Factuurverificatie\03 Verzamel Templates tbv Rens\01 Verzameltemplate.xlsx")
   .Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(200, 15) = ThisWorkbook.Sheets("Blad1").Range("A4:O203").Value
   .Close True
       Range("E2").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("E1").Select
 End With
End Sub

Wat gaat er niet goed?

Dank alvast voor het meedenken.

Mvg
Peter
 
Wellicht handig om ook te vertellen wat er dan niet werkt.
Wel een idee.
Je gebruikt ThisWorkbook.
Dat is het werkboek waar de VBA code in draait.
Als je die code in een addin hebt dan is de addin dus het werkboek dat daar gebruikt wordt.
Wijzig dat eens in het werkboek dat je daar bedoelt te gebruiken.
 
Laatst bewerkt:
Code:
Sub M_snb()
 With Getobject("C:\Users\467855\OneDrive - Sitech Services BV\Documents\Factuurverificatie\03 Verzamel Templates tbv Rens\01 Verzameltemplate.xlsx")
   .Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(200, 15) = Activesheet.Range("A4:O203").Value
   .Close -1
 end With
 activesheet.cells(2,5)=date
End Sub
 
Hallo,

Allereerst excuses voor de late reactie. Ik heb uren liggen te "kloeien" om toch het e.e.a. werkend te krijgen. Maar niet gelukt.

@ Edmoor
Ik denk dat je gelijk hebt maar krijg het helaas niet voorelkaar.
Ik tracht het e.e.a. duidelijker uit te leggen.

@SnB
Ik heb jouw code gebruikt maar helaas ging deze fout.
De code heeft de add-in sheet genaamd "Naar Verzamelstaat.xlam" welke in een map "Add-ins" staat naar de sheet "01 Verzameltemplate" verplaatst. Dus de gehele template was verdwenen. Heft dit iets te maken met de With Getobject.... ?

Ik probeer het nu beter te verwoorden.
Na het gekloei ben ik eigenlijk weer van voorafaan begonnen.
De onderstaande macro welke dus in een map "Add-ins"staat met de extensie .xlam heb ik met de F8 toets doorlopen. De code opent de desbetreffend sheet waar het e.e.a. dient geplakt te worden, perfect.
Hierna gebeurt er eigenlijk niets meer. Geen fout melding, niets.
Wat is nu eigenlijk mijn bedoeling.
Er dient eerst in het active werkblad een range van A4:O300 te worden gekopieerd. dan de template openen "("C:\Users\467855\OneDrive - Sitech Services BV\Documents\Factuurverificatie\03 Verzamel Templates tbv Rens\01 Verzameltemplate.xlsx")" en daar plakken in de eerst volgende lege cel beginnende in kolom A.

Code:
Sub Macro1()
    With Workbooks.Open("C:\Users\467855\OneDrive - Sitech Services BV\Documents\Factuurverificatie\03 Verzamel Templates tbv Rens\01 Verzameltemplate.xlsx")
   .Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(200, 15) = ThisWorkbook.Sheets("Blad1").Range("A4:O300").Value
    End With
End Sub

Ik hoop dat het e.e.a. iets duidelijker is geworden.

Mvg
Peter
 
Maak van Macro1 eens dit:
Code:
Sub VulTemplate(srcWB as Workbook)
    With Workbooks.Open("C:\Users\467855\OneDrive - Sitech Services BV\Documents\Factuurverificatie\03 Verzamel Templates tbv Rens\01 Verzameltemplate.xlsx")
        .Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(200, 15) = srcWB.Sheets("Blad1").Range("A4:O300").Value
    End With
End Sub

De addin heet bijvoorbeeld Peter59 met bovenstaande macro in een Module.
De aanroep vanuit het document met de te kopiëren range is dan dit:
Code:
Sub Test
     Application.Run "'Peter59.xlam'!VulTemplate", ThisWorkbook
End SUb
 
Laatst bewerkt:
Hallo Edmoor

Dank alvast voor je respons.
Ziet er voor mij als leek zijnde al veel belovend uit.
Ik ga er mee aan de slag.

Rijst meteen al een vraagje.
Waar zet ik de code?
Code:
Sub Test
     Application.Run "'Peter59.xlam'!VulTemplate", ThisWorkbook
End SUb

Want het is eigenlijk niet de bedoeling dat ik deze code in alle excelsheets dien in te voeren. Of begrijp ik het verkeerd?

Mvg
Peter
 
Laatst bewerkt:
In het document waarvan je de range gekopieerd wilt hebben.
 
Hallo Edmoor

Jij was sneller dan als ik de vraag had bijgesteld.
M.a.w. is het niet de bedoeling dat in iedere excelsheet de code ingevoerd dient te worden.
Dan kan ik (helaas) alles bij het oude laten.


Mvg
Peter
 
Dan zal je een keuzemenu in het lint moeten maken van de addin.
Dan kan men vanuit ieder document op het knopje klikken om de code in de addin te starten.
Maar dan moet je met XML en callback routines aan de slag:
https://www.rondebruin.nl/win/s2/win001.htm
 
Oké Edmoor

Dank voor de tip
Ik ga hier eens mee aan de slag.
Ik zet (voorlopig) de topic op opgelost.
Zijn er van mijn kant uit nog vragen dan zal ik deze opnieuw openen.

Nogmaals dank.

Mvg
Peter
 
Mocht het niet lukken met dat lint dan laat het maar weten.
Maak ik wel die addin voor je met een voorbeeld.
 
Toppie,

Ik dien dit geheel te doen op de laptop van het werk dus kan ff duren.
Deze is ook nog dusdanig beveiligd dat ik me afvraag of het gaat lukken.

Nogmaals mijn dank voor je medewerking.

Mvg
Peter
 
Hoi Peter,

Ik heb de addin vast voor je gemaakt:
Peter59.JPG

Dat is deze:
Bekijk bijlage Peter59.zip

Pak dat bestand uit en plaats de resulterende xlam waar je maar wilt.
Start Excel en voeg de addin daar vandaan dan toe via: Opties > Invoegtoepassingen > Start > Bladeren

Je zal nu de addin zien zoals in het plaatje hier boven.
Het enige dat je dan zelf nog moet doen is de gewenste code toevoegen in de Sub VulTemplate die staat in de module PtrFuncties.

Dit is de gebruikte XML code.
Volg de site van Ron de Bruin waar ik naar linkte om te leren wat daar gebeurt:
PHP:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ptr_RibbonUI_onLoad">
<ribbon>
<tabs>
	<tab id="PTR_TAB" getLabel="Ptr_RibbonUI_getLabel"
		 getVisible="Ptr_RibbonUI_getVisible">
		<group id="PTR_MENU" getLabel="Ptr_RibbonUI_getLabel">
			<button id="VULTEMPLATE"
				size="large"
				image="VulTemplate"
				onAction="Ptr_RibbonUI_onAction"
				getLabel="Ptr_RibbonUI_getLabel"
				getEnabled="Ptr_RibbonUI_getEnabled"
			/>
		</group>
	</tab>
</tabs>
</ribbon>
</customUI>
 
Laatst bewerkt:
Hallo Edmoor

Heel hartelijk dank voor je genomen moeite en natuurlijk voor je geduld.

Ik heb de zip uitgepakt en ga deze als add-in plaatsen.
Ik zie helaas geen module in de add-in.
Dien ik hier jouw onderstaande code in te vullen?
Code:
Sub VulTemplate(srcWB as Workbook)
    With Workbooks.Open("C:\Users\467855\OneDrive - Sitech Services BV\Documents\Factuurverificatie\03 Verzamel Templates tbv Rens\01 Verzameltemplate.xlsx")
        .Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(200, 15) = srcWB.Sheets("Blad1").Range("A4:O300").Value
    End With
End Sub

Wederom dank.

Mvg
Peter
 
Natuurlijk zit er wel een module in, 2 zelfs.
Ik vraag me dus af waarom je dat niet ziet in de VBA editor, nadat je deze als addin aan Excel hebt toegevoegd.

Het rode gedeelte is nu niet nodig:
Sub VulTemplate(srcWB as Workbook)

addin.JPG
 
Laatst bewerkt:
Je bijlage is niet correct.
 
Edmoor,

Nog een poging.
Nu is het printje wel zichtbaar, hoop ik.
Wat opvalt is dat deze ineens een andere add-in opent.
Dus heel vreemd.

Print Peter59.JPG

Is het niet mogelijk om jouw zip file gewoon als een bijlage.xlsm te uploaden?
Zo, voor vandaag heb ik dadelijk nog andere "verplichtingen".
M.a.w. wordt z.s.m. vervolgt.

Mvg
Peter
 
Je hebt de addin niet aan Excel toegevoegd zoals ik schreef in #13.
De xlam die je nodig hebt zit in de zip file die ik plaatste.
Een xlsm bestand is geen addin.

Zorg er ook voor dat er niks staat in:
C:\Users\<gebruiker>\AppData\Roaming\Microsoft\AddIns

Zet de xlam die ik stuurde dus ook in een andere map.
 
Laatst bewerkt:
Edmoor,

Voorzover gelukt. Dank.
Ik zie nu de modules. De rest gaat z.s.m. volgen.
Maar nu even niet. De wederhelft wordt ongeduldig.

Mvg
Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan