Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
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

Per Makro Tabellenblätter von Mappe A nach Mappe B

Per Makro Tabellenblätter von Mappe A nach Mappe B
31.01.2017 20:56:48
Mappe
Hallo,
Da ich bis vor 2 Wochen ein 08/15 Excel User war der zwar wusste was ein Makro ist aber nicht wie man eines selber programmiert geschweige denn etwas mit VBA anfangen zu wusste entschuldige ich mich zu Beginn erst schon mal für eventuell die eine oder andere "dumme" Frage.
Zu Beginn möchte ich kurz den Hintergrund und die Zusammenhänge beleuchten was ich anstellen will. Es gibt in einer Mappe eine Tabelle "Auswertung", dieses Tabelle soll mit Messwerten aus anderen Tabellenblättern (Anzahl x; Name y,b,z) gefüttert werden. Um mir in der Auswertung Min, Max, Mittelwerte u.s.w. zu Berechnen. Ich habe mir durch Tagelanges Googlen schon einige Codes zusammengetragen so dass die Grundfunktion der Auswertung auch gegeben ist jedoch ist dies noch nicht so ganz dass was ich mir vorstelle.
Der Import der Dateien funktioniert, das Umbenennen jedoch nur, wenn ich jedes eingefügte Sheet direkt mit seinem alten Namen anspreche und ihm einen neuen Namen z.b. "Messung 1" gebe. Das Problem dabei ist das die Anzahl der Messungen sprich der Tabellen die importiert werden variiert und auch die Namen der Sheets, so dass ich dies über Debuggen jedes Mal händisch ab ändern muss.
Mein Wunsch wäre es, wenn es die Möglichkeit gebe nach dem Importieren der Sheets denen automatisch den Namen "Messung 1", "Messung 2", usw. zu geben. Ich hatte schon einen Ansatz über Sheet.Count jedoch bin ich dabei gescheitert dadurch das er mir das erste Tabellen Blatt auch mit umbenannt hat, was aber weiterhin "Auswertung" heißen soll. nachfolgend mal der Anfang meines Codes eventuell hat einer ja die Zeit und Lust mir dabei zu helfen und mir die Möglichkeit zu geben VBA etwas besser zu verstehen.

Sub Datenholen()
' Datenholen Makro
Dim WBZiel As Workbook, ExportDatei As Variant
Dim WBQuelle As Workbook, WSZiel As Worksheet
Set WBZiel = ThisWorkbook
'DateiÖffnen Dialog anbieten
ExportDatei = Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xls),*.xls", , "Bitte die  _
Datei öffnen ...")
ExportDatei = CStr(ExportDatei)
If ExportDatei = "Falsch" Then Exit Sub
'öffnen der ausgewählten Datei
Set WBQuelle = Workbooks.Open(ExportDatei)
ActiveWorkbook.Sheets.Select
ActiveWorkbook.Sheets.Copy After:=ThisWorkbook.Sheets(1)
Sheets("Auswertung").Select
WBQuelle.Close False
'Schreibschutz raus
Application.ScreenUpdating = True 'Bildschirm aktualisierung aus
For i = 1 To ActiveWorkbook.Sheets.Count
Sheets(i).Unprotect Password:="SL"
Next
Sheets("Auswertung").Select

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per Makro Tabellenblätter von Mappe A nach Mappe B
31.01.2017 21:16:15
Mappe
Hallo Christian,
ein Ansatz.
Sub Datenholen()
Dim i As Integer
'Schreibschutz raus u. Namen rein
For i = 2 To ThisWorkbook.Sheets.Count
ThisWorkbook.Sheets(i).Unprotect Password:="SL"
ThisWorkbook.Sheets(i).Name = "Messung " & i - 1
Next
ThisWorkbook.Sheets("Auswertung").Unprotect Password:="SL"
ThisWorkbook.Sheets("Auswertung").Activate
End Sub
Gruß Gerd
AW: Per Makro Tabellenblätter von Mappe A nach Mappe B
31.01.2017 22:49:22
Mappe
Hallo Gerd,
Vielen dank das du dir die Zeit genommen hast, das war genau das was ich gebraucht habe funktioniert Super. Eventuell kannst du mir bei den anderen Probemen auch noch helfen.
Im anschluss an das einfügen und umbennen der Sheets mit den Messwerten folgt zum einen ein Step wo ich von jedem Sheet der Messungen einen Wert auf das Blatt auswertung untereinander schreiben lasse, diese Spreche ich leider auch direkt mit dem Namen an wo wir wieder bei dem Problem sind das es immer unterschiedlich viele sind, sieht momentan dann so aus

Sheets("Auswertung").Select
'Sym Werte kopieren
Range("B43").Select
ActiveCell.FormulaR1C1 = "=SUM('Messung 1'!R[-15]C[14]:R[-15]C[16])"
Range("B44").Select
ActiveCell.FormulaR1C1 = "=SUM('Messung 2'!R[-16]C[14]:R[-16]C[16])"
Range("B45").Select
usw.

kann man diese Aktion irgendwie vereinfachen das es für Messung 1 bis Messung x funktioniert?
Das selbe Problem mit der immer unterschiedlichen Anzahl der Messungen habe ich im weiteren Verlauf noch einmal.

' Berechnung Angebunden RB aussen
Sheets("Auswertung").Select
Range("B11").Select
ActiveCell.FormulaR1C1 = "=MIN('Messung 1:Messung 32'!R[25]C[8]:R[45]C[8])"
Range("B12").Select
ActiveCell.FormulaR1C1 = "=MAX('Messung 1:Messung 32'!R[25]C[8]:R[45]C[8])"
Range("B13").Select
ActiveCell.FormulaR1C1 = "=AVERAGE('Messung 1:Messung 32'!R[25]C[8]:R[45]C[8])"

Anzeige
AW: Per Makro Tabellenblätter von Mappe A nach Mappe B
01.02.2017 21:01:52
Mappe
Hab heute ein bisschen rumexperimentiert und auch eine möglichkeit zum laufen bekommen in dem ich 32 Else If abfragen geschrieben habe, funktioniert zwar aber leider jetzt auf 4 Subs aufgeteilt bedingt durch die 64k größe eines einzelnen Subs was nun ja auch nicht unbedingt optimal ist.
Gibt es eine Möglichkeit nachfolgende Zeile so zu schreiben das Sie für 'Messung 1: bis Messung X' gültig ist. Wobei X für ein tabellenblatt von 2-32 stehen kann?
Falls es Hilft auf Sheet1 wird in Zelle B3 die Anzahl der Tabellenblätter die aktuell vorhanden sind ausgegeben.
ActiveCell.FormulaR1C1 = "=MIN('Messung 1:Messung 32'!R[25]C[8]:R[45]C[8])"
Bin für jeden Lösungsansatz dankbar
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige