Bezug auf offene Mappen trotz variabler Dateinamen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Bezug auf offene Mappen trotz variabler Dateinamen von: Flo
Geschrieben am: 21.02.2005 14:31:14

Hallo,

ich möchte ein Makro schreiben welches zwischen den offenen Mappen wechselt.
Die Dokumente sollen aus einem Masterdokument heraus geöffnet werden (Button1) und über einen "Button2" soll dann ein weiteres Makro gestartet werden.

Das steckt hinter Button1:
------------------------------


Private Sub importieren_Click()
Dim varRetVal As Variant
  Dim n         As Integer
  varRetVal = Application.GetOpenFilename( _
          FileFilter:="Microsoft Excel-Dateien (*.xls), *.xls", _
          Title:="Eine oder mehrere Dateien zum Öffnen auswählen", _
          MultiSelect:=True)
  If IsArray(varRetVal) Then
    On Error Resume Next
    For n = LBound(varRetVal) To UBound(varRetVal)
      Workbooks.Open varRetVal(n)
    Next
    On Error GoTo 0
  End If
End Sub

------------------------------
klappt auch...

Die Namen der Dokumente die so geöffnet werden haben natürlich auch einen Namen, der Name ist aber unbekannt bzw. soll veränderbar sein. Wie kann ich mich im Makro auf diese Dateien beziehen, deren Namen ich bei programmieren noch nicht kenne und zuvor (s.o.) über einen Button geöffnet wurden. Ich brauch doch die Namen um zwischen den offenen Dokumenten springen zu können...
Kann ich beim Öffene vielleicht jeder der Dateien ein Sysnonym zuordenen?
z.B.: Test1.xls => Dok1
Beispiel.xls => Dok2
Name33.xls => Dok3
und dann schreibe ich im Makro immer nur "Dok1" bzw. "Dok2" usw.
So eine funktion müsste dann doch in mein "Importieren" (s.o.) integriert werden...

Zwischen Mappen mit bekannten Namen springe ich so:
------------------------------
Windows("Test1.xls").Activate
Windows("Beispiel.xls").Activate
------------------------------

Ist das so verständlich was mein Problem ist?!?

Vielen Dank für Hilfe ;-)

MfG
Flo
Bild


Betrifft: AW: Bezug auf offene Mappen trotz variabler Dateinamen von: Udo
Geschrieben am: 21.02.2005 15:20:22

Die Namen stehen in dem Array varRetVal. Du musst ihn nur außerhalb der Prozedur
als Public deklarieren.

Udo


Bild


Betrifft: AW: Bezug auf offene Mappen trotz variabler Dateinamen von: Flo
Geschrieben am: 21.02.2005 15:42:50

und wie mach ich dass???
Wie gesagt, meine VBA-Kenntnisse sind nicht so gut ;-)

Vielen Dank
Flo


Bild


Betrifft: AW: Bezug auf offene Mappen trotz variabler Dateinamen von: Udo
Geschrieben am: 21.02.2005 15:58:50

Oben, noch vor der Ersten Sub (oder Function):

Public varRetVal as Variant

Udo


Bild


Betrifft: AW: Bezug auf offene Mappen trotz variabler Dateinamen von: Flo
Geschrieben am: 21.02.2005 16:08:03

Ach so, hat er auch gleich akzeptiert...
Aber wie weise ich die Dateien beim öffnen einer Variablen zu?
Was muss ich dazu in mein "öffnen_Click()"???
Die Anzahl der Dateien variiert ja auch noch, wie hole ich denn die Anzahl der über "öffnen_Click()" geöffneten Dateien in die Schleife (wenn ich überhaupt ne Schleife brauche)...
-----------------------

Private Sub öffnen_Click()
Dim varRetVal As Variant
  Dim n         As Integer
  varRetVal = Application.GetOpenFilename( _
          FileFilter:="Microsoft Excel-Dateien (*.xls), *.xls", _
          Title:="Eine oder mehrere Dateien zum Öffnen auswählen", _
          MultiSelect:=True)
  If IsArray(varRetVal) Then
    On Error Resume Next
    For n = LBound(varRetVal) To UBound(varRetVal)
      Workbooks.Open varRetVal(n)
    Next
    On Error GoTo 0
  End If
End Sub

-----------------------

Danke noch mal für die schnellen Antworten...
Grüße
Flo


Bild


Betrifft: AW: Bezug auf offene Mappen trotz variabler Dateinamen von: Udo
Geschrieben am: 21.02.2005 17:43:19

Option Explicit
Dim varRetVal As Variant

Private Sub importieren_Click()
Dim n As Integer
  varRetVal = Application.GetOpenFilename( _
          FileFilter:="Microsoft Excel-Dateien (*.xls), *.xls", _
          Title:="Eine oder mehrere Dateien zum Öffnen auswählen", _
          MultiSelect:=True)
  If IsArray(varRetVal) Then
    On Error Resume Next
    For n = LBound(varRetVal) To UBound(varRetVal)
      Workbooks.Open varRetVal(n)
    Next
    On Error GoTo 0
  End If
End Sub


Private Function BaseName(Pfad) As String
'Isolieren des Dateinamen aus dem Pfad
Dim tmp As String, i As Integer
i = InStrRev(Pfad, "\") + 1
BaseName = Mid(Pfad, i, 256)
End Function

Sub testmakro()
'Auslesen aus dem Array
'Mit dem ausgelesenen Namen kannst du auf die Mappe zugreifen.
Dim Mappe As String
On Error Resume Next
Mappe = BaseName(varRetVal(1))
MsgBox Mappe
End Sub

Udo


Bild


Betrifft: AW: Bezug auf offene Mappen trotz variabler Dateinamen von: Flo
Geschrieben am: 24.02.2005 14:57:43

erst mal vielen Dank,
hmmm... aber das funktioniert doch nur wenn ich eine einzele Datei öffne oder verstehe ich das Makro falsch. Läuft es auch wenn ich 5 dateien über die Application.GetOpenFilename öffne?

Sorry, dass ich so lang nichts von mir habe hören lassen aber ich bin nur drei Tage die Woche am Platz...

Vielen Dank für jede Hilfe
MfG
Flo


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bezug auf offene Mappen trotz variabler Dateinamen"