Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro um Tabellen untereinander zu kopieren
#11
Hallo Ralf,

bei mir läuft es mit entfernten Anführungszeichen. Problem kann natürlich sein, wenn z.B. in Deinem Testverzeichnis Dateien liegen, die als aktives Blatt ein Diagrammblatt haben oder Makrodateien mit Autostart- / Workbook_Open-Makros oder ...

Das feste Verdrahten würde aber voraussetzen, dass die Datei auch in das Verzeichnis mit den Daten kommt. Ich mache das nicht, weil das zum einen nicht gefordert war und zum anderen kann es durchaus sogar hinderlich sein, wenn man Daten im Netzverzeichnis hat und dort keine Makrodateien ablegen kann. Man müsste auch schauen, ob sich die Masterdatei nicht selbst kopiert Smile ... Als Konstanten am Programmanfang ist das recht übersichtlich und man braucht die Angaben nur dort zu ändern.

Wo Stefan jetzt bei mir eine Paste gesehen hat und ein fehlendes ThisWorkbook kann ich nun wiederum nicht nachvollziehen Sad und ein Master.xlsb von Ralf gibt es doch nicht, oder? Da steht nur Master.xlsx im Posting #2.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#12
Hallo André,

(13.06.2015, 18:47)schauan schrieb: Wo Stefan jetzt bei mir eine Paste gesehen hat und ein fehlendes ThisWorkbook kann ich nun wiederum nicht nachvollziehen Sad

das Paste steht im Beitrag Nr. 6 von Ralf und du hast es im Folgebeitrag auch drin stehen.

Und mit dem ThisWorkbook: Da wollte ich auch die passende Datei verweisen.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#13
Hi André,
(13.06.2015, 18:47)schauan schrieb: bei mir läuft es mit entfernten Anführungszeichen. Problem kann natürlich sein, wenn z.B. in Deinem Testverzeichnis Dateien liegen, die als aktives Blatt ein Diagrammblatt haben oder Makrodateien mit Autostart- / Workbook_Open-Makros oder ...

Das feste Verdrahten würde aber voraussetzen, dass die Datei auch in das Verzeichnis mit den Daten kommt. Ich mache das nicht, weil das zum einen nicht gefordert war und zum anderen kann es durchaus sogar hinderlich sein, wenn man Daten im Netzverzeichnis hat und dort keine Makrodateien ablegen kann. Man müsste auch schauen, ob sich die Masterdatei nicht selbst kopiert Smile ... Als Konstanten am Programmanfang ist das recht übersichtlich und man braucht die Angaben nur dort zu ändern.

Wo Stefan jetzt bei mir eine Paste gesehen hat und ein fehlendes ThisWorkbook kann ich nun wiederum nicht nachvollziehen Sad und ein Master.xlsb von Ralf gibt es doch nicht, oder? Da steht nur Master.xlsx im Posting #2.

in meinem Testverzeichnis liegen nur diese 4 Dateien. Ich hänge sie jetzt nochmal dran:

.xlsb   Master.xlsb (Größe: 16,54 KB / Downloads: 6)

.xlsx   Daten 1.xlsx (Größe: 9,2 KB / Downloads: 5)
.xlsx   Daten 2.xlsx (Größe: 7,71 KB / Downloads: 4)
.xlsx   Daten 3.xlsx (Größe: 7,71 KB / Downloads: 4)

Mit dem festen Verdrahten hast Du recht.

Das Paste kam von meinem Makro aus Beitrag #6 von 09:36 h, weil ich zum Testen die Copy- und die Paste-Zeile getrennt habe, um rauszukriegen, wo der Fehler kommt.

Ich versuche es jetzt nochmal mit dem Master in einem anderen Verzeichnis.

Ne, kopiert immer noch nix.
Antworten Top
#14
Hallo Ralf,

versuche mal die Zeile so zu ändern.

Code:
Activeworkbook.Worksheets(1).Range(strSRange).Copy ThisWorkbook.Sheets(strSheet).Cells(ThisWorkbook.Sheets(strSheet).Cells(Rows.Count, 1).End(xlUp).Row + 1, iCol)
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#15
Hallo Stefan,

jetzt, wo Du es sagst Sad Ich hab mich so auf meinen code konzentriert, da ist mir die Paste von Ralf gar nicht aufgefallen. Smile

Aber die Ursache für das Nicht-Kopieren ist jetzt auch gefunden. Ich wundere mich nur, wieso bei mir neue Daten erschienen sind.
Normalerweise ist es so, dass sich eine Adressangabe ohne weitere Angaben auf das aktive Blatt bezieht. Das aktive Blatt ist das Blatt, mit dem eine Mappe geöffnet wurde - sofern man da nicht noch dran herumwerkelt. Das ist wohl nicht immer so.

Ich habe in der Überwachung sowohl ActiveWorkbook.Name als auch Range("A9:T44").Parent.Parent.Name geprüft und siehe da - ActiveWorkbook war zwar Daten1.xlsx, die "Großeltern" vom Range war jedoch die Master.xlsb.

Mit dem entsprechenden Zusatz funktioniert es dann:
ActiveSheet.Range(strSRange).Copy ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#16
Hi André und Stefan,

(13.06.2015, 20:38)schauan schrieb: Mit dem entsprechenden Zusatz funktioniert es dann:
ActiveSheet.Range(strSRange).Copy ...

ja, jetzt funktioniert es, jetzt wird es aber schon ab Zeile 2 eingefügt.

Jetzt mal sehen, was "Sunflower" dazu sagt.
Antworten Top
#17
Hallo Ralf,

Ist ein wichtiger Hinweis.

Ich vermute  nach der Fragestellung 2. und 3., dass die Einträge in der Masterdatei auch erst ab Zeile 9 losgehen werden. Da wird oben drüber noch ein Kopf und vielleicht mehr sein ...

Hier noch zwei weitere Hinweise:
1.  Es funktioniert nur dann, wenn in den 100 Tabellen die Spalte A bis zum Ende des Datenbereichs (bzw. zumindest in der letzten Zeile) gefüllt ist. Wenn z.B. in der letzten Zeile im Datenbereich kein Eintrag ist, wird diese Zeile nicht übernommen.
2. Wenn im kopierten Bereich Leerzeilen enthalten sind, werden diese nicht entfernt. Ich vermute aber, dass sich die Anforderung nach der Fragestellung 4. nur auf Leerzeilen zwischen den Bereichen der einzelnen Tabellen bezieht.

Schauen wir mal Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#18
Hallo,

hier dann noch mein Senf dazu. Smile
Die Masterdatei befindet sich mit den 100 Dateien in einem Verzeichnis.
Der Pfad wird automatisch ermittelt.

Code:
Sub AlleEinlesen()

 Dim lngAnzahlSpalten As Long
 Dim lngAnzahlZeilen As Long
 Dim lngStartzeile As Long
 Dim lngZaehler As Long
 Dim strDatei As String
 Dim strPfad As String
 Dim wsZiel As Worksheet
 
 lngAnzahlSpalten = 20
 lngAnzahlZeilen = 36
 lngStartzeile = 5 'erste Zeile im Zielblatt
 strPfad = ThisWorkbook.Path & "\"
 Set wsZiel = ThisWorkbook.Worksheets("Tabelle1")
 
 'Bildschirmflackern aus
 Application.ScreenUpdating = False
 
 'Zielbereich erst einmal leeren
 With wsZiel
   .Range(.Cells(lngStartzeile, 1), .Cells(.Rows.Count, .Columns.Count)) = ""
 End With
 
 strDatei = Dir(strPfad & "*.xls*")  'erste Datei im Verzeichnis
 
 Do While strDatei <> ""   'Schleife, solange eine Datei gefunden wurde
   If strDatei <> ThisWorkbook.Name Then 'nur andere Dateien werden geöffnet
     With Workbooks.Open(Filename:=strPfad & strDatei, ReadOnly:=True)
       'Bereichsübertrag
       wsZiel.Cells(lngStartzeile + lngAnzahlZeilen * lngZaehler, 1).Resize(lngAnzahlZeilen, lngAnzahlSpalten).Value = _
         .Worksheets(1).Cells(9, 1).Resize(lngAnzahlZeilen, lngAnzahlSpalten).Value
       .Close False  'Quellmappe schliessen
     End With
     lngZaehler = lngZaehler + 1
   End If
   strDatei = Dir() 'Naechste Datei im Verzeichnis ermitteln
 Loop
 
 'Bildschirmflackern ein
 Application.ScreenUpdating = True
 
 MsgBox "Es wurden " & lngZaehler & " Dateien übertragen.", vbInformation
End Sub

Gruß Uwe
Antworten Top
#19
Hi Uwe,

(14.06.2015, 06:57)Kuwer schrieb: hier dann noch mein Senf dazu. Smile
Die Masterdatei befindet sich mit den 100 Dateien in einem Verzeichnis.
Der Pfad wird automatisch ermittelt.

dies ist auch sehr schön gelöst.

Was anderes:
Wenn ich die Master-Datei abspeichere (schon von Anfang an), kommt immer der Warnhinweis, daß möglicherweise persönliche Daten enthalten seien, die durch die Dokumentenüberprüfung nicht entfernt werden können. Wie bekomme ich diese Meldung weg? Es liegt nicht an den ActiveX-Formular-Steuerelementen.
Antworten Top
#20
Hi Ralf,

das hat mich auch gewundert. Vielleicht liegt es ja daran, dass Du aus einer Uraltdatei (Inhalt erstellt: 16.09.2006 2:00) diese xlsb erstellt hast.  Huh

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste