Dateinamen auslesen & Makro starten

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Sensemann.

    Dateinamen auslesen & Makro starten

    Hi Community,

    ich habe folgendes VBS Problem:

    Programm A erzeugt ein Excel File (mit wechselnden Namen) im Ordner C:\Test
    Das VB-Script soll nun den Dateinamen aus dem Ordner auslesen, in Excel öffnen und das MacroA in Excel starten.
    Es ist immer nur eine Datei im Ordner.

    Ich hab mich dabei schon versucht, aber scheitere an zwei Dingen:
    1.: Den Dateinamen auszulesen (mit festen Dateinamen startet Excel) und
    2.: das Makro kann nicht gestartet werden. Es ist in der Personal.xlsb hinterlegt, die wird aber nicht beim öfnnen von excel über vbs geladen.

    Über Hilfe wäre ich sehr dankbar. Das ist mein blutiger Versuch ;( :

    dim DriveSpec
    Drivespec= "C:\Test\"
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    GetAName = fso.GetFileName(DriveSpec)
    dim excel
    set e = CreateObject("Excel.Application")
    e.visible = true
    e.workbooks.open (drivespec&GetAName)
    e.Application.Run (MacroA)
    set e = Nothing
    set fso = Nothing

    Vielen Dank,
    Sensemann.

    Visual Basic-Quellcode

    1. Drivespec= "C:\Test\"
    2. Set fso = CreateObject("Scripting.FileSystemObject")
    3. Set Folder = fso.GetFolder(DriveSpec)
    4. For Each File In Folder.Files
    5. If Right(File.Name ,4) = "xlsx" Then
    6. Set xl = CreateObject("Excel.Application")
    7. Set wb = xl.Workboos.Open (File.Path)
    8. xl.Run "MacroA"
    9. wb.Close False
    10. xl.Quit
    11. WScript.Quit
    12. End If
    13. Next
    Wenn das Macro global erreichbar ist, sollte es so gehen.

    Ohne Gewähr, ist aus dem Kopf getippt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Leider funktioniert der Makro-Aufruf noch nicht. Er findet das Makro nicht und sagt, dass es in de Arbeitsmappe nicht verfügbar ist, oder alle Makros deaktivier wurden. Hast du dafür noch eine Idee?

    Der restliche Code war aber prima, vielen Dank! Ich habe zwei Ergänzungen eingefügt und einen Tippfehler korrigiert.

    Visual Basic-Quellcode

    1. Drivespec= "C:\Test"
    2. Set fso = CreateObject("Scripting.FileSystemObject")
    3. Set Folder = fso.GetFolder(DriveSpec)
    4. For Each File In Folder.Files
    5. If Right(File.Name ,3) = "xls" Then
    6. Set xl = CreateObject("Excel.Application")
    7. xl.DisplayAlerts = False
    8. Set wb = xl.Workbooks.Open (File.Path)
    9. xl.Run "MakroA"
    10. wb.Close False
    11. xl.Quit
    12. fso.DeleteFile(File.Path)
    13. WScript.Quit
    14. End If
    15. Next

    Die Lösung

    Nach etwas internationaler Hilfe nun der funktionierende Code:
    Einfach und simple Methode, um das Problem zu lösen.

    Visual Basic-Quellcode

    1. Drivespec= "C:\Test\"
    2. Set fso = CreateObject("Scripting.FileSystemObject")
    3. Set Folder = fso.GetFolder(DriveSpec)
    4. For Each File In Folder.Files
    5. If Right(File.Name ,3) = "xls" Then
    6. Set xl = CreateObject("Excel.Application")
    7. xl.DisplayAlerts = False
    8. Set wb = xl.Workbooks.Open (File.Path)
    9. Set wb2 = xl.Workbooks.Open("C:\...\Personal.xlsb") 'Hier Ordner anpassen
    10. xl.Run wb2.Name & "!MakroA"
    11. wb.Close False
    12. xl.Quit
    13. fso.DeleteFile(File.Path)
    14. WScript.Quit
    15. End If
    16. Next