Doch, mit Umwegen
02.06.2016 02:13:03
Michael
Hi zusammen,
ich habe es mal ausprobiert, die externe Datei & dann dort die Inputbox "direkt" zu öffnen - wie Rudi bereits geschrieben angekündigt hatte, ging es nicht.
Aber: man kann in der auszulesenden Datei ein Makro hinterlegen, das diese Arbeit übernimmt.
In der auszulesenden Datei im Modul1:
Option Explicit
Sub WerteHolen()
Sheets(2).Range("C3") = _
Application.InputBox(prompt:="Bereich", Type:=8).Address
End Sub
Function FktWerteHolen(shName As String) As String
Sheets(shName).Select
FktWerteHolen = _
Application.InputBox(prompt:="Bereich", Type:=8).Address
End Function
Die Sub schreibt den Wert an eine bestimmte Stelle, die dann vom Makro abgegriffen werden kann, springt aber sehr wahrscheinlich an das vorm Speichern zuletzt geöffnete Blatt.
Die Function wählt erst das Blatt aus und öffnet dort die Inputbox.
In der aufrufenden Datei steht irgendwo (konkret habe ich's im Sheets(2) getestet):
Option Explicit
Sub WerteExtern()
' kompletter Pfad steht in C2
Application.Run "'" & Range("C2").Value & "'!WerteHolen"
'beim oberen Aufruf wurde nichts "übernommen", aber beim Debuggen
'mit F8 kann man mitbeobachten, wie der Wert dort in C3 geschrieben wird
'beim nachfolgenden Aufruf wird der gewählte Bereich ausgegeben,
'und zwar aus der als Parameter übergebenen "Tabelle1"
MsgBox Application.Run("'" & Range("C2").Value & "'!FktWerteHolen", _
"Tabelle1")
End Sub
Für den echten Praxis-Einsatz sollte man
- die externe Datei sauber öffnen & schließen
- die function as variant definieren, damit man verschiedene "Zustände" transportieren kann:
a) Blatt nicht gefunden
b) kein Wert gewählt (kann man auch vorbelegen)
c) Abbruch durch Benutzer
- das Sheets().select UND v.a. die Inputbox mit Errorhandling versehen: letztere ist etwas "dreckig" programmiert und gibt bei Abbruch nicht einfach einen "" zurück, sondern wirft einen Error.
Aber mit "VBA gut" sollte das kein Thema sein.
Schöne Grüße,
Michael