Liebe Leute von vb-paradise,
nachdem ich stundenlang getestet und probiert und gegoogelt habe, gebe ich auf... Ich brauche eure Hilfe.
Ich habe ein VBScript und rufe damit ein VBA Makro auf (Code unten). Das Problem dabei ist: Das Makro wird 2x ausgeführt, obwohl ich es in VBScript nur 1x aufrufe!
Konkret: Ich habe eine .bat-Datei, die ein VBScript zusammen mit einem command-line-Argument aufruft (+ redirect des outputs in eine Datei). Die .bat-Datei sieht so aus:
Sowohl .bat-Datei als auch VBScript werden automatisch generiert. Die .bat-Datei wird dann von einem externen Programm ausgeführt.
Das VBScript geht davon aus, dass eine bestimmte Excel-Datei bereits geöffnet ist und ruft in dieser Excel-Arbeitsmappe dann ein Makro auf. Dabei wird das command-line-Argument ("VBA Argument" im Code oben) an das Excel VBA Makro übergeben.
Hier der VBScript Code:
Wie gesagt, der Code funktioniert prinzipiell, das Excel-Makro wird mit dem korrekten Argument ausgeführt - aber eben 2 Mal statt nur 1 Mal...
Könnt ihr mir hier irgendwie weiterhelfen? Was ist hier falsch??
Vielen Dank!
Jakob
Edit by ~blaze~:
Falsches Forum
-->*Thema verschoben*
nachdem ich stundenlang getestet und probiert und gegoogelt habe, gebe ich auf... Ich brauche eure Hilfe.
Ich habe ein VBScript und rufe damit ein VBA Makro auf (Code unten). Das Problem dabei ist: Das Makro wird 2x ausgeführt, obwohl ich es in VBScript nur 1x aufrufe!
Konkret: Ich habe eine .bat-Datei, die ein VBScript zusammen mit einem command-line-Argument aufruft (+ redirect des outputs in eine Datei). Die .bat-Datei sieht so aus:
Sowohl .bat-Datei als auch VBScript werden automatisch generiert. Die .bat-Datei wird dann von einem externen Programm ausgeführt.
Das VBScript geht davon aus, dass eine bestimmte Excel-Datei bereits geöffnet ist und ruft in dieser Excel-Arbeitsmappe dann ein Makro auf. Dabei wird das command-line-Argument ("VBA Argument" im Code oben) an das Excel VBA Makro übergeben.
Hier der VBScript Code:
Visual Basic-Quellcode
- Set XLHandle = GetObject(, "Excel.Application")
- XLHandle.DisplayAlerts = False
- XLHandle.Visible = False
- On Error Resume Next
- sWbkPath = "C:\Ein Pfad\"
- sWbkName = "temp 123.xls"
- sWbkFullName = "'" & sWbkPath & sWbkName & "'!"
- sMacroName = "Test2" & "(" & Chr(34) & WScript.Arguments(0) & Chr(34) & ")"
- sMacroName = sWbkFullName & sMacroName
- 'WScript.echo sMacroName
- XLHandle.Run sMacroName
- boolRC = Err.Number <> 0
- On Error GoTo 0
- If boolRC Then
- WScript.Echo Time() & ": Run Excel Macro, Failed to call macro | Incorrect or not existing macro"
- Else
- WScript.Echo Time() & ": Run Excel Macro, Successfully invoked macro"
- End If
- Set XLHandle = Nothing
Wie gesagt, der Code funktioniert prinzipiell, das Excel-Makro wird mit dem korrekten Argument ausgeführt - aber eben 2 Mal statt nur 1 Mal...
Könnt ihr mir hier irgendwie weiterhelfen? Was ist hier falsch??
Vielen Dank!
Jakob
Edit by ~blaze~:
Falsches Forum
-->*Thema verschoben*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „~blaze~“ ()