Aus ca. 100 Tabellenblättern ohne Datenverlust 1 erstellen

Dieses Thema Aus ca. 100 Tabellenblättern ohne Datenverlust 1 erstellen im Forum "Microsoft Office Suite" wurde erstellt von kasim, 1. März 2005.

Thema: Aus ca. 100 Tabellenblättern ohne Datenverlust 1 erstellen Hallo und guten Tag, ich versuche gerade gerade aus ca. 100 Tabellenblättern (Arbeitsblättern) den inhalt ohne...

  1. Hallo und guten Tag,

    ich versuche gerade gerade aus ca. 100 Tabellenblättern (Arbeitsblättern) den inhalt ohne Daten verlust in ein Tabellenblatt zu überführen.

    Hintergrund:
    Ich will versuchen aus einer DB die leider keine Export Schnittstelle hat die Daten zu Exportieren. Das ganze sieht so aus, das ich über den Druck befehl in ein PDF übersetzen muß und im zweiten schritt mit dem PDFgrabber (von Pixelplanet) das ganze wieder in ein gut Editierbares Excel Format bringe. Das ganze sieht wirklich sehr gut aus, bis auf den Harken, das der PDF Grabber jeweils einzelne Arbeitsblätter in der Excel Datei erstellt. Dies entspricht den zuvor erstellten PDF seiten. Leider ist das dummer weise auch nicht anders möglich.


    Das es nicht bei den ca. 100 Seiten bleiben wird, suche ich eine Lösung die aus 100 oder mehr einzelnen Arbeitsblättern ein Arbeitsblatt erstellt. Ich denke das ich zwar recht gut mit Excel klar komme, doch in diesem Fall schaue ich schwer in die Röhre.


    Ein zweites Problem ist das folgende:

    Wie gesagt das Ergebnis was ich in den einzelnen Arbeitsblätten bekomme ist recht gut. Es werden 4 Spalten mit den Überschriften Artikel-Nr. , Gruppe, Baureihe, Beschreibung erstellt!

    Die ersten 3 Spalten sind ohne Probleme, bei der vierten Spalte jedoch schlägt wieder ein Problem zu. Hier ist wie in der nachfolgenden Tabelle zu sehen ist die Beschreibung mehrzeilig. Das eben diese Ergebnisse später zu letztendlichen Verwendung Kopiert werden müssen und duch die Aufteilung des Textes in mehrere Zeilen Probleme entstehen suche ich hier die Möglichkeit den Inhalte der Beschreibungszeilen in ein Feld zu überführen.

    PS: Mir ist klar das es eine manuelle Möglichkeit gibt, jedoch sind es wohl am ende einige Tausend Beschreibungen :--((


    [table][tr][td]Artikel-Nr.[/td][td]Gruppe[/td][td]Baureihe[/td][td]Beschreibung[/td][/tr]
    [tr][td]CE 800[/td][td]Elektrische Lokomotive[/td][td]BR E 63 der DB[/td][td]Elektrische Lokomotive.[/td][/tr]
    [tr][td][/td][td][/td][td][/td][td]Achsfolge C. Schwarzes Gußfahrgestell, drei Achsen und eine Blindwelle angetrieben.[/td][/tr][tr][td][/td][td][/td][td][/td][td]Kunststoffgehäuse, Dach und erhabene Aufschriften silbern, Fenster mit Cellonscheiben hinterlegt.[/td][/tr][tr][td][/td][td][/td][td][/td][td]Zweilicht-Spitzensignal beidseitig, Lichtwechsel mit Fahrtrichtungsänderung, 1 Stromabnehmer.[/td][/tr]
    [/table]


    Wichtig: Selbstverständlich habe ich schon versucht der Hersteller der Ursprungsdatenbank zu Kontaktieren, dort hat jedoch keiner ein Interesse an einer solchen Schnittstelle. Das hat wohl nichts mit Faulheit zu tun, sondern mit reinem desinteresse, was sehr schade ist. Und nein es gibt leider keinen zweiten Anbieter auf diesem Gebiet, was echt PIIIIEEEEP ist.

    Jetzt hoffe ich mal, das es so etwas wie eine Lösung bzw. Arbeits Erleichterung gibt.


    Ich freue mich über jeden Sachbezogenen Beitrag.
     
  2. Ola,

    geht es um eine einmalige Lösung zum Ablösen der Datenbank oder um etwas, was immer wieder passieren soll, weil die Daten in der alten Batenbank verbleiben sollen?

    Kannst Du den Umweg über word gehen? Mehrere Seiten in Word lassen sich nahezu problemlos in eien Exceltabelle überführen. Dort hättest du auch schon die Mgöglichkeit, in die Bechreibungsspalte seperatoren einzufügen, die Excel später zur Aufteilung in Splatne nutzen kann (wenn ich diesen Teil richtig verstanden habe ...)
     
  3. Hallo Kasim,

    das schreit ja förmlich nach einem Makro. Schick mir doch bitte mal einen Auszug deiner Excel-Tabell mit ca 3-5 Tabellenblättern. Bitte füge noch ein Tabellenblatt zusätzlich ein und führe dort die gewollte Zusammenführung manuell aus, so daß ich sehen kann, wie das Ergebnis aussehen soll.

    Dann werden wir sehen, ob sich das nicht im Handumdrehen erledigen läßt.

    Gruß Matjes  :)
     
  4. Hallo Matjes,

    ich habe Dir soeben die gewünschte Dateil mit Beschreibung für einen Test zugesendet, vielen Dank für Deine mühe im voraus

    Thx Kasim
     
  5. Hallo PCDjoe,

    das ist gut gemeint aber leider aus meiner Sicht nicht sinnvoll, das der Ursprung (PDF Print) in dem Format zu allem übel auch noch Grafiken wie z.B. Linien und Logos mit in das PDF schreibt was bei einer Konvertierung nach Word zu weiteren Bearbeitungsschritten führt. Eine Konvertierung mit dem PDF Grabber nach Excel in einem bestimmten Modus Killt diesen ganzen Müll bereits. Deswegen habe ich mich für diesen Schritt entschieden. Ich möchte mich aber Herzlichst für Deinen Denkanstoß bedanken.

    Mfg. Kasim



     
  6. Ola,

    gern geschehen ...
     
  7. die Lösung sieht jetzt so aus.

    Gruß Matjes  :)

    Code:
    Option Explicit
    'Definitionen zum Aufbau eines Quell-Tabellenblattes
    Const c_SP_ArtNr As Long = 1
    Const c_SP_Gruppe As Long = 2
    Const c_SP_Baureihe As Long = 3
    Const c_SP_Beschr As Long = 4
    Const c_ZQ_UebSchr As Long = 2
    Const c_ZQ_ErsteWerteZeile As Long = c_ZQ_UebSchr + 1
    'abweichende Definitionen für Zusammenfassungsblatt
    Const c_TabName_Zusammenfassung As String = Zusammenfassung
    Const c_ZZ_UebSchr As Long = 1
    '********************************************************
    Public Sub ModellbahnTabsZusammenfuehren()
      
      Dim wb As Workbook, ws As Worksheet, wsz As Worksheet
      Dim l_zus_Zeile As Long, l_ws_cnt As Long
     
      Set wb = ActiveWorkbook
      Set ws = wb.Worksheets(1)
     ->Zusammenfassungsblatt einfügen
      wb.Worksheets.Add Before:=ws
      Set wsz = ActiveSheet
      wsz.Name = c_TabName_Zusammenfassung
      l_zus_Zeile = ZusammenfassungFormatieren(ws, wsz)
     ->Bildschirm-Update abschalten
      Application.ScreenUpdating = False
     ->Über alle Blätter
      l_ws_cnt = 0
      For Each ws In wb.Worksheets
       ->nicht Zusammenfassungsblatt
        If ws.Name <> c_TabName_Zusammenfassung Then
          l_ws_cnt = l_ws_cnt + 1
          Application.StatusBar = _
            Bearbeite Blatt  & l_ws_cnt &  von  & wb.Worksheets.Count
          If Not NaechsteBlattInZusammenfassungUebertragen(ws, wsz, l_zus_Zeile) Then
            MsgBox (max. Zeileanzahl der Zieltabelle ist erreicht.)
            Exit For
          End If
        End If
      Next
      Application.StatusBar = 
     ->Bildschirm-Update anschalten
      Application.ScreenUpdating = True
      MsgBox (In der Zusammenfassung sind  & _
              (l_zus_Zeile - c_ZZ_UebSchr) &  Artikel enthalten.)
      Set wb = Nothing: Set ws = Nothing: Set wsz = Nothing
    End Sub
    '********************************************************
    Function NaechsteBlattInZusammenfassungUebertragen( _
        ws As Worksheet, wsz As Worksheet, l_zus_Zeile As Long) As Boolean
      Dim l_rows As Long, z As Long, l_Bemerkung_Zeile As Long
      Dim s_Beschr As String, s_Baureihe As String
      
      NaechsteBlattInZusammenfassungUebertragen = True
      
     ->letzte Zeile über Spalte Bemerkung definieren
      l_rows = ws.Cells(ws.Rows.Count, c_SP_Beschr).End(xlUp).Row
      
      For z = c_ZQ_ErsteWerteZeile To l_rows
       ->neuer Artikel
        If ws.Cells(z, c_SP_ArtNr).Value <>  Then
         ->naechste freie Zeile in Zusammenfassung
          l_zus_Zeile = l_zus_Zeile + 1
         ->Zieltabelle voll ?
          If l_zus_Zeile > 65535 Then
           ->Fehlerkennung setzen + Schluß
            NaechsteBlattInZusammenfassungUebertragen = False
            Exit Function
          End If
          wsz.Cells(l_zus_Zeile, c_SP_ArtNr).Value = ws.Cells(z, c_SP_ArtNr).Value
          wsz.Cells(l_zus_Zeile, c_SP_Gruppe).Value = ws.Cells(z, c_SP_Gruppe).Value
          wsz.Cells(l_zus_Zeile, c_SP_Baureihe).Value = ws.Cells(z, c_SP_Baureihe).Value
          wsz.Cells(l_zus_Zeile, c_SP_Beschr).Value = ws.Cells(z, c_SP_Beschr).Value
          l_Bemerkung_Zeile = 1
        Else
          l_Bemerkung_Zeile = l_Bemerkung_Zeile + 1
          s_Baureihe = ws.Cells(z, c_SP_Baureihe).Value
          If s_Baureihe <>  Then
            wsz.Cells(l_zus_Zeile, c_SP_Baureihe).Value = _
            wsz.Cells(l_zus_Zeile, c_SP_Baureihe).Value &   & s_Baureihe
          End If
          s_Beschr = ws.Cells(z, c_SP_Beschr).Value
          If l_Bemerkung_Zeile = 2 Then
           ->nach erster Bermekungszeile Zeilenvorschub
            wsz.Cells(l_zus_Zeile, c_SP_Beschr).Value = _
            wsz.Cells(l_zus_Zeile, c_SP_Beschr).Value & vbLf & s_Beschr
          Else
           ->sonst Leerzeichen einfügen
            wsz.Cells(l_zus_Zeile, c_SP_Beschr).Value = _
            wsz.Cells(l_zus_Zeile, c_SP_Beschr).Value &   & s_Beschr
          End If
        End If
      Next
    End Function
    '********************************************************
    Function ZusammenfassungFormatieren( _
        ws As Worksheet, wsz As Worksheet) As Long
     ->Formatierung des Zusammenfassungsblattes
     ->Rückgabe: nächste freie Zeile auf Zusammenfassungsblatt
        
     ->Formatierung
      With wsz.Cells
          .NumberFormat = @
          .HorizontalAlignment = xlLeft
          .VerticalAlignment = xlTop
          .WrapText = True
          .Font.Name = Arial
          .Font.Size = 10
      End With
     ->Numberformat der Beschreibung auf->wissenschaftlich'
     ->damit die Darstellung klappt
      wsz.Columns(c_SP_Beschr).NumberFormat = 0.E+00
      
     ->Spaltenbreiten
      wsz.Columns(c_SP_ArtNr).ColumnWidth = 12
      wsz.Columns(c_SP_Gruppe).ColumnWidth = 25
      wsz.Columns(c_SP_Baureihe).ColumnWidth = 25
      wsz.Columns(c_SP_Beschr).ColumnWidth = 100
     ->Überschriften aus 1.Blatt übernehmen
      With wsz.Cells(c_ZZ_UebSchr, c_SP_ArtNr)
        .Value = ws.Cells(c_ZQ_UebSchr, c_SP_ArtNr).Value
        .Font.Bold = True
      End With
      With wsz.Cells(c_ZZ_UebSchr, c_SP_Gruppe)
        .Value = ws.Cells(c_ZQ_UebSchr, c_SP_Gruppe).Value
        .Font.Bold = True
      End With
      With wsz.Cells(c_ZZ_UebSchr, c_SP_Baureihe)
        .Value = ws.Cells(c_ZQ_UebSchr, c_SP_Baureihe).Value
        .Font.Bold = True
      End With
      With wsz.Cells(c_ZZ_UebSchr, c_SP_Beschr)
        .Value = ws.Cells(c_ZQ_UebSchr, c_SP_Beschr).Value
        .Font.Bold = True
      End With
      
      With wsz.PageSetup
        .Zoom = False             ->False für FitTo...
        .FitToPagesTall = 500     ->Ausdrucklänge 500 Seiten
        .FitToPagesWide = 1       ->Ausdruckbreite 1 Seite
        .Orientation = xlLandscape->Querformat
      End With
     ->Rueckgabe der letzten beschriebenen Zeile auf Blatt->Zusammenfassung'
      ZusammenfassungFormatieren = c_ZZ_UebSchr
    End Function
     
  8. Hallo und guten Tag,

    ich kann mich wirklich nur bei Matjes auf das Herzlichste bedanken, ansonsten hätte mich eine Manuelle Bearbeitung sicherlich Wochen an Editierarbeit gekostet. Nochmals Danke!!!

    Hier noch mal die Beschreibung der Problematik:

    Ich hatte versucht eine Datenbank für perönliche (immer wieder kehrende Anwendungen) zu Konvertieren. Zu meinem Leidwesen hatte eben diese Datenbank keinerlei Schnittstelle für einen evtl. Export. Das einzigste was ich machen konnte war der Ausdruck eines Berichtes, den ich vom Layout her nicht verändern konnte.

    Für den ersten Test habe ich eine Demoversion des maxxPDFmailers genommen um den Bericht in ein xxxxxxxx.PDF Format zu schreiben. So bekam ich eine pdf Datei mit etlichen hundert Seiten auf denen sich die Artikel.-Nr. , Gruppe, Baureihe und die Beschreibung von Modellbahnlokomotiven befanden.

    Der zweite schritt war dann schon etwas schieriger, es mußte eine Software her die das PDF-Format wieder in ein gebrauchbares Format umsetzt. Auch hier habe ich zunächst eine Demoversion des PDFgrabbers von Pixelplanet genommen um erst ein mal zu sehen was genau dabei heraus kommt. Der PDFgrabber bietet die verschiedensten möglichkeiten an, wobei ich mich letztendlich aus guten gründen für das Excel Format entschieden habe.

    Nach diesem Schritt hatte ich eine Exceldatein mit meheren hundert Arbeitsblättern, und somit ein ganz neues Problem........................... bis ich hier eher hilflos in das Forum gepostet habe.

    Ich hatte mir zwar gedacht, dass es evtl. eine Lösung geben kann, wenn man denn Programmieren kann, aber wer das selbst nicht beherscht verzeifelt doch ganz schnell an einer solchen Situation. Ich wäre nicht mal auf die Idee gekommen das man ein Makro Programmieren muß um das gewünschte ergebniss zu erziehlen. Wie denn auch wenn man kein Plan hat.


    Schlußendlich ist es durch Matjes zu einer Lösung durch ein Makro gekommen (was ja hier auch zu sehen ist), wofür ich mich tausend mal bedanken möchte.

    So konnte jetzt der dritte schritt der Bearbeitung erfolgen, der dann wie folgt von statten ging. Die Excel Datei wurde geöffnet, und da Makro aktiviert.

    Alle überflüssigen (nicht benötigten) Informationen die durch die vorhergehenden Arbeitsschritte zustande gekommen waren (z.B. auf jeder Seite stand ein Datum und ebenfalls eine Seitenangabe) wurden durch das Makro entfernt und das ganze stand am ende in einem einzigen Arbeitsblatt, ganz so wie ich es mir vorgestellt hatte.


    Problem gelöst! Nochmals meinen Dank und ein dickes Lob an Matjes, der das für mich unlösbare Problem hervorragend gelöst hat.


    Mfg. Der Kasim
     
Die Seite wird geladen...

Aus ca. 100 Tabellenblättern ohne Datenverlust 1 erstellen - Ähnliche Themen

Forum Datum
Re: Liste bestimmter Werte aus allen Tabellenblättern erstellen Windows XP Forum 12. Mai 2009
Liste bestimmter Werte aus allen Tabellenblättern erstellen Windows XP Forum 12. Mai 2009
Archivieren ohne Ordnerstruktur Microsoft Office Suite 19. Okt. 2016
Win7 entfernen ohne Neuinstallation? Windows 7 Forum 12. Okt. 2016
RDP mit oder ohne VPN? Windows Server-Systeme 27. Juni 2016