Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Bibermann am April 07, 2017, 14:56:47

Titel: Index außerhalb des gültigen Bereichs
Beitrag von: Bibermann am April 07, 2017, 14:56:47
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
Titel: Re: Index außerhalb des gültigen Bereichs
Beitrag von: Bibermann am April 07, 2017, 15:03:46
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
Titel: Re: Index außerhalb des gültigen Bereichs
Beitrag von: Beaker s.a. am April 07, 2017, 15:35:22
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
Titel: Re: Index außerhalb des gültigen Bereichs
Beitrag von: Bibermann am April 07, 2017, 16:04:51
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
Titel: Re: Index außerhalb des gültigen Bereichs
Beitrag von: Lachtaube am April 07, 2017, 16:16:54
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.
Titel: Re: Index außerhalb des gültigen Bereichs
Beitrag von: PhilS am April 07, 2017, 16:37:00
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.
Titel: Re: Index außerhalb des gültigen Bereichs
Beitrag von: Bibermann am April 07, 2017, 17:10:08
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.