derdanielder
Goto Top

Daten aus txt in Excel Vorlage und dann wieder in txt

Es geht darum, dass ich eine TXT Datei habe und diese Daten in einer Excelvorlage eingegeben werden und am Ende das Ergebniss ausgegeben wird.

Hallo,

und zwar sitz ich vor folgendem Problem. Ich habe Eine Excelvorlage (*.xlt) welche für diverse Kabel verschieden Ströme berechnet. Also ich gebe in 2-4 Zellen Werte ein und dann gibt mir das die Vorlage wieder in versxchieden Zellen verschiedene Werte aus.

Nun geht es darum, dass der Ablauf automatisiert werden soll. Das Script soll von einer TXT Datei, wo die Daten wie folgt vorliegen;

Zahl;Zahl;Kabeltyp
Zahl;Zahl;Kabeltyp

die Werte in die xlt eintragen und dann die berechneten Werte wieder in eine Neue TXT ausgeben.

Als Ansatz habe ich zb das hier bei euch gefunden;
Sub Import()
sTxtPath = "c:\Datei.txt" 'Textdatei mit vollständigem Pfad  
iRow = 1 'Startzeile  
iOffset = 5 'Zeilenabstand  
sDelim = vbTab 'Trennzeichen  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set wbNew = Workbooks.Add
With wbNew.Worksheets(1)
    Set oInFile = fso.OpenTextFile(sTxtPath, 1)
    Do While Not oInFile.AtEndOfStream
        aLine = Split(oInFile.ReadLine, sDelim)
        .Range(.Cells(iRow, 1), .Cells(iRow, UBound(aLine) + 1)) = aLine
        iRow = iRow + iOffset
    Loop
    .Activate
End With
End Sub

Das Problem ist, dass das Script eine neue Mappe anlegt. Am besten wäre, wenn das Programm das Excel dann auch automatisch öffnet und schließt. Dass es dann wie in dem folgenenden Abläuft;


Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ex As New Excel.Application
        ex.Visible = True
        'Vorlage oeffnen  
        ex.Workbooks.Open("C:\temp\test.xls")  
        ex.ActiveWorkbook.ActiveSheet.Range("G14").Value = "77"  
        ex.ActiveWorkbook.ActiveSheet.Range("G15").Value = "77"  
        ex.ActiveWorkbook.ActiveSheet.Range("H15").Value = "NAYY"  


        '"Änderungen-speichern" Dialog unterdrücken  
        ex.ActiveWorkbook.Saved = True

        'alternativ speichern...  
        ex.ActiveWorkbook.Save()

        ex.ActiveWorkbook.Close()
        ex.Quit()
    End Sub
End Class

Falls ihr ein paar Anregungen habt, würde ich mich darüber freuen.

Content-Key: 124377

Url: https://administrator.de/contentid/124377

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 76109
76109 Sep 07, 2009 at 18:57:02 (UTC)
Goto Top
Hallo derdanielder!

Du könntest das mit den Berechnungen mal etwas genauer erläutern.

In welchen Zellen gibst Du was ein?
In welchen Zellen wird was berechnet?
Wie soll die Ausgabe-Textdatei aussehen?

Gruß Dieter
Member: derdanielder
derdanielder Sep 07, 2009 at 19:40:28 (UTC)
Goto Top
Also die Eingabe erfolgt zB: bei dem einen Kabel B9,C9,D9 eine Zahl und bei E9 ein Wort. Dann in der nächsten Zeile das gleiche Spiel.

Also in der Quell txt werden die Daten dann wie oben genannt vorhanden sein:

Zahl(B9);Zahl(C9);Kabeltyp(D9)
Zahl(10B);Zahl(11C);Kabeltyp(11D)

Dann gibt das Sheet bei H9,I9 und J9 Zahlen aus, die dann in die neue txt sollen.

Am besten wäre es, wenn sie vom Aufbau wie die Ausgangstxt wär.

Also Werte von H9;I9;J9, nächste Zeile dann H10;I9;J9.


EDIT:

Also ich habe es in den Grundzügen hinbekommen. Einfach die TXT datei in einem gewissen Schema anordnen;

1;1;1;Wert
1;1;1;Wert

Dann einfach über Daten>Externe Daten importieren die TXT in die gewünschte Stelle eintragen und dann die errechneten Werte Kopieren und in ein neues Tabellenblatt den Inhalt (Werte) einfügen und als csv speichern. Das ganz natürlich als Makro aufzeichnen.

Nun würde ich das gerne noch so haben, dass ich am besten eine exe öffne, die dann Excel öffnet, das Makro ausführt und Excel wieder schließt. Ist das möglich?

Oder soll ich mein Anliegen nochmal im VB,VBA/VB.net Bereich posten?

EDIT2:okay, das mit dem Schließen hab ich schonmal;
Application.Quit am ende des Makros. Jetzt müsste es nur noch autmomatisch starten und die ganzen fragen am Ende ob ich das wirklich so speichern (als csv,gehen daten verloren,etc) und überschreiben will sollten noch ins makro rein.