Guten Forum,
ich möchte Module exportieren und nutze folgende Sub:
Public Sub ModulExport(strModulName As String, strTempPfad As String)
Dim ExternesProgramm As New clsExtProgrammeStarten
Dim intButton As Integer
On Error GoTo ModulExport_Fehler
Application.VBE.ActiveVBProject.VBComponents(strModulName).Export (strTempPfad)
'With ExternesProgramm
' .ProgramName = "Notepad++.exe"
' .Parameters = strTempPfad
' .WindowState = vbNormalFocus
' .ExecAppl
'If .Error Then Exit Sub
'While .IsRunning
' DoEvents
'Wend
intButton = MsgBoxEx("Notepad++ wurde beendet...", _
Array("OK"), vbInformation, "Exportbestätigung")
'End With
ModulExport_Fehler:
MsgBox Err.Description
End Sub
Sorry, habe den falschen Knopf gedrückt.
Weiter in meiner Problembeschreibung:
Wenn ich die Routine von einer Form aufrufe, mit Übergabe der Parameter strModulName und strTempPfad, bekomme ich die unter Betreff aufgeführte Fehlermeldung. Wenn ich nachstehende abgewandelte Routine im Direkfenster starte bekomme ich das gewünschte Ergebnis:
Public Sub ModulExport()
Dim strModulName As String
Dim strTempPfad As String
strModulName = "modTools"
strTempPfad = "D:\Temp\" & strModulName & ".bas"
On Error GoTo ModulExport_Fehler
Application.VBE.ActiveVBProject.VBComponents(strModulName).Export (strTempPfad)
Exit Sub
ModulExport_Fehler:
MsgBox Err.Description
End Sub
Hallo,
Prüfe mal den Datentyp von "MsgBoxEx".
Vielleicht kommt da ein Long-Wert zurück, der dann nicht in eine Interger-Variable
passt.
gruss ekkehard
Hallo Beaker s.a.
ZitatVielleicht kommt da ein Long-Wert zurück, der dann nicht in eine Interger-Variable
passt.
Habe die MsgBox auskommentiert, Fehler kommt trotzdem. Gibt es einen Unterschied zwischen einen Start der Sub im Direktfenster oder durch den Call der Sub aus einer Ergeignisroutine?
Gruss Heinz
Mit einem nicht existierenden Modulnamen erhalte ich auch den Fehler Nr. 9 - Subscript out of range.
BTW: das letzte Klammerpaar in der Anweisung ist falsch - oder zumindest überflüssig.
Zitat von: Bibermann am April 07, 2017, 16:04:51Gibt es einen Unterschied zwischen einen Start der Sub im Direktfenster oder durch den Call der Sub aus einer Ergeignisroutine?
Möglicherweise ist das
ActiveVBProject abhängig vom Aufruf-Kontext ein anderes. Versuch mal zur Fehleranalyse das durch
...VBProjects("GewünschterProjectname")... zu ersetzen.
Hallo Forum,
habe den Fehler selber gefunden. Bei den im Call der Sub übergebenen Parametern wurde in der aufrufenden Routine dem strModulName ein CrLf angehängt. Habe das Anhängsel entfernt, Fehler tritt nicht mehr auf.
Dank an Alle für das Nachdenken.