Hallo liebe VBA-Profis,
ich habe folgendes Problem. Ich habe ein kleines Programm erstellt, dass Daten aus einer anderen Excel-Tabelle mit der ExecuteExcel4Macro-Funktion ausliest.
Die ausgelesenen Daten werden dann in einer Userform eingetragen. Prinzipiell funktioniert das Programm auch wunderbar aber es gibt ein Problem:
Sobald ich eine andere Excel-Datei öffne, stürzt meine Programmierung ab wenn ich Daten aus der externen Datentabelle abrufen will. ExecuteExcel4Macro braucht es, dass die Excel-Datei die den Code enthält aktiv ist.
Jetzt habe ich mir eine Funktion geschrieben die vor jedem Knopfdruck in meiner userform die Datei mit dem Code aktiviert damit meine GetValue Funktion keinen Fehler mehr produziert.
Das Problem ist nur, dass dadurch die Excel-Tabelle wieder sichtbar wird und die zusätzlich geöffnete Tabelle minimiert. Will ich jetzt aus dieser zusätzlich geöffneten Tabelle Daten in der Userform eingeben( Es handelt sich um Personendaten) wird das eine elende Hin- und Herklickerei und der gesamte Ablauf wird elend langsam.
Hat jemand eine Idee wie man die Datei mit dem Code akiviert, ohne dass die externe Datei dadurch abgeblendet wird?
Hier die GetValue-Funktion:
Public Function GetValue(Pfad, Datei, blatt, zelle)
Dim arg As String
arg = "'" & Pfad & "[" & Datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, , xlR1C1)
'** Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(arg)
End Function
und mein unbefriedigender Workaround:
Sub SaveKeep()
Application.ScreenUpdating = False
Workbooks("Steuerung.xlsm").Sheets("Start").Activate
Application.ScreenUpdating = True
End Sub
Das "Application.ScreenUpdating = False" hilft leider nicht. Mit "ThisWorkbook" erhalte ich ebenfalls die Fehlermeldung "Laufzeitfehler '9'.Index außerhalb des gültigen Bereichs." Ein anderer Workaround wäre Excel bei einer weiteren Datei eine neue Instanz öffnen zu lassen, so dass sich die Dateien nicht ins Gehege kommen. Das aber ändert auch wieder den Arbeitsablauf und das will ich vermeiden.
Wer hat eine Idee zu meinem Problem?
Lg
|