• 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`s vauit een ander bestand aanroepen totaal 22 stuks

  • Onderwerp starter Onderwerp starter HWV
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
Module1

Vaak staat de code in module1 van het bestand, hoe ziet de code dat hij de code vanuit module 1 moet pakken

Groet HWV
 
1 het moet een 'publieke' macro zijn (public Sub of Sub; geen Private Sub)
2 de macro moet in een macromodule staan (dus niet in ThisWorkbook of de module van een werkblad (sheet1 of Blad1))
3. als je ervoor zorgt dat er geen andere macro in hetzelfde bestand met dezelfde naam voorkomt vindt de code de macro vanzelf.

Vaak staat de code in module1
Zorg ervoor dat de macro immer in module 1 staat.
 
Zorg ervoor dat de macro immer in module 1 staat.

Bedankt voor uw reactie.

Als ik nu elke macro in een module1 zet, en de macro daarin de naam conversie geef zal de code wel goed moeten lopen.


Groet Henk
 
Laatst bewerkt:
Beste SNB,

U gebruikt:
Zorg ervoor dat de macro immer in module 1 staat

Voor mij is het nog onduidelijk wat u hiermee bedoeld.

Is het nu zo dat de macro in de module 1 van een bestand moet zitten of dat het juist niet in een module 1 geplaats moet worden.

Groet Henk
 
Immer staat hier voor Altijd - Steeds
 
Test niet goed verlopen

Beste,

Ik ben eigenlijk nu pas in de gelegenheid geweest om de test uit te voeren, maar krijg het helaas niet voor elkaar.
Wat heb ik gedaan

Ik heb een apparte map gemaakt Totaal.
In deze map heb ik nu als test 2 bestanden in gezet 5.xls en 6.xls
Daar Module1 aangemaakt en daar in heb ik de macro staan "conversie" dit zowel voor 5.xls als 6.xls.
Zodra ik nu onderstaande macro draait dan kijg ik een foutmelding

Code:
Sub Macro()
    c0 = Dir("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\*.xls")
    Do
      With Workbooks.Add(c0)
         .Activate
         Application.Run "conversie"
         .Close False
      End With
      c0 = Dir
    Loop Until c0 = ""
End Sub

Foutmelding:

Fout 1004 tijdens uitvoering:
De macro conversie kan niet worden gevonden

fout op:
Code:
 [COLOR="Red"]Application.Run "conversie"[/COLOR]

Groet Henk
 

Bijlagen

Laatst bewerkt:
Zet in ieder bestand bij de gebeurtenis Workbook_Open in de module Thisworkbook:

Code:
Private Sub Workbook_Open()
  conversie
End Sub

Haal vervolgens uit de startmacro de regel met Application.run en activate.
Het wordt dan alleen maar eenvoudiger:
Code:
Sub Macro()
    c0 = Dir("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\*.xls")
    Do
      With Workbooks.Add(c0)
         .Close False
      End With
      c0 = Dir
    Loop Until c0 = ""
End Sub
 
Laatst bewerkt:
foutmelding

Beste SNB,

Wederom bedankt voor uw reactie.

Ik heb de gegevens aangepast maar met het uitvoeren van de macro krijg ik de volgende melding.

Fout 1004 tijdens uitvoering
5.xls kan niet worden gevonden. Controleer de spelling van de naam en de locatie van het bestand.

Controle gedaan op het pad en die is goed, gekeken wat er gebeurd als ik 5.xls opent , de macro "conversie" afspelen, dat doet hij dan wel.

De code volgt wel het pad, want hij vind 5.xls maar kan deze niet openen ?

Code:
Sub Macro()
    c0 = Dir("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\*.xls")
    Do
      [COLOR="Red"]With Workbooks.Add(c0)[/COLOR]
         .Close False
      End With
      c0 = Dir
    Loop Until c0 = ""
End Sub

Is er iets wat ik verkeerd doet.

Groet Henk
 
De waarde van
c0 = Dir("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\*.xls")
moet zijn:
"G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\5.xls"

als hier alleen maar 5.xls staat moet je het hele pad toevoegen in de volgende regel:

Code:
Workbooks.Add("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\" & c0)

Als je met
gekeken wat er gebeurt als ik 5.xls open , de macro "conversie" afspelen, dat doet hij dan wel
bedoelt dat de macro meteen wordt uitgevoerd als het bestand wordt geopend (dus zonder dat je zelf nog iets hoeft te doen) dan is het goed.
 
Snap niet echt wat U bedoelt

Beste SNB,

Bedankt voor de uitleg.

Voor de duidelijkheid heb ik dus in het echte bestand 1 t/m 22 .xls staan
Hij moet elk van deze map openen om de macro conversie te laten draaien die in elke werkmap staat.
In mijn test heb ik staan 5.xls en 6.xls

De waarde van
c0 = Dir("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\*.xls")
moet zijn:
"G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\5.xls"

als hier alleen maar 5.xls staat moet je het hele pad toevoegen in de volgende regel:


Code:
Workbooks.Add("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\" & c0)

Ik kom er niet uit waar ik de code moet plaatsen om de macro aan te roepen.

Kunt u mij laten zien hoe ik de code nu moet opbouwen

groet Henk
 
Code:
Sub Macro()
    c0 = Dir("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\*.xls")
    Do
      With Workbooks.Add(c0)
         .Close False
      End With
      c0 = Dir
    Loop Until c0 = ""
End Sub

Deze code heb ik staan en de ander code in de werkmappen geplaatst:

Zet in ieder bestand bij de gebeurtenis Workbook_Open in de module Thisworkbook:


Code:
Private Sub Workbook_Open()
conversie
End Sub

Enkel hij krijg de bestanden niet gevonden en krijg daar de foutmelding op.

Ik vraag veel van uw geduld maar ik kom er echt niet uit.

Groet Henk
 
update

Code:
Sub Macro()
    c0 = Dir("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\*.xls")
    Do
      With Workbooks.Add("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\" & c0)
         .Close False
      End With
      c0 = Dir
    Loop Until c0 = ""
End Sub

Code werkt op deze manier in de test omgeving, enkel er voor zorgen dat de totaal conversie niet in de zelfde map staat want die gaat hij ook opvragen.

Ik ga deze toepassen op de macro`s en zal het eind resultaat hien nog wel melden.

