Maschinendaten in Datenbank konvertieren
#1
Hallo Liebe Excelgemeinde :)

Ich stehe vor folgender Herausforderung:
Die Digitalisierung von Maschinendaten gestaltet sich schwieriger als gedacht. Vorhanden ist eine Maschine, deren Software Produktionsdaten lediglich als PDF Datei ausgeben kann.
Diese kann ich aus Datenschutzgründen nicht hochladen. Jedes Fertigungsprogramm erzeugt eine PDF und kann ggf. mehrmals täglich wiederholt werden. In der Regel laufen pro Tag allerdings mehr als 40 Fertigungsprogramme durch. Über einen längeren Zeitraum von bis zu einem Jahr sollen nun die Produktionsdaten der Maschine gesammelt werden. De Fakto ist es jedoch logischerweise so, dass ich nicht jede PDF von oben bis unten abtippen möchte, um die nötigen Informationen zu erhalten.
Über Adobe Acrobat ist es mir jedoch möglich PDF in eine Excel Datei zu konvertieren. Eine entsprechend konvertierte PDF folgt der Logik der angehängten Excel Datei.

[url=
Dateiupload bitte im Forum! So geht es: Klick mich!
zur Excel Datei[/url]

Meine Idee ist nun wie folgt: Vorranging sind für mich vorab lediglich die gelb markierten Informationen aus der Tabelle in folgender Erfassungsform:

[
Bild bitte so als Datei hochladen: Klick mich!
]

Um nicht unnötig viel Arbeit zu haben möchte ich nun die angesprochenen Informationen so automatisiert erzeugen / ablegen wie nur irgend möglich. Erschwert wird dies durch die Tatsache, dass jedes Programm unterschiedlich viele Bauteile aufweist und die Formatierung der PDF sich somit grundsätzlich verschiebt. Die einzige Konstante ist der Aufbau der Einzelteil-/Auftragsinformationen.

Mein Ansatz wäre es jetzt - über eine VBA Programmierung oder clevere Formel - für jede auftretende Zelle, deren Inhalt "Teile-Nr:" lautet in meiner Datenbank eine Zeile zu erzeugen, die mir Spalten- und Zeilenadresse in der jeweiligen Excel Tabelle ausgibt. Über diese würde ich dann, vermutlich über eine Index Formel, versuchen die restlichen Werte der genannten Spalten auszugeben.

Vielleicht gibt es hier ja den einen oder anderen Fuchs, der eine Idee hat wie ich die automatisierte Erzeugung der Zeilen in meiner Datenbank hinbekomme?

Vielen Dank und liebe Grüße

Der Papierkrieger
Top
#2
Hallo,

im Gegensatz zu Excel kann Word auch VBA gesteuert PDF's importieren (oft, nicht immer). Es gibt auch kostenlose Command-Line-Tools, die aus PDF eine txt-Datei erstellen können.

Allerdings könnte es sein, dass das Projekt zu komplex für ein Hilfe-Forum ist.

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Papierkrieger
Top
#3
Da das Hinzufügen der Dateien beim letzten Mal nicht so wollte wie ich und ich den Editieren Button nicht finde  Huh Huh

Hier nochmal den Excel Sheet und die angestrebte Datenbankstruktur.


Angehängte Dateien Thumbnail(s)
   

.xlsx   Problemstellung Maschinenauswertung.xlsx (Größe: 20,09 KB / Downloads: 15)
Top
#4
Hallo,

nach einer ersten Durchsicht wäre die Aufgabe für jeden Block der mit "Teile-Nr" beginnt die Spalten "G" und "T" zu kopieren und in Blatt 2 transponiert einzufügen.

-> einfach lösbar

Für "Programmname": Soll der Inhalt von A19 genommen werden?

mfg

(eine Schleife über alle Dateien kommt im nächsten Schritt)
(nur VBA, keine Formeln!)
Top
#5
Hallo,

teste mal in der Beispieldatei diesen Code:

Code:
Sub F_en()
Dim WQ As Worksheet
Dim WZ As Worksheet
Dim RNG As Range

Set WQ = Sheets(1)
Set WZ = Sheets(2)

With WQ.Columns(1)
    .UnMerge
    Set RNG = .Find("Teile-Nr:", , xlValues, xlWhole)
    If Not RNG Is Nothing Then
        Adr = RNG.Address
        Do
           Debug.Print RNG.Address
           RNG.Offset(, 6).Resize(8).Copy
           WZ.Cells(Rows.Count, 2).End(xlUp).Offset(1).PasteSpecial Transpose:=True
           RNG.Offset(, 19).Resize(5).Copy
           WZ.Cells(Rows.Count, "j").End(xlUp).Offset(1).PasteSpecial Transpose:=True
        Set RNG = .FindNext(RNG)
        Loop Until RNG.Address = Adr
    End If
End With
End Sub

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Papierkrieger
Top
#6
Ist zwar off-topic, da weder Excel-Formel noch VBA...aber

PowerBI kann PDFs lesen

Glaube damit könnte man das auch ganz gut hinbekommen.

Aber wie gesagt eigentlich off-topic

BG ruppy
Top
#7
Hallo, 


Zitat:Vorhanden ist eine Maschine, deren Software Produktionsdaten lediglich als PDF Datei ausgeben kann.
 

Das kann ich mir beim besten willen nicht vorstellen , überlicherweise ist die Ausgabe als   zeichengetrennter Text  (CSV)

Frag nach
Top
#8
(11.02.2020, 17:39)Fennek schrieb: Für "Programmname": Soll der Inhalt von A19 genommen werden?

Exakt.


Zitat:Fennek - 11.02.2020, 20:47
Hallo,

teste mal in der Beispieldatei diesen Code...


Vielen Dank vorab. ich melde mich sobald ich weiter bin.

(12.02.2020, 08:37)Dieter63 schrieb: ...

Das kann ich mir beim besten willen nicht vorstellen , überlicherweise ist die Ausgabe als zeichengetrennter Text  (CSV)

Frag nach

Hallo Dieter,
da hast du grundsätzlich recht. Die Software und Maschine Arbeitet grundsätzlich mit dem CSV Format. Da wir die Daten aber in die Stammdatenpflege und Kalkulation mit einbinden wollen, brauchen wir irgendwo eine Schnittstelle. Die direkte Schnittstelle von ERP System zur Maschinensoftware ist preislich so horent, dass man durchaus über eine Alternative nachdenken kann. Daher dieser Aufwand.

Gruß Papierkrieger
Top
#9
(11.02.2020, 21:47)Fennek schrieb: Hallo,

teste mal in der Beispieldatei diesen Code:
...

mfg

Alles klar, das bringt mich schon ein ganzes Stück weiter, vielen Dank! An der Beispieldatei klappt dies auch. Ich habe leider feststellen müssen, dass der PDF to EXCEL Konvert die Anzahl der miteinander verbundenen Zellen nicht konstant hält. Daher verschiebt sich die Ausgabe im Datenziel mit den Spaltenbezügen des Codes von 6 und 19 bei vielen PDFS um einen und ist somit wertlos. Gibt es eine Möglichkeit, anstelle der 6ten Spalte, den Inhalt der ersten Spalte mit Inhalt dieser Zeile auszugeben?
Ferner wäre es für mich wichtig, Datenziel und Datenquelle getrennt zu lassen, sprich ich arbeite mit dem Code / einer Schaltfläche aus meinem Datenziel (der Datenbank) und wähle mir meine Datenquelle aus.

Ich bin auf alle Fälle begeistert   :05:
Top
#10
Hallo,

die genutzte Funktion "Range.Find" findet nichst in ge-merged-en Zellen. Mit einer Schleife über die Spalte A geht es doch. Dann kann man die Spalten mit den Daten so ermitteln:

Code:
Sub T_2()
Dim rng As Range
For i = 25 To 35
    If Cells(i, 1) = "Teile-Nr:" Then
        Set rng = Cells(i, 1)
        With rng.MergeArea
            Debug.Print .Address, .Columns.Count
            a = .Columns.Count
            Debug.Print rng.Offset(, a + 1).MergeArea.Address, rng.Offset(, a + 1).MergeArea.Columns.Count
            b = rng.Offset(, a + 1).MergeArea.Columns.Count
            Debug.Print rng.Offset(, a + b + 2).MergeArea.Address, rng.Offset(, a + b + 2).MergeArea.Columns.Count
            c = rng.Offset(, a + b + 2).MergeArea.Columns.Count
            Debug.Print "Spalte 1:", a + 1, "Spalte2: ", a + b + c + 3
        End With
    End If
Next i
End Sub

Teste den Code an mehreren Dateien, wenn es klappt, können beide Ansätze verbunden werden.

Ein Auswahl der Dateien von Hand ist kritisch /zu fehleranfällig. Es ist einfacher immer alle Dateien eines Ordners zu durchaufen und die bereits verarbeiteten zu markieren (Attribut: ReadOnly).

mfg

(Falls weitere Konvertierungsfehler auftreten: Für jede Version muss ein Code geschrieben werden, der das abfängt. In einem Forrum ist das aber kaum machbar)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste