Upload von txt Files in bestimmte Zeilen
#11
Ist eine Alternative/Ersatz für Fenneks Code.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Tobias.Schwinghoff
Antworten Top
#12
Habe ich jetzt endlich mal probieren können, leider funktioniert das bei mir nicht so wirklich, vielleicht mache ich auch etwas falsch. Ich habe in der Zwischenzeit mich noch ein wenig gespielt. Jedoch auf das nächste Problem gestoßen, ich bekomme es nicht visualisiert wenn ich die Dateien auswähle, die ich hochladen will ins Excel angezeigt zu bekommen. Ich hänge die Datei gleich noch mit an. 

Im Process Button wollte ich dann das VBA Makro ausführen, was die Werte einliest.


 
.xlsm   Final_Test_(copy).xlsm (Größe: 136,79 KB / Downloads: 2)
Antworten Top
#13
Hallo Tobias,

die Prozedur von Snb funktioniert ganz normal. Du musst lediglich die Datei auf dem Desktop packen. (4) ist der Desktop --> es ginge auch ("Desktop")
Diese Vorgehensweise hat ein paar Einschränkungen des Pfades wegen. 
Prinzip: Link

Gruß Uwe
Antworten Top
#14
Hallo Tobias,
 
ich habe jetzt mal aus Snb Vorlage mal für beide Textfiles die formatgerechte Weiterverarbeitung zusammengestellt.
 
Tja, mit dem Clippboard ist es so eine Sache. Manchmal will es nicht so wie es soll. Zuverlässig funktioniert es nur via API.
Und einen weiteren Nachteil hat die Sache auch noch. Es sind Textzahlen, da aus Text importiert wird. Diese sollten um es datentechnisch sauber in den Zellen zu schreiben davor in echte Zahlen umgewandelt werden.

Da kann natürlich auch noch einer auf die Idee kommen nach dem Einfügen die Zellen des betroffenen Ranges mal eins rechnen zulassen.
Ich habs eben jetzt mal so gelöst und nicht via Clippboard + API
Code:
Option Explicit
Sub WashEintragen()
    Dim arr, tmp, i&, j&, Pfad$: Pfad = ThisWorkbook.Path & "\10BGW.txt"
    arr = Filter(Split(CreateObject("scripting.filesystemobject").opentextfile(Pfad).readall, vbCrLf), "RLU")
    ReDim arrList(1 To UBound(arr) + 1, 1 To 10)
    For i = LBound(arrList) To UBound(arrList)
        tmp = Split(Replace(arr(i - 1), " ", ""), vbTab)
        For j = LBound(arrList, 2) To UBound(arrList, 2)
            arrList(i, j) = CDbl(tmp(j))
        Next j
    Next i
    Foglio3.Cells(15, 4).Resize(UBound(arrList, 1), UBound(arrList, 2)) = arrList
End Sub
Sub LCLEintragen()
    Dim arr, tmp, i&, j&, Pfad$: Pfad = ThisWorkbook.Path & "\10LCL.txt"
    arr = Filter(Split(CreateObject("scripting.filesystemobject").opentextfile(Pfad).readall, vbCrLf), "RLU")
    ReDim arrList(1 To UBound(arr) + 1, 1 To 10)
    For i = LBound(arrList) To UBound(arrList)
        tmp = Split(Replace(arr(i - 1), " ", ""), vbTab)
        For j = LBound(arrList, 2) To UBound(arrList, 2)
            arrList(i, j) = CDbl(tmp(j))
        Next j
    Next i
    Foglio3.Cells(40, 4).Resize(UBound(arrList, 1), UBound(arrList, 2)) = arrList
End Sub
Den Pfad der jeweiligen Datei musst du dann einfach nur noch anpassen.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • Tobias.Schwinghoff
Antworten Top
#15
Hallo Tobias,
 
deine Nachricht habe ich gelesen.
 
Das kannst du doch hier ruhig alles im Forum fragen.
 
Clippboard und API ist wie so vieles eine Frage des Wissens darum.
In deinem Fall hat es aber den Nachteil, dass die Textzahlen in den Zellen nachträglich in echte Zahlen umgewandelt werden müssen.
Somit ist es ziemlich egal welchen Weg man geht, Hauptsache korrekte Daten in den Zellen.
 
