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

Tabelle in andere Arbeitsmappe kopieren

Frage Microsoft Microsoft Office

Mitglied: 68023

68023 (Level 1)

01.09.2008, aktualisiert 04.09.2008, 4931 Aufrufe, 7 Kommentare

Hallo,

ich benötige bei folgendem Problem Hilfestellung:
Mein Skript durchläuft eine Liste mit Dateinamen (datei), sucht sich daran ein spezielles Blatt (land) und soll diese nun in eine Sammel-Datei (hier) kopieren.

Beim Kopieren muss ich irgendwas durcheinander gebracht haben, denn nicht der Inhalt der geöffneten Datei sondern der Inhalt der Sammel-Datei wird kopiert:

01.
            Workbooks(datei).Activate 
02.
            Sheets(land).Activate 
03.
                                        
04.
            Range("A1:Z176").Copy 
05.
                      
06.
            Workbooks(hier).Activate 
07.
            Sheets(land).Activate 
08.
            ActiveSheet.Paste 
09.
             
10.
            Workbooks(datei).Activate 
11.
            ActiveWorkbook.Close

Ich krieg die Peilung nicht ;)
Bestimmt ist der Fehler ganz offensichtlich. Bin für einen Wink dankbar!

Das fertige Skript ist denke ich sehr nützlich, werde daraus eine Anleitung schmieden!

Gruß
Nico
Mitglied: 68023
02.09.2008 um 16:21 Uhr
Hallo,

mittlerweile habe ich den Fehler vielleicht etwas eingegrenzt:

01.
            Workbooks(datei).Sheets(land).Activate 
02.
                                        
03.
            Range("A1:Z176").Copy 
04.
                      
05.
            Workbooks(hier).Activate 
06.
            Sheets(land).Activate 
07.
            ActiveSheet.Paste 
08.
             
09.
            Workbooks(datei).Activate 
10.
            ActiveWorkbook.Close
Ich bin jetzt zwar nachweislich im richtigen Sheet aber kopiert wird trotzdem irgendwas anderes...
Ich kann keinen Logikfehler sehen....... Bitte um Hilfe!

Danke!
Nico
Bitte warten ..
Mitglied: bastla
02.09.2008 um 22:35 Uhr
Hallo prinzipal87!

Du kannst zwar den Code etwas kompakter gestalten, zB
01.
Workbooks(datei).Sheets(land).Range("A1:Z176").Copy 
02.
Workbooks(hier).Sheets(land).Activate 
03.
ActiveSheet.Paste 
04.
Application.CutCopyMode = False 
05.
Workbooks(datei).Close
aber bei mir funktioniert auch schon Deine Version - so gesehen könnte es eigentlich nur am Variablenínhalt von "datei" oder "land" liegen ...

Grüße
bastla
Bitte warten ..
Mitglied: 68023
03.09.2008 um 15:24 Uhr
Hallo,

jetzt habe ich das ganze Projekt folgendermaßen erweitert:
1. es sollen alle Excel-Dateien eines Verzeichnisses in einer zusammegefasst werden (hierfür müssen alle Tabellen in die Konsolidierungsdatei kopiert werden)
2. gleiche Anforderung aber mit automatischer Umbenennung

Es hapert noch im 1. Schritt ;)

Laufzeitfehler 9, Index im ungültigen Bereich bekomme ich zwischen den Zeilen 22-27 beim zweiten Durchgang (beim ersten Durchgang findet das Skript sich selber und weicht entsprechend aus)

01.
Sub AlleTabelleninVerzeichniszusammenziehenbeigleichemNamen() 
02.
Dim i As Integer 
03.
Dim z As Integer 
04.
Dim mappe As Workbook 
05.
Dim mname As String 
06.
Dim hier As String 
07.
Dim tabelle As Worksheet 
08.
 
09.
 
10.
With Application.FileSearch 
11.
.NewSearch 
12.
.LookIn = ActiveWorkbook.Path 
13.
.SearchSubFolders = fale 
14.
.FileType = msoFileTypeExcelWorkbooks 
15.
.Execute 
16.
 
17.
For i = 1 To .FoundFiles.Count 
18.
     
19.
    mname = .FoundFiles(i) 
20.
    hier = ActiveWorkbook.Path & "\" & ActiveWorkbook.name 
21.
    If mname <> hier Then 
22.
        Workbooks.Open .FoundFiles(i), UpdateLinks:=0, ReadOnly:=True 
23.
        Workbooks(mname).Activate 
24.
         
25.
        For z = 1 To ActiveWorkbook.Worksheets.Count 
26.
                
27.
             Workbooks(mname).Sheets(z).Copy after:=Workbooks(ActiveWorkbook.name).Sheets(1) 
28.
                   
29.
        Next z 
30.
        'Workbooks(mname).Close 
31.
    End If 
32.
Next i 
33.
End With 
34.
End Sub
Vielen Dank für Eure Hilfe! Macht Spaß hier!!!
Nico
Bitte warten ..
Mitglied: 68023
03.09.2008 um 15:46 Uhr
Hallo,

es muss an dieser Zeile liegen:

01.
Workbooks.Open .FoundFiles(i), UpdateLinks:=0, ReadOnly:=True
Kann es sein, dass es nicht klappt, weil ich in FoundFiles einen absoluten Dateipfad mitbekomme statt einer Workbook-Bezeichnung?

Nico
Bitte warten ..
Mitglied: 68023
03.09.2008 um 16:39 Uhr
Ja am Schönsten ist es ja, wenn man selber zur Lösung kommt.
Es war tatsächlich der Pfad usw...

Hier eine lauffähige Version!

01.
Sub AlleTabelleninVerzeichniszusammenziehenbeigleichemNamen() 
02.
Dim i As Integer 
03.
Dim z As Integer 
04.
Dim mappe As Workbook 
05.
Dim mname As String 
06.
Dim hier As String 
07.
Dim hierwb As String 
08.
Dim tabelle As Worksheet 
09.
 
10.
hierwb = ActiveWorkbook.name 
11.
 
12.
With Application.FileSearch 
13.
.NewSearch 
14.
.LookIn = ActiveWorkbook.Path 
15.
.SearchSubFolders = fale 
16.
.FileType = msoFileTypeExcelWorkbooks 
17.
.Execute 
18.
 
19.
For i = 1 To .FoundFiles.Count 
20.
     
21.
    mname = .FoundFiles(i) 
22.
     
23.
    z = InStr(1, mname, ":") 
24.
    If z <> 0 Then 
25.
        mname = Right(mname, (Len(mname) - z)) 
26.
    End If 
27.
  
28.
    Do While InStr(1, mname, "\") <> 0 
29.
        z = InStr(1, mname, "\") 
30.
        mname = Right(mname, (Len(mname) - z)) 
31.
    Loop 
32.
  
33.
    If mname <> hierwb Then 
34.
        Workbooks.Open mname, UpdateLinks:=0, ReadOnly:=True 
35.
        Workbooks(mname).Activate 
36.
         
37.
        For z = 1 To ActiveWorkbook.Worksheets.Count 
38.
                
39.
             Workbooks(mname).Sheets(z).Copy after:=Workbooks(hierwb).Sheets(1) 
40.
                   
41.
        Next z 
42.
         
43.
        Workbooks(mname).Close 
44.
    End If 
45.
Next i 
46.
End With 
47.
End Sub
Bitte warten ..
Mitglied: bastla
03.09.2008 um 17:42 Uhr
Hallo prinzipal87!

Noch als Anmerkung zu der Zerlegung in den Zeilen 23 - 31:

Etwas eleganter wird es mit InStrRev()
01.
z = InStrRev(mname, "\") 
02.
If z > 0 Then mname = Mid(mname, z + 1)
oder mit Split()
01.
temp = Split(mname, "\") 
02.
mname = temp(UBound(temp))
Beide Beispiele berücksichtigen keinen ":", da die Zerlegung ohnehin vom Ende her erfolgt und eine Pfadangabe der Art "D:Datei.xls" (also ohne enthaltenen "\") zwar erlaubt und möglich, aber hier nicht zu erwarten ist.

Schließlich gäbe es noch bei Verwendung des "FileSystemObject" die Methoden ".GetBaseName" und ".GetExtensionName" (erstere liefert nur den Namen, ohne Pfad und Typ, letztere nur den Dateityp) oder einfach nur ".GetFileName".

Grüße
bastla
Bitte warten ..
Mitglied: 68023
04.09.2008 um 09:26 Uhr
Hallo bastla,

danke für den Tip!
Du bist mir unheimlich > selbst bei gelösten Topics gibst du noch nicht auf ;)
Also dankeschön!
Nico
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Dynamische tabellen erstellen und in einanderes arbeitsblatt kopieren (18)

Frage von hugothemagpie zum Thema Microsoft Office ...

Microsoft Office
gelöst Hyperlink zu einer bestimmten Registerkarte in einer Excel-Tabelle (2)

Frage von immobrauch zum Thema Microsoft Office ...

Microsoft Office
gelöst Übertrag in eine andere Tabelle (7)

Frage von charmeur zum Thema Microsoft Office ...

Datenbanken
gelöst SQL - Zwei Tabellen zusammenführen (6)

Frage von Memo66 zum Thema Datenbanken ...

Neue Wissensbeiträge
Viren und Trojaner

Neues Botnetz über IoT-Geräte

Information von certifiedit.net zum Thema Viren und Trojaner ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Externe IP von innen erreichbar machen (15)

Frage von Windows10Gegner zum Thema Router & Routing ...

Windows Installation
Windows 10 neu installieren (12)

Frage von imebro zum Thema Windows Installation ...

Windows Server
Frage zu Server Rack (11)

Frage von rainergugus zum Thema Windows Server ...