Registriert seit: 31.08.2016
Version(en): 2010
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
03.09.2016, 07:15
(Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2016, 07:16 von schauan.)
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)
Registriert seit: 29.09.2015
Version(en): 2030,5
03.09.2016, 14:09
(Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2016, 14:10 von snb.)
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
Registriert seit: 12.04.2014
Version(en): Office 365
03.09.2016, 14:28
(Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2016, 14:28 von Peter.)
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
Registriert seit: 06.12.2015
Version(en): 2016
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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 FalschGruß Uwe
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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.
Gruß Uwe
Registriert seit: 29.09.2015
Version(en): 2030,5
03.09.2016, 16:25
(Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2016, 16:25 von snb.)
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