Buttons kannst du im Blatt "BGW and LC Test" anlegen und die jeweilige Prozedur damit verknüpfen.
Das sollte für dich der gangbarste Weg sein.
 
Gruß Uwe
Antworten Top
#16
ich habe die Sache mal parametrisiert. Das spart Code:
Code:
Option Explicit

Sub Wash()
    Call Eintragen(pfadTxt:=ThisWorkbook.Path & "\10BGW.txt", Blatt:=Foglio3, Zelle:="D15")
End Sub

Sub LCL()
    Call Eintragen(pfadTxt:=ThisWorkbook.Path & "\10LCL.txt", Blatt:=Foglio3, Zelle:="D40")
End Sub

Sub Eintragen(ByVal pfadTxt As String, Blatt As Worksheet, Zelle As String)
    Dim arr, tmp, i&, j&
    arr = Filter(Split(CreateObject("scripting.filesystemobject").opentextfile(pfadTxt).readall, vbCrLf), "RLU")
    ReDim arrList(1 To UBound(arr) + 1, 1 To 10)
    For i = LBound(arrList) To UBound(arrList)
        tmp = Split(Replace(arr(i - 1), " ", ""), vbTab)
        For j = LBound(arrList, 2) To UBound(arrList, 2)
            arrList(i, j) = CDbl(tmp(j))
        Next j
    Next i
    Blatt.Range(Zelle).Resize(UBound(arrList, 1), UBound(arrList, 2)) = arrList
End Sub
Nun kannst du dir raussuchen mit was du besser zurechtkommst.

Gruß Uwe
Antworten Top
#17
Hi,

ich lese hier immer noch mit und kratz mich langsam am Kopf wieso immer noch versucht wird, das mit VBA zu lösen. Ich gebe zu: bis vor ca. 1 Jahr war ich PQ gegenüber auch extrem skeptisch und habe alle mit VBA gelöst, da ich der Meinung war hiermit wesentlich flexibler zu sein. Ist es auch, wenn man ganz spezielle Dinge braucht. Aber bei so etwas einfachem, wie dem korrekten Einlesen und Aufbereiten von Dateien aller Art gibt es nichts einfacheres als PQ.

Hast du dir meine Datei überhaupt einmal angesehen? Die Definition der Abfrage sind wirklich nur wenige Mausklicks in PQ. Ist dies einmal gemacht, dann reicht ein Klick auf "Daten aktualisieren". Ich sehe die ganze Diskussion zu und mit VBA als nette Gehirnakrobatik und finde es interessant, was man alles machen kann. Aber für eine schnelle, einfache und gute Lösung würde ich hier nur PQ nehmen.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • Tobias.Schwinghoff
Antworten Top
#18
Hallo Kindler, 

ich habe deinen PQ Vorschlag probiert und per se auch gut 
Jedoch ist das Tool bei uns in der Firma bei mehr als 50 Mitarbeitern im Einsatz und nicht jeder Mitarbeiter beachtet das C:/temp

Deswegen hatte ich mich selbst an dem VBA mit Browse Button probiert damit jeder Mitarbeiter die Datei da rauszieht wo er die abgespeichert hat. 
Jedoch kommt noch dazu, dass jetzt bei uns intern noch eine Dokumenten Art dazugekommen ist und außer den 10 BGW etc. und ich langsam das Gefühl habe, dass ich meine Idee gar nicht mehr umsetzen kann...

Ich hänge die Dateien die wir jetzt haben mal an hier... ich bin leider auch noch nicht so fit in VBA und versuche mich gerade darin...


Schönen Abend


Angehängte Dateien
.txt   12345678901_10BG10LCL10LCR - Kopie.txt (Größe: 2,97 KB / Downloads: 8)
Antworten Top
#19
Zitat: C:/temp
Das lässt sich mit PQ auch ganz einfach parametrisieren und somit dynamisch gestalten.
Antworten Top
#20
Hallo Thomas,

äußere dich doch bitte einfach mal dahingehend, ob bisher überhaupt einer der Lösungswege dir weitergeholfen hat. 

Ein paar klare Aussagen sind denke ich nicht zu viel verlangt.

Gruß Uwe
Antworten Top


Gehe zu:


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