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

Tabelle in andere Arbeitsmappe kopieren

Frage Microsoft Microsoft Office

Mitglied: 68023

68023 (Level 1)

01.09.2008, aktualisiert 04.09.2008, 4896 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...