Collapse column

Autor Thema: Exceltabellen auslesen, in neuer Exceltabelle ergänzen  (Gelesen 7192 mal)

Offline medic

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« am: November 08, 2011, 16:23:28 Nachmittag »
Hallo!
Ich habe folgende Problematik:

- Ich erhalte wöchentlich aus mehreren Betrieben eine Exceltabelle (z.B. KW21.xls oder KW43.xls) mit Auslastungen aus verschiedenen (vergleichbaren) Abteilungen (z.B. Abteilung A bis F). Die Daten liegen dort in einem Arbeitsblatt, das immer denselben Namen (Arbeitsauslastung) trägt.
- Ich möchte für jeden Betrieb die einzelne Wochenmeldungen in eine "Mastertabelle Betrieb" einlesen, in der das neue bzw. die vorhandenen Arbeitsblätter ergänzt wird. Also Arbeitsblatt KW21 mit den Inhalten aus der Datei KW21.xls -> Benennung Arbeitsblatt = Dateiname ohne „.xls“.
- In dieser Mastertabelle möchte ich die Ergebnisse der Abteilungen, die sich vergleichen lassen, ebenfalls als zusätzliches Arbeitsblatt wochenweise aufführen. Z.B. Abteilung A mit den Summen aus den einzelnen Kalenderwochen, Abteilung B mit den Summen aus….
- und zu guter Letzt´ möchte ich durch eine "Mastermastertabelle (:-D)  die Arbeitsblätter der Abteilungen auslesen und die Ergebnisse zusammenführen.
- supergenial wäre es, wenn ich in den jeweiligen Mastertabellen z.B. durch Angabe in einer Zelle bestimmen könnte, welche Dateien in den Arbeitsblättern dargestellt werden sollen (z.B. KW 31 bis KW40), sprich welche Wochen für einen Vergleich genutzt werden sollen.

Ich hab schon viel gesurft und gegoogelt, aber meine VBA Kenntnisse sind völlig eingerostet (letzmalig ca. 1995 ein bisschen mit VBA rumgespielt).
Ich hoffe es war einigermaßen verständlich und es findet sich jemand, der ein paar Ideen hat. Gerne auch zu den einzelnen Punkten!

Viele Dank im Voraus!!!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline Officer

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 59.503
    • Profil anzeigen
    • Excel-Inside Solutions
  • Office-KnowHow: Profi
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2019 / Office 365
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #1 am: November 09, 2011, 07:12:31 Vormittag »
Hallo medic,

da Deine Frage sehr umfangreich und die Lösung auch relativ komplex ist, wird eine Lösung im Forum schwer bis unmöglich werden.

Viele Grüße

Officer
Weitere Informationen, Tipps & Tricks findest du auf Excel-Inside.de
Bitte erfolgreich beantwortete Fragen als gelöst kennzeichnen -  zur Anleitung

Offline medic

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #2 am: November 09, 2011, 08:00:28 Vormittag »
Hallo officer,
das habe ich fast befürchtet. Aber es war ein Versuch wert. Vielleicht hat ja jemand "Teillösungen". Eine große Hilfe wäre z.B. das Einlesen der Exceltabellen (KWs) in eine Exceltabelle. Das würde schonmal viel Zeit und Handarbeit sparen

Grüße

medic

Offline Officer

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 59.503
    • Profil anzeigen
    • Excel-Inside Solutions
  • Office-KnowHow: Profi
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2019 / Office 365
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #3 am: November 09, 2011, 08:13:18 Vormittag »
Hallo medic,

gerne kann ich Dir anbieten, dass Du mir Deine beiden Dateien (Quell-Datei und Zieldatei) per E-Mail zukommen lässt und kurz beschreibst, welches Tabellenblatt aus der Quell-Datei ausgelesen und in die Zieldatei übertragen werden soll.

Die E-Mail findest Du in meinem Profil.

Viele Grüße

Question
Weitere Informationen, Tipps & Tricks findest du auf Excel-Inside.de
Bitte erfolgreich beantwortete Fragen als gelöst kennzeichnen -  zur Anleitung

Offline Officer

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 59.503
    • Profil anzeigen
    • Excel-Inside Solutions
  • Office-KnowHow: Profi
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2019 / Office 365
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #4 am: November 10, 2011, 08:38:52 Vormittag »
Hallo medic,

ich habe den Import der Dateien gelöst und habe dir auch bereits die entsprechende E-Mail mit Lösung und zukommen lassen.

Vollständigkeitshalber hier auch noch den Code sowie die Beispieldatei.

