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

Ik heb het net getest en het werkt perfect.
Ik had beide file's open en de naam van de Module aangepast.
De code in de module van file AAA.xls geplaatst.

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

Dus wat er fout gaat bij je weet ik niet.
 
Laatst bewerkt:
Bedankt voor je inzet, dat is bemoedigend!

Ik begin te geloven dat het met instelingen te maken heeft.

Ik was benieuwd of de VBAcomponenten ook herkend worden en heb daarom de volgende code uitgeprobeerd:

(Plaatst de namen van alle modues in een excel-werkblad)

Sub ListProcedures()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Dim NumLines As Long
Dim WS As Worksheet
Dim Rng As Range
Dim ProcName As String
Dim ProcKind As VBIDE.vbext_ProcKind

Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1")
Set CodeMod = VBComp.CodeModule

Set WS = ActiveWorkbook.Worksheets("Sheet1")
Set Rng = WS.Range("A1")
With CodeMod
LineNum = .CountOfDeclarationLines + 1
Do Until LineNum >= .CountOfLines
ProcName = .ProcOfLine(LineNum, ProcKind)
Rng.Value = ProcName
Rng(1, 2).Value = ProcKindString(ProcKind)
LineNum = .ProcStartLine(ProcName, ProcKind) + _
.ProcCountLines(ProcName, ProcKind) + 1
Set Rng = Rng(2, 1)
Loop
End With

End Sub

Function ProcKindString(ProcKind As VBIDE.vbext_ProcKind) As String
Select Case ProcKind
Case vbext_pk_Get
ProcKindString = "Property Get"
Case vbext_pk_Let
ProcKindString = "Property Let"
Case vbext_pk_Set
ProcKindString = "Property Set"
Case vbext_pk_Proc
ProcKindString = "Sub Or Function"
Case Else
ProcKindString = "Unknown Type: " & CStr(ProcKind)
End Select
End Function



Ook hier loopt de procedure vast op de rode regel, maar deze regel staat eigenlijk los van de macro's die ik heb geschreven.

Het lijkt erop of het declareren van VBProj niet is gelukt.......(?)

Opnieuw Fout 1004, in elk geval wordt in de macro iets gevraagd wat niet uitvoerbaar is.

Het moet aan de instellingen of voorwaarden liggen....
 
Om deze macro te draaien moet je de verwijzing uit Post#15 aanvinken.
 
is het niet tijd om je bestandje hier te zetten ipv. de code, misschien is er meer aan de hand ????
1. die verwijzing van Warm Bakkertje is die nu aangevinkt ????
2. activeworkbook, wie is dat op ht ogenblik dat de macro loopt ?
3. staan er in die activeworkbook wel modules ??
Te beginnen bij puntje 1 alle punten aflopen
 
De volgende verwijzingen staan ook op de laptop aangevinkt:

Visual Basic For Applications
Microsoft Excel 11.0 Object Library
Microsoft Visual Basic for Applicatios Extensibility 5.3
OLE Automation
Microsoft Office 11.0 Object Library

Ik heb de twee werkboeken bijgevoegd zodat er geen misverstanden kunnen besaan over het gebruik van de macro's. In werkboek AAA staan alle besproken macro's.

Hartelijk dank voor idereen die zich tot nu toe heeft inspannen voor deze vraag.
 

Bijlagen

Frits123,

Ik heb je 2 files gedownload een moet zeggen de macro werkt hier perfect.

Mijn conclusie is dat het bij jou moet zitten.
 
Misschien extreem, maar Office eraf gooien en opnieuw installeren want dit wordt een onwaarschijnlijk verhaal. Er moet niks speciaal ingesteld worden om deze macro's te draaien (buiten de verwijzing), bij iedereen werkt het en enkel bij jou niet. Mi heeft dit niks meer met instellingen te maken.
 
Op de laptop heb ik niet alleen Office 2003, maar zelfs Windows XP er nieuw op staan. Dat heeft natuurlijk nog heel wat voeten in de aarde gehad, waarbij ik uren met de draadloze router ben zoet geweest.

Nou ja, dat is weer allemaal vers, maar de problemen met de drie macro's die iets met een module doen zijn er nog steeds. Elke keer weer die vervelende foutmelding 1003.

Inmiddels heb ik het kopieren van werkboeken maar anders aangepakt, alle macro's zijn nu aan werkbladen gekoppeld en die worden probleemloos meegekopieerd.

Maar echt lekker zit het mij niet en al helemaal niet dat bij iedereen de boel wel normaal werkt en bij mij zelfs op de nieuwe laptop de zaak nog steeds vastloopt.

Ik ben toch al jaren met Excel VBA bezig en heb nog nooit meegemaakt dat een macroprobleem niet te verhelpen was.

Helaas kan ik de vraag dus (nog) niet als opgelost aanvinken.

Wel erg bedankt voor alle hulp en ook jammer dat jullie inzet niet tot het gewenste resultaat heeft geleid.
 
Nu heb ik nog een pc staan met Vista en Office 2007 en daar heb ik de macro ook laten draaien:

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 TEMPFILEWorkbooks(SaveName).VBProject.VBComponents.Import TEMPFILE

'kill the textfile
Kill TEMPFILE
End Sub

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


Wederom strandt de macro op de rode regel, ditmaal onder vermelding van Fout 50034

Nu loopt de macro vast op de zelde regel op drie computers: een met een oude XP-Office 2003 installatie, een met een kakelverse XP-Office 2003 installatie en een met een Vista Office 2007 installatie. Ik begrijp niet dat de macro bij iedereen probleemloos zijn werk doet en bij mij op geen van de drie computers, toch iets met verwijzingen?

Bij mij staan aangevinkt in volgorde van prioriteit:

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

Waar zit nou de kneep?
 
die 2 constanten moeten bovenin de module staan en mogen geen deel uitmaken van een macro ! Dus er mag hooguit "option explicit" voor die 2 regels staan, anders niets

Code:
Const MODULE_NAME As String = "ModTest"                    ' Name of the module to transfer
Const TEMPFILE As String = "C:\Modul.bas"                  ' temp textfile

Sub TransferModule(SaveName)
'EXPORT-MACRO-1B
  ThisWorkbook.VBProject.VBComponents(MODULE_NAME).Export TEMPFILE
  Workbooks(SaveName).VBProject.VBComponents.Import TEMPFILE
  'kill the textfile
  Kill TEMPFILE
End Sub

Sub tst()
'EXPORT-MACRO-1A
  TransferModule "BBB.xls"
End Sub
 
Ik heb de macro gekopieerd en aan blad1 in VBA gehangen.

Helaas loopt de macro vast op regel:

ThisWorkbook.VBProject.VBComponents(MODULE_NAME).Export TEMPFILE

onder vermelding van: Fout 1004
 
Ik kreeg dezelfde foutmelding op Windows7 met XL2007
De fout zat in het maken v/d tempfile. Op deze manier kreeg ik hem wel aan de praat.
Code:
Sub TransferModule(Savename)
'EXPORT-MACRO-1B
Const MODULE_NAME As String = "ModTest" ' Name of the module to transfer
Dim TEMPFILE As String
With ThisWorkbook
    TEMPFILE = .Path & "\Modul.bas" ' temp textfile
    .VBProject.VBComponents(MODULE_NAME).Export TEMPFILE
End With
Workbooks(Savename).VBProject.VBComponents.Import TEMPFILE
Kill TEMPFILE 'kill the textfile
End Sub

Sub tst()
'EXPORT-MACRO-1A
TransferModule "BBB.xls"
End Sub
 
Nou inderdaad, die macro werkt wel in Office 2007, de module is keurig geexporteerd van werkboek AAA naar werkboek BBB, maar die zelfde macro doet het niet voor Excel uit Office 2003.

Dat is toch vreemd....

Die export-macro's zijn toch ook bedoeld voor Office 2003???
 
Ik heb 'm nu getest in XL2007 en XL2002SP3, wat onmiddelijk aanleunt bij XL2003, en in beide geen enkel probleem. Bij de oudste versie werkt zelfs eender welke macro.
Ik kan je echt geen verklaring geven waarom het bij jou niet werkt en bij ieder ander wel.
 
ik vermoed gewoon dat die module die je wenst te exporteren gewoon niet in thisworkbook staat, dus niet geexporteerd kan worden. Misschien staat er een spatie of zo meer in module_naam of iets dergelijks. Onderstaande vraagt de naam van de module alvorens te exporteren. Als je daar voorbij komt dan klopt bovenstaande veronderstelling niet.
Code:
  MsgBox MODULE_NAME
  MsgBox ThisWorkbook.VBProject.VBComponents(MODULE_NAME).Name
  ThisWorkbook.VBProject.VBComponents(MODULE_NAME).Export TEMPFILE
 
MsgBox MODULE_NAME

geeft inderdaad een msgbox, met de module naam ModTest maar....

MsgBox ThisWorkbook.VBProject.VBComponents(MODULE_NAME).Name

geeft weer de onverbiddelijke Fout 1004 (tijdens uitvoering)

Maar wat ook gek is in de volgende ingekorte macro strandt de macro op Set in:
(weer Fout 1004)

Sub ListModules()

Dim VBProj As VBIDE.VBProject
Set VBProj = ActiveWorkbook.VBProject

End Sub

Hier wordt geen enkele naam gebruikt, alleen het Set statement.

Ik vind het steeds gekker worden................
 
vermoedelijk zit je de ganse tijd al in een andere werkmap te kijken.
probeer eens deze macro, die zegt wie "Thisworkbook" is en welke modules erin staan.
let ook een beetje op met thisworkbook en activeworkbook, misschien zit je daarmee te knoeien

Code:
Sub Opsommen()
  Dim i As Integer, s As String

  s = "ThisWorkbook is " & vbTab & ThisWorkbook.Name & vbLf & vbLf & "met volgende modules " & vbLf
  For i = 1 To ThisWorkbook.VBProject.VBComponents.Count
    s = s & i & vbTab & ThisWorkbook.VBProject.VBComponents(i).Name & vbLf
  Next
  MsgBox s

End Sub
 
Laatst bewerkt:
Geprobeerd, Fout 1004 in de regel met

ThisWorkbook.VBProject.VBComponents.Count

Hij gaat toch gewoon tellen in ThisWorkbook en niet in een andere?

Sterker nog het gaat al mis in de volgende combinatie:

Dim VBProj As VBIDE.VBProject
Set VBProj = ThisWorkbook.VBProject

Hij kan ThisWorkbook.VBProject al niet eens aan......! laat staan een Count doen.
 
ik weet het ook niet meer, heb je misschien een paswoord & beveiliging op je VBA-project staan of zo ??
Er moet toch iets verschillend zijn tussen jouw project en dat van de anderen.
Dit werkt zeker bij mij, lukt het niet bij jou, dan heef ik er de brui aan ...
 

Bijlagen

Dat je er genoeg van begint te krijgen kan ik mij levendig voorstellen.

Maar volgens mij komt jouw project uit Office 2007 en dat werkt bij mij ook, het gaat om functioneren in Office 2003. (Ik zag dat er eerst werd geconverteerd, vanuit een andere Excel versie.)

Ik heb dus letterllijk alles gebruikt uit jouw proefversie, desondanks foutmeldingen.

Voor iedereen die geholpen heeft hartelijk dank, de oplossing zal liggen in de randvoorwaarden en niet in de gebruikte macro's.

Ik laat de vraag toch nog maar open voor je weet maar nooit, uiteraard zal ik eventueel gevonden oplossingen zelf nog aan dit verhaal toevoegen.

't Is me wat.....
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan