Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1846 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Excel Dateien durchsuchen und Werte einzeln in neue Excel Datei auslesen (1)

Frage von krischanii zum Thema Microsoft Office ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

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