Nogmaals SNB bedankt voor uw geduld, maar voorals nog werkt de code..

Groet Henk
 
Nog niet

Beste,

Na testen ben ik er toch achter gekomen dat het niet werkt zoals het dient te werken.
In de bijlage een voorbeeld van de bestanden,

Zet in ieder bestand bij de gebeurtenis Workbook_Open in de module Thisworkbook:


Code:
Private Sub Workbook_Open()
conversie
End Sub

In elk workbook bovenstaande gezet

Via de code de bestanden opvragen
Code:
Sub Macro()
    c0 = Dir("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\*.xls")
    Do
      With Workbooks.Add("G:\Automatisering\Infomat Project2\Conversie\PPP\Hulp programma`s\Totaal\" & c0)
         .Close False
      End With
      c0 = Dir
    Loop Until c0 = ""
End Sub

Hij opent het eerste bestand van de conversie en zou aan het einde het moeten opslaan, en dan doorgaan naar de volgende code, enkel dit doet hij niet. Kunt u mijn vertellen wat ik hier fout in doe, als u de bestanden bekijkt in de bijlage.

Open ik het bestand handmatig dan loopt hij wel heel het script af en slaat het bestand op , en zet deze op de aangegeven plaats en naam.

Groet HWV
 

Bijlagen

opgelost

Beste,

Ik ben ondertussen flink aan het tetsten geweest en heb nu de fout ondekt die in mijn bestanden zat om de code van SNB te laten werken.
Ik heb twee dingen aangepast.
Ik had een regel erin zitten Close deze heb ik op niet actief gezet en hij loop daar nu overheen
En er zatten verwijngen in naar naar de werkmap, maar omdat deze veranderd wordt met een 1 erbij kreeg ik daar de foutmelding op.
Dit heb ik opgelost na het opstarten dat er een copy gemaakt wordt en zoloop de code wel door.
Ik heb nu in totaal 25 werkmappen die ik met één formule kan aansturen,

SNB bedankt voor uw tijd en hulp, en ook de rest van het forum bedankt voor de hulp

Groet HWV
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan