Arbeitsblätter aus Mappen Zusammenführen
#1
Hallo Zusammen, 

Ich bin der Verzweiflung nahe und hoffe auf eure Hilfe bevor ich noch mehr graue Haare bekomme ;)

Folgende Herausforderung: Ich möchte aus mehreren Arbeitsmappen ein bestimmtes Arbeitsblatt (welches in allen identisch Aufgebaut ist und mit Zählen durch Formeln befällt wird) in eine neue Mappe   Zusammenführen. Jedoch für jedes Blatt ein eigener Reiter, welche die Inhalte übernimmt.

Leider habe ich keine Ahnung von VBA, ist dies dann überhaupt möglich?

Danke euch schon mal
Top
#2
Hallöchen,

ja, das ist mit VBA möglich. Du könntest mit dem Makrorekorder mal alles, was automatisch gehen soll, einmal aufzeichnen (mit einer Datenquelle) und dann passen wir den Code an.

Aufzeichnen ist noch einfach, da hast Du unten links neben "Bereit" ein Symbol zum Starten und dann zum Beenden.
Den Code findest Du dann im VBA-Editor. Dorthin gelangst Du mit der Tastenkombi ALT+F11.
Im Editor findest Du links den Projektexplorer mit Deiner Datei. Da musst Du eventuell doppelt drauf klicken damit sich die Struktur öffnet. Da findest Du dann auch ein "Modul..." Da klickst Du wieder doppelt drauf und hast dann rechts die Codeseite mit dem aufgezeichneten Code. Den postest Du dann hier.

Wenn Du die Dateien manuell öffnest dann reicht folgendes Szenario:
In die Zieldatei gehen
Rekorder starten
Blatt hinzufügen
In die Quelldatei gehen
Daten kopieren
In die Zieldatei gehen
Daten einfügen
Rekorder beenden

Wenn Du die Quellen auch automatisch öffnen willst, dann lass sie am Anfang zu und öffne sie gleich nach dem Blatt hinzufügen.

Wenn Du mehrere Quellen automatisch öffnen willst, bräuchte man entweder eine Liste der Quellen oder eine Info, wo die Quelldateien liegen und wie man die erkennen kann, z.B. alle Dateien eines Ordners oder alle Dateien die mit A anfangen oder was auch immer die Dateien eindeutig identifizierbar macht.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Kopiiert das Arbeitsblatt "daten" jeder gefundene xlsx Datei
Ändere directory "G:\OF\".

Code:
Sub M_snb()
  c00="G:\OF\"

  sq=split(createobject("wscript.shell").exec("cmd /c dir """ & c00 & "*.xlsx"" /b").stdout.readall,vbcrlf)

  for j=0 to ubound(sn)-1
    with getobject(c00 & sn(j))
      .sheets("daten").copy ,thisworkbook.sheets(thisworkbook.sheets.count)
      .close -1
    end with
  next
End Sub
Top
#4
Hallo snb,

ich habe von VBA so gut wie keine Ahnung und wollte deinen Code gerade ausprobieren.

Mit dem Code bekomme ich einen Laufzeitfehler, markiert wird die Zeile

For j = 0 To UBound(sn) - 1

Wenn ich das sn in der Zeile ganz frech auf sq ändere dann funktioniert der Code. Ist das ein Tippfehler oder hat es andere Gründe das der Originalcode bei mir nicht funktioniert?
Gruß
Peter
Top
#5
Hallo,

noch eine Verständnisfrage:

der Befehl heist

.close true 'für Speichern
.close fasle 'für nicht speichern

Oftmals kann das durch "0" für false und "1" für true gekürzt werden. Bedeutet dann "-1" true?

mfg
Top
#6
Hallo Fennek,

(03.09.2016, 14:41)Fennek schrieb: Oftmals kann das durch "0" für false und "1" für true gekürzt werden. Bedeutet dann "-1" true?

das ist ein Unterschied zwischen  WAHR in Excel = 1 und True in VBA = -1.
Sub TrueAndFalse()
 MsgBox "True = " & CLng(True) & vbNewLine & "False = " & CLng(False)
End Sub
Siehe auch  Wahr und Falsch

Gruß Uwe
Top
#7
Hallo Peter,

(03.09.2016, 14:28)Peter schrieb: Ist das ein Tippfehler oder hat es andere Gründe das der Originalcode bei mir nicht funktioniert?

Auch um solche Fehler zu vermeiden, gibt es Option Explicit, was aber unter snb´s Würde ist. Wink

Gruß Uwe
Top
#8
ist/war ein 'Tippfehler'


Code:
Sub M_snb()
  c00="G:\OF\"

  sn=split(createobject("wscript.shell").exec("cmd /c dir """ & c00 & "*.xlsx"" /b").stdout.readall,vbcrlf)

  for j=0 to ubound(sn)-1
    with getobject(c00 & sn(j))
      .sheets("daten").copy ,thisworkbook.sheets(thisworkbook.sheets.count)
      .close -1
    end with
  next
End Sub

Und est ist immer gut Code selbst zu prüfen.
Option Explicit ist noch ein 'spellchecker' noch im Stande Tippfeher zu behindern.

@Fennek

in VBA 0: false; -1: true
In Excel  0: false ; 1: true
Top


Gehe zu:


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