• 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.

Module exporteren lukt niet met vba

Status
Niet open voor verdere reacties.

Frits123

Gebruiker
Lid geworden
30 nov 2008
Berichten
58
Met de volgende macro probeer ik de module "ModMacrosToekennen" te exporteren naar een ander Workbook, de macro loopt vast op de exportregel in het rood, er komt een melding met fout 400

Ik ben hier ueren mee bezig, maar kom er niet uit

WIE O WIE HELPT

Sub TransferModule(SaveName)
Const MODULE_NAME As String = "ModMacrosToekennen" ' Name of the module to transfer
Const TEMPFILE As String = "c:\Modul.bas" ' temp textfile

ThisWorkbook.VBProject.VBComponents(MODULE_NAME).Export TEMPFILE
Workbooks(SaveName).VBProject.VBComponents.Import TEMPFILE

'kill the textfile
Kill TEMPFILE
End Sub
 
Je hebt de exportmacro toch in een aparte module staan ?
Is de naam van de module juist ?
Hoe start je de exportmacro op ?
 
Laatst bewerkt:
De module heet "ModMacrosToekennen" en in de module staat een macro die heet
"MacrosKoppelenBlad1".
Ik ga er vanuit dat de complete module "ModMacrosToekennen" met alle macro's daarin kan worden geexporteerd en daarna weer geimporteerd in het andere Workbook.
maar er zit iets fout, mij ontbreekt de ervaring met import/export in VBA helaas.
De naam "ModMacrosToekennen" is absoluut juist, zonder de aanhalingstekens natuurlijk.
 
Frits123,

Als je beide bestanden opent kun je in de VBA modus de Module slepen naar het andere bestand.
 
En een antwoord op vraag 1 en 3 ?
 
@ EA
De macrobeveiliging zou idd nog een oorzaak kunnen zijn want de code van TS draait bij mij zonder problemen :thumb:
 
De exportmacro staat niet in een aparte module maar staat in de Excel-objecten van Blad1.
Het project is niet beveiligd, alleen de sheets zijn beveiligd (zonder wachtwoord)
Het slepen van de module is geen optie, VBA moet het werk doen.

Wel alvast bedankt voor het meedenken.;)
 
Probeer het eens met deze. Vervang Test1.xls door de naam v/h doelbestand en zorg ervoor dat dit geopend is. Start daarna Sub tst op.

Code:
Sub TransferModule(SaveName)
Const MODULE_NAME As String = "ModMacrosToekennen" ' Name of the module to transfer
Const TEMPFILE As String = "c:\Modul.bas" ' temp textfile

ThisWorkbook.VBProject.VBComponents(MODULE_NAME).Export TEMPFILE
Workbooks(SaveName).VBProject.VBComponents.Import TEMPFILE

'kill the textfile
Kill TEMPFILE
End Sub

Sub tst()
TransferModule "Test1.xls"
End Sub

Het probleem is dat ik geen probleem heb zodat ik niet veel kan simuleren.
 
Nou, ik heb het vraagstuk vereenvoudigd, maar het werkt helaas nog steeds niet.

Er zijn twee bestanden AAA.xls en BBB.xls

Alleen AAA.xls bevat de module met de naam: ModTest.

ModTest bevat de volgende macro:

Sub X()

Blad1.Range("A1") = "De lente komt"

End Sub

In het Microsoft Excel -object van Blad1 staan nu de volgende codes:

Sub TransferModule(SaveName)
Const MODULE_NAME As String = "ModTest" ' Name of the module to transfer
Const TEMPFILE As String = "c:\Modul.bas" ' temp textfile

ThisWorkbook.VBProject.VBComponents(MODULE_NAME).Export TEMPFILE
Workbooks(SaveName).VBProject.VBComponents.Import TEMPFILE

'kill the textfile
Kill TEMPFILE
End Sub

Sub tst()
TransferModule "BBB.xls"
End Sub



Ik laat Sub tst lopen en hij stopt dan bij de rode regel met de foutmelding Fout 1004, de door de toepassing of object gedefinieerde fout.

De bedoeling is dus dat module ModTest met macro X gekopieerd wordt naar BBB.xls

Het moet iets simpels zijn waarop het misgaat, maar wat .....?
 
Laatst bewerkt:
Welke verwijzingen heb je aangevinkt in VBA ?
 
Ga in je VBEditor naar Extra >> Verwijzingen. Welke onderdelen zijn daar aangevinkt ?
 
Aangevinkt staan:

Visual Basic For Applications
Microsoft Excel 11.0 Object Library
OLE Automation
Microsoft Office 11.0 Object Library

en dat is alles, verder geen enkel vinkje...

Het lijkt op het eerste gezicht voldoende, of heb ik het mis?
 
Vink onderstaande ook eens aan
Microsoft Visual Bacic for Applications Extensibility 5.3
Bij mij draait hij zonder, maar het is het proberen waard.
 
Microsoft Visual Bacic for Applications Extensibility 5.3

is nu aangevinkt, afgesloten en opnieuw geopend....

maar helaas, ik was er al bang voor, de macro loopt nog steeds vast op de zelfde regel

Tsjé. wat nu?
 
Ik heb het zelfde verhaal ook uitgeprobeerd opmijn laptop en ook nog met en andere macro die natuurlijk wel op het zelfde neerkomt:

Sub CopyOneModule()

Dim FName As String
With Workbooks("AAA.xls")
FName = .Path & "\code.txt"
.VBProject.VBComponents("ModTest").Export FName
End With
Workbooks("BBB.xls").VBProject.VBComponents.Import FName

End Sub


Loopt toch weer vast op de zelfde (rode) regel met Fout 1004

Handmatig exporteren lukt overigens wel, dan krijg ik een .bas bestand met als inhoud:

Attribute VB_Name = "ModTest"
Sub X()

Blad1.Range("A1") = "De lente komt"

End Sub



Er zit toch ergens een vormfoutje, wie heeft r nog een briljant idee?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan