Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1768to1772
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Unterschiedliche Blattnamen

Unterschiedliche Blattnamen
29.06.2020 16:53:11
börny
Mahlzeit,
folgendes Makro habe ich mir zusammengestellt, mit dem ich eine neue Exceldatei aus einem Pfad auswählen kann und aus welchem ich dann aus einem bestimmten Tabellenblatt Daten kopieren möchte.
Das Problem welches ich nun noch versuche zu lösen ist, dass das Tabellenblatt, welches ich aus der geöffneten Datei ansprechen will um die Daten zu kopieren, nicht immer den identischen Namen hat. Der im unten folgende Tabellenblattname "5.1 GuV_Übersicht" wird zwar in 80% der Fälle korrekt sein, jedoch gibt es noch weitere Bezeichnungen, so z.B. eine englische Übersetzun "5.1 P&L_Overview" sowie noch 2-3 weitere.
Wie kann ich diese unterschiedlichen Tabellenblattnamen abfangen (=das Makro sucht unter den mir vorgegebenen Tabellenblattnamen und nimmt dann den in der Datei vorhanenden Namen)? Geht das evtl. mit einer "if" Prüfung?
Hier das bisherige Makro:
Private Sub CommandButton1_Click()
Dim strPfad As Variant
Dim Wb As Workbook
Set Wb = ThisWorkbook
strPfad = Application.GetOpenFilename
If strPfad  False Then
TextBox1 = strPfad
Workbooks.Open Filename:=strPfad
Else
MsgBox "Nichts ausgewählt!"
End If
Sheets("5.1 GuV_Übersicht").Select
Sheets("5.1 GuV_Übersicht").Cells.Copy
Wb.Activate
End Sub

Vielen Dank für eure Hilfe.
Börny

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
die 3 Zeichen "5.1" stehen doch immer am Beginn
29.06.2020 17:09:06
Matthias
Hallo
Also mit einer Schleife abfragen, ob Left(DeinBlatt,3)="5.1
Z.B. so:
Dim x
For x = 1 To Worksheets.Count
If Left(Worksheets(x).Name, 3) = "5.1" Then
With Worksheets(x)
.Activate
.Cells.Copy
End With
Exit For
End If
Next
Gruß Matthias
AW: die 3 Zeichen "5.1" stehen doch immer am Beginn
30.06.2020 10:08:07
börny
Danke Matthias,
funktioniert das ganze auch, wenn ich mehrere ws in der Datei habe, die mit "5.1" beginnen? Oder nimmt excel dann nur das erste Blatt, dass mit diesem Kürzel startet?
Danke,
Börny
AW: Unterschiedliche Blattnamen
29.06.2020 17:39:27
Werner
Hallo,
hier unter Angabe der kompletten Namen der verschiedenen Blätter.
Option Explicit
Private Sub CommandButton1_Click()
Dim strPfad As Variant, Quelle As Workbook
Dim ws As Worksheet, boGefunden As Boolean
Application.ScreenUpdating = False
strPfad = Application.GetOpenFilename
If strPfad  False Then
'TextBox1 = strPfad keine Ahnung was du damit willst
Set Quelle = Workbooks.Open(strPfad)
Else
MsgBox "Nichts ausgewählt!"
Exit Sub
End If
For Each ws In Quelle.Worksheets
Select Case ws.Name
Case "5.1 GuV_Übersicht", "5.1 P&L_Overview"
With ws
boGefunden = True
End With
Exit For
Case Else
End Select
Next ws
If boGefunden Then
ws.Cells.Copy
'keine Ahnung wohin
Else
MsgBox "Blatt nicht gefunden."
Quelle.Close False
End If
End Sub
Außerdem mußt du nach deiner Messagebox "Nichts ausgewählt." aus der Prozedur aussteigen.
Gruß Werner
Anzeige
AW: Unterschiedliche Blattnamen
30.06.2020 10:11:17
börny
Servus Werner,
das ist wirklich ein super Vorschlag von dir, danke!
Wie komme ich aber mit den kopierten Daten wieder zurück zu meiner Exceldatei, aus der ich das Makro gestartet habe = Zieldatei? Da diese von Monat zu Monat anders benannt wird, kann ich keinen fixen Dateinamen verwenden.
Danke nochmal,
Bernhard
AW: Unterschiedliche Blattnamen
30.06.2020 10:23:27
Werner
Hallo,
ThisWorkbook ist die Datei, in der sich das Makor befindet.
So sprichst du z.B. mit
ThisWorkbook.Worksheets("Blattname").Range("A1")

die Zelle A1 im Blatt "Blattname" der Datei an, in der sich das Makro befindet.
Gruß Werner
Anzeige
AW: Unterschiedliche Blattnamen
30.06.2020 10:54:58
börny
... und den Code packe ich dann dorthin, wo du in deinem Makro-Vorschlag 'keine Ahnung wohin vermerkt hattest?
warum nicht einfach mal versuchen? oT
30.06.2020 11:09:25
Werner
AW: warum nicht einfach mal versuchen? oT
30.06.2020 11:21:05
börny
Guter Punkt und hatte ich in der Zwischenzeit auch schon versucht. Bekomme aber eine Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht"
Ich vermute, dass man "ThisWorkbook" erst noch am Anfang des Codes definieren muss, oder? Denn wenn ich deinen Zusatz (mit korrektem Blattname) nach dem Kopieren-Befehl einfüge nimmt Excel die durch das Makro geöffnete Datei als "ThisWorkbook" und findet das entsprechende Worksheet nicht?
AW: warum nicht einfach mal versuchen? oT
30.06.2020 11:47:31
Werner
Hallo,
was soll ich damit jetzt bitte anfangen?
Zeig mal deinen kompletten Code, so wie du ihn jetzt hast, und wie er nicht funktioniert.
Und noch mal: ThisWorkbook ist das Workbook in dem sich der VBA-Code befindet.
Gruß Werner
Anzeige
AW: warum nicht einfach mal versuchen? oT
30.06.2020 12:09:34
börny
Hier der Code in Verwendung:
Public Sub Daten_kopieren()
Dim strPfad As Variant, Quelle As Workbook
Dim ws As Worksheet, boGefunden As Boolean
Application.ScreenUpdating = False
strPfad = Application.GetOpenFilename
If strPfad  False Then
Set Quelle = Workbooks.Open(strPfad)
Else
MsgBox "Nichts ausgewählt!"
Exit Sub
End If
For Each ws In Quelle.Worksheets
Select Case ws.Name
Case "5.1 GuV_Übersicht", "5.1 P&L_Overview", "5.1 GuV_ÜbersichtH", "5.1 GuV_ÜbersichtK" _
, "5.1 P&L_Overview_Group"
With ws
boGefunden = True
End With
Exit For
Case Else
End Select
Next ws
If boGefunden Then
ws.Cells.Copy
ThisWorkbook.Worksheets("Cockpit").Range ("A1")
'keine Ahnung wohin
Else
MsgBox "Blatt nicht gefunden."
Quelle.Close False
End If
End Sub

Anzeige
AW: warum nicht einfach mal versuchen? oT
30.06.2020 12:12:30
Werner
Hallo,
das Kopieren ins Zielblatt muß in eine Codezeile
If boGefunden Then
ws.Cells.Copy ThisWorkbook.Worksheets("Cockpit").Range("A1")
Else
MsgBox "Blatt nicht gefunden."
Quelle.Close False
End If
Gruß Werner
AW: warum nicht einfach mal versuchen? oT
30.06.2020 13:37:42
börny
Nochmals Danke Werner. Verstehe und würde so auch funktionieren.
Mein Ziel war aber, "nur" die Daten zu kopieren und dann wieder in die Datei zu wechseln, von der aus das Makro gestartet wurde. Dort erst möchte ich dann das richtige Tabellenblatt auswählen, in welches die Daten kopiert werden (das muss aber nicht mit dem besprochenen Makro erfolgen).
Mir wäre jetzt wie gesagt schon sehr geholfen, wenn ich nach dem Kopiervorgang wieder in der Datei lande, von der aus ich das Makro gestartet habe. Ich bin also kurz vor dem Ziel und hoffe das du nochmal einen Tipp für mich hast.
Anzeige
AW: warum nicht einfach mal versuchen? oT
30.06.2020 14:45:49
Werner
Hallo,
aus der Datei, die per Code geöffnet wird, kopierst du ja nur Daten raus.
Brauchst du diese geöffnete Datei noch oder kann die, nachdem die Daten kopiert wurden, wieder geschlossen werden?
Gruß Werner
AW: warum nicht einfach mal versuchen? oT
30.06.2020 15:26:11
börny
Hi Werner,
die Datei, aus der Daten kopiert werden, kann dann eigentlich wieder geschlossen werden. Korrekt.
Könnte ich hierfür den Code
Quelle.Close
verwenden?
Habe das auch bereits ausprobiert. Da die Datei dann geschlossen wird, frägt mich Excel ob ich die Daten in der Zwischenablage speichern möchte. Bejahe ich dies, kann ich aber nur noch Werte einfügen und nicht Werte und Formate.
Oder gibt es noch eine andere Möglichkeit, die Datei, aus der ich die Daten kopiere, erst nach dem Einfügen in der Zieldatei zu schließen. Aber dann habe ich wieder das Problem, dass ich einen Weg finden müßte, zur Zieldatei zurück zu kommen.
Hier nun der getestete Code
Public Sub Daten_kopieren()
Dim strPfad As Variant, Quelle As Workbook
Dim ws As Worksheet, boGefunden As Boolean
Application.ScreenUpdating = False
strPfad = Application.GetOpenFilename
If strPfad  False Then
Set Quelle = Workbooks.Open(strPfad)
Else
MsgBox "Nichts ausgewählt!"
Exit Sub
End If
For Each ws In Quelle.Worksheets
Select Case ws.Name
Case "5.1 GuV_Übersicht", "5.1 P&L_Overview", "5.1 GuV_ÜbersichtH", "5.1 GuV_ÜbersichtK" _
, "5.1 P&L_Overview_Group"
With ws
boGefunden = True
End With
Exit For
Case Else
End Select
Next ws
If boGefunden Then
ws.Cells.Copy
Quelle.Close
Else
MsgBox "Blatt nicht gefunden."
Quelle.Close False
End If
End Sub

Würde es nicht noch eine Möglichkeit geben, die Datei aus der ich das Makro starte, mit folgenden Parametern zu definieren?
Dim Wb As Workbook
Set Wb = ThisWorkbook
Dann könnte ich über Wb.Activate wieder zurück zur Zieldatei?
Danke
Anzeige
AW: warum nicht einfach mal versuchen? oT
30.06.2020 15:47:57
Werner
Hallo,
wenn du auch die Formate einfügen willst, dann muss sie offen bleiben.
Option Explicit
Public Sub CommandButton1_Click()
Dim strPfad As Variant, Quelle As Workbook
Dim ws As Worksheet, boGefunden As Boolean
strPfad = Application.GetOpenFilename
If strPfad  False Then
Set Quelle = Workbooks.Open(strPfad)
Else
MsgBox "Nichts ausgewählt!"
Exit Sub
End If
For Each ws In Quelle.Worksheets
Select Case ws.Name
Case "5.1 GuV_Übersicht", "5.1 P&L_Overview"
With ws
boGefunden = True
End With
Exit For
Case Else
End Select
Next ws
If boGefunden Then
ws.Cells.Copy
Else
MsgBox "Blatt nicht gefunden."
End If
Windows(ThisWorkbook.Name).Activate
End Sub
Gruß Werner
Anzeige
AW: warum nicht einfach mal versuchen? oT
30.06.2020 16:46:09
börny
Perfekt!!! Vielen Dank für deine Geduld!
Gerne u. Danke für die Rückmeldung. o.w.T.
30.06.2020 17:41:19
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige