Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Index außerhalb des gültigen Bereichs

Begonnen von Bibermann, April 07, 2017, 14:56:47

⏪ vorheriges - nächstes ⏩

Bibermann

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

Bibermann

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

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Bibermann

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

Lachtaube

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.
Grüße von der (⌒▽⌒)

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Bibermann

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.