Excel Makro - Quelldatei nach Ausführung löschen

fitsch84

Ensign
Registriert
Dez. 2010
Beiträge
197
Hallo,

ist es möglich die Quelldatei nach der Ausführung eines Makros zu löschen?
Das Makro an sich ist recht einfach, es kopiert nur Messwerte aus einer Datei in eine andere. Die Quelldatei soll nach dem Kopieren und Einfügen dann automatisch gelöscht werden.

Mfg
 
ja das ist über den Kill Befehl möglich.

Code:
Kill "C:\DeinVerzeichnis\DeineDatei"

Gruß Matze
 
Kill sollte funktionieren jedoch musst du zuvor deine quelldatei beemden , weil diese ja sonst noch geöffnet ist.
Probier mal erst
Code:
Applications.workbooks( dateixy ).quit savechanges := false
Kill dateixy
 
Duke00 schrieb:
Kill sollte funktionieren jedoch musst du zuvor deine quelldatei beemden , weil diese ja sonst noch geöffnet ist.
Probier mal erst
Code:
Applications.workbooks( dateixy ).quit savechanges := false
Kill dateixy

Das er die Datei zuvor beendet, setzte ich hierbei voraus. ;)
 
Duke00 schrieb:
Kill sollte funktionieren jedoch musst du zuvor deine quelldatei beemden , weil diese ja sonst noch geöffnet ist.
Probier mal erst
Code:
Applications.workbooks( dateixy ).quit savechanges := false
Kill dateixy

dateixy steht dabei für den gesamten Pfad richtig?
 
Hier gibts eine Erklärung zum Löschen von Dateien und Verzeichnissen.

MfG
 
Danke für die Antworten.

Nächstes Problem :D
Ich möchte die Werte auch aus einer .txt Datei einlesen, diese sind mit Tab getrennt. Zum einen weiß ich nicht wie das geht, zum anderen kickt Excel mir die Kommas raus und setzt Tausendertrennzeichen (Punkte), so wird aus 11,9xxxxxx z.B. 119.xxx.xxx

Excel
excel.JPG

TXT
txt.JPG

Also wie kann ich zum einen die Werte einlesen und zum anderen verhindern, dass die Kommas verändert werden?

Zur Erläuterung, ich habe entweder eine xls oder txt mit den Werten von einer Messung, oder eine Sammeldatei nur als txt mit den Werten von zehn Messungen, dies wäre natürlich zu bevorzugen, da ich dann nicht zehn mal das Makro ausführen muss.
 
Zuletzt bearbeitet:
Also eine txt datei öffnest du z.B. fürs auslesen folgendermaßen:
Code:
Open txt(ganzerpfad) for input as #1 
Zeile = 1
Do While Not EOF(1)           ' Schleife bis Dateiende
    Line Input #1, Text      ' Text lesen
    ActiveSheet.Cells(Zeile, 1) = Text
    Zeile = Zeile + 1
Loop 
close #1 'schließt dann das dokument wieder
http://vba1.de/vba/051dateiimport.php

Ich möchte die Werte auch aus einer .txt Datei einlesen, diese sind mit Tab getrennt. Zum einen weiß ich nicht wie das geht, zum anderen kickt Excel mir die Kommas raus und setzt Tausendertrennzeichen (Punkte), so wird aus 11,9xxxxxx z.B. 119.xxx.xxx

Wenn du den wert 11,9 in eine Zelle schreibst die z.B. als standard formartiert ist kann es passieren das daraus 11.9 wird somit musst du die Zellen auf Text oder Zahl formatieren bin mir grad nicht mehr ganz sicher was es war.

Sind deine werte in den TXT mit Tab getrennt und in einer Zeile oder je Zeile ein Messwert ?
Wenn es mehrere in einer Zeile sind kannste es so lösen:
Code:
 Dim n
Open txt(ganzerpfad) for input as #1 
Zeile = 1
Do While Not EOF(1)           ' Schleife bis Dateiende
    Line Input #1, Text      ' Text lesen
    n = split(Text," ") ' Somit Teilst du die jeweilige Zeile an jedem Leerzeichen
    for a= 0 to Ubound(n)
          If n(a)<>""  then
                  ActiveSheet.Cells(Zeile, 1) = n(a)
          Zeile = Zeile+1
          End if
     next a
Loop 
close #1 'schließt dann das dokument wieder
 
Zuletzt bearbeitet:
Um die Komma/Punkt Thematik zu lösen, könntest du dein Excel auf Punkt als Dezmialtrennzeichen umstellen. Das Problem liegt ja darin, dass in der txt Punkte stehen, wo du ein Komma haben willst.
Oder halt vorher alle Punkte in der txt durch Kommata ersetzen.
 
Also das importieren mit korrekten Zeichen hab ich inzwischen

Code:
Sub merge_öffnen()
'
' Sammeldatei merge__chr.txt öffnen
'
    Workbooks.OpenText Filename:= _
        "S:\xx\xx\xx\merge__chr.txt", _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
        Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
        , 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
        Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array( _
        28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), _
        Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array( _
        41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array(46, 1)), _
        DecimalSeparator:=".", ThousandsSeparator:=",", TrailingMinusNumbers:= _
        True
End Sub

Jetzt muss ich nur noch wissen, wie ich dann die Werte ins jeweilige Formular importiert bekomme. Sollte so ablaufen, dass ich ne leere Mappe mit dem Makro habe. Diese und das Betreffende Formular öffne ich. Das Formular ist das aktive Arbeitsblatt und per Tastenkombination liest Excel die Werte in dieses ein. Die Werte in ein bestimmtes Formular einzulesen krieg ich hin, nur habe ich ungefähr 100 verschiedene Formulare und will deshalb ein Makro, dass die Werte ins aktive Tabellenblatt schreibt und nicht in ein bestimmtes.
 
Zuletzt bearbeitet:
Zurück
Oben