Der Code zum importieren der gewünschten Arbeitsmappen sieht wie folgt aus:

Code: Visual Basic
  1. Sub copy_KWsheet()
  2.  
  3. '** Kopieren des ersten Sheets aus der angegebenen KW-Arbeitsmappe
  4. '** Dimensionierung der Variabeln
  5. Dim strPath As String
  6.  
  7. '** Vorgaben definieren
  8. Set wbact = ThisWorkbook
  9. Set wsmas = ThisWorkbook.Sheets("Master")
  10.  
  11. '** Vorbereiten
  12. With Application
  13.   .ScreenUpdating = False
  14.   .Calculation = xlCalculationManual
  15. End With
  16.  
  17. '** Durchlaufen der Tabellen (KW) - Liste
  18. For a = 9 To 26
  19.  
  20.   '** Nur ausführen, wenn ein Tabellenblattname vorhanden ist
  21.  If wsmas.Cells(a, 2).Value <> "" Then
  22.          
  23.     '** Pfad zusammenbauen
  24.    strPath = wsmas.Range("B6").Value & wsmas.Cells(a, 2).Value
  25.    
  26.     '** Blattnamen auslesen
  27.    wsname = Left(wsmas.Cells(a, 2).Value, InStr(1, wsmas.Cells(a, 2).Value, ".") - 1)
  28.    
  29.     '** Prüfen, ob das Sheet bereits vorhanden ist, wenn ja, vorher löschen
  30.    Dim blatt As Object
  31.     For Each blatt In Sheets
  32.       If blatt.Name = wsname Then
  33.         Application.DisplayAlerts = False
  34.         blatt.Delete
  35.         Application.DisplayAlerts = True
  36.       End If
  37.     Next blatt
  38.    
  39.     '** Position des neuen Blattes ermitteln
  40.    i = Worksheets.Count
  41.    
  42.     '** KW-Datei öffnen
  43.    Workbooks.Open strPath
  44.    
  45.     '** Blatt kopieren
  46.    With ActiveWorkbook
  47.       .Sheets(1).Select
  48.       .Sheets(1).Copy After:=Workbooks(wbact.Name).Sheets(i)
  49.       .Close savechanges:=True
  50.     End With
  51.  
  52.     '** Namen für neues Sheet setzen
  53.    Workbooks(wbact.Name).Activate
  54.     ActiveSheet.Name = wsname
  55.  
  56.   End If
  57.  
  58. Next a
  59.  
  60. '** Ursprungszustand herstellen
  61. wsmas.Select
  62. With Application
  63.   .ScreenUpdating = True
  64.   .Calculation = xlCalculationAutomatic
  65. End With
  66.  
  67. '** Hinweis
  68. MsgBox "Die Dateien wurden korrekt importiert!", vbInformation, "Hinweis"
  69.  
  70. End Sub
  71.  

Diesen Code bitte in ein Modul kopieren.

Als Anlage beigefügt findest du auch die Beispieldatei.

Weitere Informationen, Tipps & Tricks findest du auf Excel-Inside.de
Bitte erfolgreich beantwortete Fragen als gelöst kennzeichnen -  zur Anleitung

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline medic

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #5 am: November 15, 2011, 14:31:29 Nachmittag »
Hallo.
Ich hab nun ein wenig rumprobiert und das Ganze funktioniert irgendwie nicht so richtig. Ich hab in das Verzeichnis eine andere xls reinkopiert (kw11.xls) und auch den Namen in das Feld B9 eingetragen. Das funktionierte der Import nicht (laufzeitfehler '1004' die Datei würde in dem Verzeichnis nicht existieren). Die korrekte Schreibweise in B9 und Slash am Ende hab ich beachtet.

Ich würde gerne die Dateien über eine Verkettung generieren lassen. Hierzu müsste die Berechnung auf automatisch belassen werden.

Ich hoffe ich bin nicht zu lästig  ??? :-[  ;)
« Letzte Änderung: November 15, 2011, 14:48:51 Nachmittag von medic »

Offline Officer

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 59.503
    • Profil anzeigen
    • Excel-Inside Solutions
  • Office-KnowHow: Profi
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2019 / Office 365
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #6 am: November 15, 2011, 14:39:50 Nachmittag »
Hallo medic,

ich habe die Datei so abgeändert, dass die Berechnung nicht deaktiviert wird.
Also bei mir werden die Datein korrekt eingelesen, vorausgesetzt der der Pfad in Zelle B6 und die Dateinamen ab Zelle B9 werden korrekt eingetragen. Den geänderten Code findest Du in der Anlage.

Viele Grüße

Officer
Weitere Informationen, Tipps & Tricks findest du auf Excel-Inside.de
Bitte erfolgreich beantwortete Fragen als gelöst kennzeichnen -  zur Anleitung

Offline medic

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #7 am: November 15, 2011, 15:03:55 Nachmittag »
Also wenn ich die Testdateien nutze, dass funktioniert es. Wenn ich aber Test KW30_B.xls in Test KW30_C.xls ändere und dementsprechend in dem Excel-Sheet anpasse, kommt die Fehlermeldung wie oben.

Die zellen A29 bis B38 sind ja irrelevant, oder?
« Letzte Änderung: November 15, 2011, 15:05:42 Nachmittag von medic »

Offline admin

  • Administrator
  • Newbie
  • *****
  • Beiträge: 47
    • Profil anzeigen
  • Office-KnowHow: Profi
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2019 / Office 365
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #8 am: November 15, 2011, 15:08:30 Nachmittag »
Hallo medic,

ja, die Zellen A29:B39 sind irrelevant.

Es muss ausschließlich der korrekte Pfad und der korrekte Dateiname ab B9 eingetragen werden.

Viele Grüße

Officer

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline medic

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #9 am: November 15, 2011, 15:20:46 Nachmittag »
Also das macht mich echt noch ganz kirre.

Ich habe nun noch mal alles neu runtergeladen und in einem nuenen Verzeichnis abgelegt. Den Pfad pber den explorer kopier (Vermeidung von Tipfehlern) und die Dateinamen benefalls kopiert.
Dann habe ich folgende Dateien angelegt: Test KW29_A.xls, Test KW29_B.xls und Test KW30_C.xls. Die ersten 2 (A & B) werden importiert. C nicht mehr: Laufzeitfehler '1004' Die Datei sei nicht vorhanden. Hab dann auch die Reihenfolge geändert. Erst A, dann C und dann B -> A wird importiert, danach Laufzeitfehler und die Datei existiert definitiv! Ich habe lediglich die B kopiert und unter C gespeichert.
Mit anderen Dateinamen z.B. kw29.xls kommt gleich die Fehlermeldung *esistzumverzweifeln*


Offline Officer

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 59.503
    • Profil anzeigen
    • Excel-Inside Solutions
  • Office-KnowHow: Profi
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2019 / Office 365
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #10 am: November 15, 2011, 15:26:24 Nachmittag »
Hallo medic,

bitte schicke mir per E-Mail deine Excel-Datei sowie Deine 3 zu importierenden Dateien zu. Ich werde sehen, woran es liegt.

Viele Grüße

Officer
Weitere Informationen, Tipps & Tricks findest du auf Excel-Inside.de
Bitte erfolgreich beantwortete Fragen als gelöst kennzeichnen -  zur Anleitung

Offline medic

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #11 am: November 15, 2011, 16:24:36 Nachmittag »
Jetzt funktioniert es!
Alles Klasse, alles super.
Wer lesen kann ist eindeutig im Vorteil!

Die Pfadangabe zu dem Jahr stimmte nicht und Excel blieb quasi im "Verzeichnis drüber" hängen. Hier befanden sich per Zufall noch die 2 Testdateien, die erfolgreich importiert wurden und danach fehlten ja die restlichen Dateien :-X
Excel kam also nie im richtigen Verzeichnis an und mir ist nicht aufgefallen, dass bei der Fehlermeldung der Pfad nicht stimmte!. :-[

Mit gesegntem Haupt gehe ich ehrführchtig auf die Knie und sage Danke!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline medic

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #12 am: November 22, 2011, 08:13:49 Vormittag »
Eine Kleinigkeit habe ich noch: Es wird immer das erste Arbeitsblatt (links) ausgelesen bzw. importiert. Wo kann ich im Script das Arbeitsblatt benennen, wenn in der auszulesenden Datei mehrere Arbeitsblätter sind (es sollen nicht mehrere Abreitsblätter aus einer Datei ausgelesen werden!)?

Hallo medic,

ich habe den Import der Dateien gelöst und habe dir auch bereits die entsprechende E-Mail mit Lösung und zukommen lassen.

Vollständigkeitshalber hier auch noch den Code sowie die Beispieldatei.

Der Code zum importieren der gewünschten Arbeitsmappen sieht wie folgt aus:

Code: Visual Basic
  1. Sub copy_KWsheet()
  2.  
  3. '** Kopieren des ersten Sheets aus der angegebenen KW-Arbeitsmappe
  4. '** Dimensionierung der Variabeln
  5. Dim strPath As String
  6.  
  7. '** Vorgaben definieren
  8. Set wbact = ThisWorkbook
  9. Set wsmas = ThisWorkbook.Sheets("Master")
  10.  
  11. '** Vorbereiten
  12. With Application
  13.   .ScreenUpdating = False
  14.   .Calculation = xlCalculationManual
  15. End With
  16.  
  17. '** Durchlaufen der Tabellen (KW) - Liste
  18. For a = 9 To 26
  19.  
  20.   '** Nur ausführen, wenn ein Tabellenblattname vorhanden ist
  21.  If wsmas.Cells(a, 2).Value <> "" Then
  22.          
  23.     '** Pfad zusammenbauen
  24.    strPath = wsmas.Range("B6").Value & wsmas.Cells(a, 2).Value
  25.    
  26.     '** Blattnamen auslesen
  27.    wsname = Left(wsmas.Cells(a, 2).Value, InStr(1, wsmas.Cells(a, 2).Value, ".") - 1)
  28.    
  29.     '** Prüfen, ob das Sheet bereits vorhanden ist, wenn ja, vorher löschen
  30.    Dim blatt As Object
  31.     For Each blatt In Sheets
  32.       If blatt.Name = wsname Then
  33.         Application.DisplayAlerts = False
  34.         blatt.Delete
  35.         Application.DisplayAlerts = True
  36.       End If
  37.     Next blatt
  38.    
  39.     '** Position des neuen Blattes ermitteln
  40.    i = Worksheets.Count
  41.    
  42.     '** KW-Datei öffnen
  43.    Workbooks.Open strPath
  44.    
  45.     '** Blatt kopieren
  46.    With ActiveWorkbook
  47.       .Sheets(1).Select
  48.       .Sheets(1).Copy After:=Workbooks(wbact.Name).Sheets(i)
  49.       .Close savechanges:=True
  50.     End With
  51.  
  52.     '** Namen für neues Sheet setzen
  53.    Workbooks(wbact.Name).Activate
  54.     ActiveSheet.Name = wsname
  55.  
  56.   End If
  57.  
  58. Next a
  59.  
  60. '** Ursprungszustand herstellen
  61. wsmas.Select
  62. With Application
  63.   .ScreenUpdating = True
  64.   .Calculation = xlCalculationAutomatic
  65. End With
  66.  
  67. '** Hinweis
  68. MsgBox "Die Dateien wurden korrekt importiert!", vbInformation, "Hinweis"
  69.  
  70. End Sub
  71.  

Diesen Code bitte in ein Modul kopieren.

Als Anlage beigefügt findest du auch die Beispieldatei.

Offline Officer

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 59.503
    • Profil anzeigen
    • Excel-Inside Solutions
  • Office-KnowHow: Profi
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2019 / Office 365
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #13 am: November 22, 2011, 15:51:32 Nachmittag »
Hallo medic,

schau bitte in Zeile 47 und 48 im Code. Dort stehe "Sheets(1)"

Wenn Du die 1 auf 3 abänderst, wird das dritte Tabellenblatt kopiert.

Ich hoffe, das hilft Dir weiter.

Gruß

Officer
Weitere Informationen, Tipps & Tricks findest du auf Excel-Inside.de
Bitte erfolgreich beantwortete Fragen als gelöst kennzeichnen -  zur Anleitung

Offline medic

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #14 am: November 22, 2011, 16:54:35 Nachmittag »
Ja Danke, das passt auch. Dachte, dass ich vieleicht auch den Namen des Arbeitsblattes eintragen kann. Aber so funktioniert es auch.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Exceltabellen auslesen, in neuer Exceltabelle ergänzen
« Antwort #15 am: November 22, 2011, 17:08:04 Nachmittag »
Hallo medic...

den Namen der Tabelle kannst Du auch verwenden. Die Objektauflistung Sheets() erwartet entweder
einen Index als Angabe oder den Namen der Tabelle. Spielereien...
Code: Visual Basic
  1.   Public Const cstSheetName  As String = "Tabelle2"
  2.  
  3.   Public Sub Test()
  4.  
  5.     MsgBox ThisWorkbook.Sheets(1).Name
  6.    
  7.     MsgBox ThisWorkbook.Sheets("Tabelle1").Name
  8.    
  9.     MsgBox ThisWorkbook.Sheets(cstSheetName).Name
  10.    
  11.     MsgBox ThisWorkbook.Sheets(cstSheetName).Index
  12.    
  13.   End Sub
  14.  
Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.