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

Excel starten uit ander bestand?

Status
Niet open voor verdere reacties.

MaxExcel

Gebruiker
Lid geworden
5 feb 2008
Berichten
49
Is het mogelijk om met behulp van VBA een Macro te starten uit een ander bestand?

Situatie:
Ik heb twaalf Excel bestanden met ieder zn eigen macro
Ik wil elk bestand om de beurt openen om de Macro uit het bestand te starten.

Ik had zelf zoiets in gedachten:

Code:
Sub Test()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook
Dim lastrow As Long

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

Sheets("Blad1").Select

On Error Resume Next

Set wbCodeBook = ThisWorkbook

    With Application.FileSearch
        .NewSearch
        .LookIn = "C:\"
        .FileType = msoFileTypeExcelWorkbooks
        .Filename = "Bestand1.xls"
        
            If .Execute > 0 Then 'Workbooks in folder
                For lCount = 1 To .FoundFiles.Count 'Loop through all.
                 'Open Workbook x and Set a Workbook variable to it
                 Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0)
                                  
                 Sheets("Totalen").Select
        Windows("Bestand1.xls").Activate

Application.Run ("Bestand1.xls!StartMacro").

                wbResults.Close SaveChanges:=True
             
                 Next lCount
            End If
    End With

End Sub

Door middel van deze code wordt het bestand wel geopend alleen draait de macro niet, heeft iemand hier een oplossing voor?
 
Laatst bewerkt:
zet de macro van ieder blad op het blad Thiswoorkbook in je VB editor in ee de sub tags:
Code:
Private Sub Workbook_Open()

hier je uit te voeren code.

End Sub

Dan zou je code moeten lopen als er geopent wordt.

ps.
Zou je je code vooraatn tussen de code tags kunnen plaatsen? maakt je post een stuk meer leesbaar en de code makkelijker te kopieeren :).
Bedankt.
 
schijnt wel te kunnen volgens http://en.allexperts.com/q/Visual-Basic-1048/VBA-Macro-Macro.htm
die gebruikt daarvoor onderstaande code.

Answer
do not attempt this unless you are inter level vba coder.

here is a method:

a macro can be called only from open workbooks and NOT from closed workbooks.
if you need to access these macros, you need to code to open these workbooks
for this, you need to use:
' check under tools _references- Excel objects are checked
Code:
Sub Finder()
Dim xl As Excel.Application
Dim strFileName As String

strFileName = "C:\Documents and Settings\ravindra\My Documents\test_bed.xls"
Set xl = CreateObject("excel.Application")
xl.Workbooks.Open (strFileName)
' substitute your file here
  xl.Visible = True
xl.Run "Test_bed!MFromOtherFile"
xl.ActiveWorkbook.Application.ActiveWindow.Close (savechanges = False)
  xl.Application.Quit
   Set xl = Nothing
End Sub
run this macro from the first sheet to get at the macro on the second sheet.
and so on

ravindra mg
 
Laatst bewerkt:
De eerste oplossing werkte niet.
Bij de tweede zag ik dat de Macro werd gestart maar ik kreeg halverwege de melding:
"Microsoft Office Excel wacht totdat een andere toepassing een OLE-bewerking heeft voltooid"
Waarna als ik op Ok klik ik zie dat hij het formulier niet opgeslagen heeft

Iemand enig idee?
 
kijk eens naar het simpele voorbeeld:
Code:
Sub Test()

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
    
    Workbooks.Open Filename:="C:\naam van het te openen bestand met .xls extensie"
    
    Application.Run ("filewaarin je macro staat zonder .xls extensie!naam van je macro")
    
    ActiveWindow.Close savechanges:=True

Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True

End Sub

ten eerste moet je wel je functies ook weer op true zetten, maar denk dat dat een schoonheid foutje is.
Het runnen van een macro vanuit een ander geopent blad kan je het beste proberen met de meest simpele test.
Als deze lukt kan je de code verder uit bouwen met bv een zoek functie.

Als ik de code boven run dan gaat deze goed probeer ik het zelfde met jouw code er in geplakt dan gebeurt er weinig.
1 Ik zou je zoek loop nogmaals na lopen of deze werkelijk wat vindt.
2 je benamingen van je files in je codecontroleren, zie erg vaak bestand1.xls staan.

Succes.
 
Om een Excelbestand (E:\macrotest.xls) te openen en de macro (tst), die in de module (Blad1) zit uit te voeren

Code:
Sub tst()
  With Workbooks.Add("E:\macrotest.xls")
    Application.Run "Macrotest.xls!Blad1.tst"
    .Close False
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan