Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Variable Tabelle kopieren und in neue Excel-Datei verschieben

Frage Entwicklung VB for Applications

Mitglied: Gimli3311

Gimli3311 (Level 1) - Jetzt verbinden

19.02.2015, aktualisiert 16:39 Uhr, 2531 Aufrufe, 5 Kommentare

Guten Zusammen,

ich bin grad Praktikant bei einem Unternehmen und muss aus verschiedenen Excel Dateien die jeweils eine Tabelle haben eine groß Datei machen.
Eine Datei ist Folgendermaßen aufgebaut es ist eine Art Logbuch das bei Zelle A29 anfängt und N29 endet. Nach unten hin ist sie Variable je nachdem wie viel Einträge vorhanden sind.
Nun muss ich alle Dateien durchsuchen die Tabellen kopieren und in eine neue Datei schreiben.

Meine Probleme sind:
- Ich kann einen Wertebereich definieren aber nur einen festen. Wie kann ich es so programmieren das es variabel ist und den Wertebereich so setzt das es erkennt hier kommt nichts mehr?
- Wenn ich den Wertebereich habe, kann ich ihn zwar kopieren aber nur in der Excel-Datei, heißt wenn ich es in eine neue Datei kopieren will funktioniert es nicht.

Wäre schön wenn Ihr mir weiterhelfen könntet. Bin was VBA angeht Neuling.

Gruß Gimli3311
Mitglied: a47ae-ro
19.02.2015, aktualisiert um 12:39 Uhr
Hallo, leider habe ich nicht so ganz verstanden, wo jetzt das Problem ist.
Wenn du einen variablen Bereich hast kannst du die Daten als Tabelle formatieren und dieser einen Namen geben (z.B. Log1) und mit diesem Namen dann alle Daten, welche in der Tabelle liegen ansprechen.

Wenn du diese Daten jetzt in einem anderen Dokument verknüpfen möchtest, sollte dir hier geholfen werden.
https://support.office.com/de-AT/article/eine-Beziehung-zwischen-zwei-Ta ...
Ich hoffe ich konnte dir etwas weiterhelfen!
Mit freundlichen Grüßen,
Robin
Bitte warten ..
Mitglied: Gimli3311
19.02.2015, aktualisiert um 13:33 Uhr
Hallo a47ae-ro,

erstmals Danke für deine schnell Antwort

Zu meinem Ersten Problem das die Tabellen unterschiedlich lang sind muss ich doch dann bei jeder Excel-Datei die Tabelle formatieren und einen Namen geben oder? Da sehe ich das Problem das es über 500 verschiedene Excel-Dateien sind.

Danke für den Link, hab mich da mal reingelesen aber dort steht das es den s-verweis ersetz und nur möglich ist zwischen zwei Tabellen in der gleichen Datei und nicht von Datei zu Datei.
Als Beispiel: Datei 1. Logbuch Tabelle
Datei 2. Logbuch Tabelle
Datei 3. soll die Logbuch Tabellen von 1 und 2 kopiert bekommen.

Ich hoffe es ist bisschen verständlicher geworden.
Freue mich auf jede Hilfe und jeden Link.

Gruß Gimli3311

EDIT:

Hier mal das Vorhaben das ich habe:
01.
Sub Tabelle_kopieren() 
02.
03.
' Tabelle_kopieren Makro 
04.
05.
'Dateien müssen beide offen sein 
06.
07.
    'Datei ausgewählt. Zukunft --> Durch Variable angegeben 
08.
    Windows("IT37660_Logbuch.xlsx").Activate 
09.
    'Den zu makierten bereich selektiert. Zukunft --> Wertebereich automatisch defninieren 
10.
    Range("A29:N31").Select 
11.
    'Bereich kopiert 
12.
    Selection.Copy 
13.
    'Allgmeine Logbuch ausgewählt 
14.
    Windows("Allg_Logbuch.xlsx").Activate 
15.
    'Die Zelle ausgewählt in den die Kopier kopiert werden soll. Zukunft --> Schauen wo die nächste Zeile ist 
16.
    Range("A32").Select 
17.
    'Kopie eingefügt 
18.
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ 
19.
        SkipBlanks:=False, Transpose:=False 
20.
     
21.
End Sub
Bitte warten ..
Mitglied: goldfisch
LÖSUNG 19.02.2015, aktualisiert um 16:39 Uhr
hallo,

das läuft in etwa so, wie Du es auch in Excel selbst machen würdest:
- Mappe öffnen
- das richtige Blatt auswählen
- in Spalte A ganz nach unten springen - auf [A65535]
- mit Ctlr-Cursor_hoch auf die letzte gefüllte Zelle springen

In VBA geht das so:
- Mappe öffnen
- das richtige Blatt auswählen
With worksheets("Bla")... End With)
- letzte gefüllte Zeile bestimmen:
maxrow = Range(Cells(1, 1), Cells(1, Rows.count).End(xlUp).row
Rows.count ist soweit ich weiß immer 65535, besser, man verwendet keine Konstante.
Hier wird die letzte Zelle in Spalte A bestimmt. Wenn das unsicher ist, ob die gefüllt ist, dann nimm eine andere Spalte.
So bestimmst Du den Bereich, der zu kopieren ist.

Dann kopierst Du den Inhalt, am besten auf eine VBA-Variable und nicht in die Zwischenablage, so etwa:
- DIM tab as Variant 
   tab = range("A29:N" & maxrow).value
- zur Gesamtmappe wechseln und dort hineinkopieren, etwa
workbooks("Gesamt").worksheets(1).[A500].value = tab
Du kannst Dir ja merken, wo die nächste freie Zeile in der Gesamttabelle ist.

HTH,

goldfisch
Bitte warten ..
Mitglied: 114757
LÖSUNG 19.02.2015, aktualisiert 20.02.2015
Moin zusammen,
das ist schnell zusammengeschrotet . Guckst du hier:
(In Zeile 4 einfach den Pfad zu den *.xlsx Dateien angeben und freuen. Die Daten werden im aktuellen Sheet untereinander zusammengefasst. Der Rest ist im Code kommentiert)
01.
Sub ImportTables() 
02.
    Dim wb As Workbook, fso As Object, rngOut As Range, f As String 
03.
    'Pfad in dem die *.xlsx Dateien liegen 
04.
    Const PATHFILES = "D:\daten" 
05.
     
06.
    Application.ScreenUpdating = False 
07.
    Application.DisplayAlerts = False 
08.
     
09.
    With ActiveSheet 
10.
        'erste Ausgabezelle festlegen 
11.
        Set rngOut = .Range("A1") 
12.
        'hole die erste *.xlsx-Datei des Ordners 
13.
        f = Dir(PATHFILES & "\*.xlsx") 
14.
        'Loope solange bis alle Dateien verarbeitet wurden 
15.
        Do While f <> "" 
16.
            'öffne Datei 
17.
            Set wb = Workbooks.Open(PATHFILES & "\" & f, ReadOnly:=True) 
18.
            'kopiere den Inhalt der Tabelle in das aktuelle Sheet 
19.
            With wb.Sheets(1) 
20.
                .Range("A29:N" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy rngOut 
21.
            End With 
22.
            'schließe Dokument wieder 
23.
            wb.Close False 
24.
            'Ausgabezelle für den nächsenm Import ermitteln 
25.
            Set rngOut = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
26.
            'hole Namen der nächsten Datei 
27.
            f = Dir 
28.
        Loop 
29.
    End With 
30.
    Application.ScreenUpdating = True 
31.
    Application.DisplayAlerts = True 
32.
End Sub
Gruß jodel32
Bitte warten ..
Mitglied: Gimli3311
19.02.2015 um 15:36 Uhr
Vielen Dank Ihr zwei =)

Jodel32 dein Code funktioniert perfekt hast mir super weitergeholfen
Es macht genau das was es soll =)

Ich werde mich aber spätestens morgen wieder melden da ich mir sicher bin das ich noch einige Sachen nicht hinbekomme.
Wills aber erst mal selber versuchen, bevor ich euch um Rat bitte
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel VBA UserForm1 - Daten in neue Datei kopieren (10)

Frage von abuelito zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel Dateikarte samt Funktionen kopieren (1)

Frage von Yanmai zum Thema Microsoft Office ...

Microsoft Office
gelöst Daten (Tabelle) aus E-Mail nach Excel übertragen (6)

Frage von kaiuwe28 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Batch & Shell
Batch Programm verhalten bei shoutdown -p (18)

Frage von Michael-ITler zum Thema Batch & Shell ...

Router & Routing
Freigabe aus anderem Netz nicht erreichbar (15)

Frage von McLion zum Thema Router & Routing ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...

Festplatten, SSD, Raid
Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (12)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...