Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Änderungen von .txt datei überwachen und in Excel einfügen

Frage Microsoft Microsoft Office

Mitglied: michaellas

michaellas (Level 1) - Jetzt verbinden

12.03.2010, aktualisiert 18.10.2012, 6658 Aufrufe, 14 Kommentare

Hallo, bin seit heute neu bei Admin.de, und hab auch schon mein erstes Problem.
Hoffe irgend jemand hat eine Idee.

Ich habe in der Arbeit ein Progr. bei dem ich aus der Druckvorschau einen csv String in eine .txt Datei speichern kann.
Die .txt Datei habe ich in eine Excel Volage eingebunden, die sich beim öffnen aktualisiert.

Nun möchte ich erreichen, das sobald die .txt Datei überschrieben wird automatisch meine .xlt Datei geöffnet wird.

Ist es möglich, das ganze über Excel in der Datei (mit Makro) zu hinterlegen,
oder könnte ich es evtl. mit einem Batch an die .txt Datei versuchen?
und gibt es irgendwo einen Virtuellen Drucker, der mir die CSV direkt in eine .txt speichern kann?? Hab nur .pdf Drucker gefunden.

DANKE für alle Antworten die mich zum Nachdenken animieren
Mitglied: bastla
12.03.2010 um 21:22 Uhr
Hallo michaellas und willkommen im Forum!
gibt es irgendwo einen Virtuellen Drucker, der mir die CSV direkt in eine .txt speichern kann??
Da es sich bei Deinem nicht genannten Betriebssystem vermutlich um ein Windows handelt, könntest Du es mit der Installation eines lokalen Druckers "Generic / Text Only" versuchen (bis XP unter dem Hersteller "Standard", ab Vista unter "Generic" zu finden) - als Anschluss bietet es sich in beiden Fällen an, einen "Local Port" zu erstellen ...

Grüße
bastla
Bitte warten ..
Mitglied: michaellas
12.03.2010 um 21:57 Uhr
Hallo
Ja es ist Windows xp.
Und der Generic/TextOnly wird verwendet um auf einem Tally Drucker diesen CSV in eine gleichbleibende Druckvorlage einzubetten. Kann ich mit "Generic/TextOnly" den CSV String, nicht nur an den Drucker senden, sondern diesen etwa in eine Datei speichern lassen? Muß ich Montag gleich mal versuchen.

Hab leider mit meinen Rechten bei dem Programm, keine Möglichkeiten irgendetwas zu verändern, nur die Möglichkeit in .txt zu konvertieren(zwar etwas umständlich aber es funkt.) und kann mir so die Daten von der Druckvorlage für meine Vorlage zu nutze machen. (sollte halt aber mit so wenig Schritten wie möglich gehen).
Bitte warten ..
Mitglied: TsukiSan
13.03.2010 um 00:02 Uhr
Hallo michaellas,

mit vbs kannst du zum Beispiel mit:
01.
Dim Aenderung, ZuletztGespeichert 
02.
 
03.
Pruefen 
04.
wscript.Sleep 10000 
05.
Pruefen 
06.
wscript.Sleep 10000 
07.
Pruefen 
08.
'.......... 
09.
Sub Pruefen () 
10.
    Pfad = "C:\MeineDatei.txt" 
11.
     Set FSO = CreateObject("Scripting.FileSystemObject") 
12.
    Set F = FSO.GetFile(Pfad) 
13.
    Aenderung = F.DateLastModified 
14.
   If not Aenderung = ZuletztGespeichert then 
15.
       ZuletztGespeichert = Aenderung 
16.
      'Befehle ausführen 
17.
  End If 
18.
    Set FSO = nothing 
19.
    Set F = nothing 
20.
End Sub
eingestellter Zeit prüfen, wann sich das Datum deiner zu überwachenden Datei geändert hat.
Sprich, wann diese aktuallisiert wurde zuletzt. Und dann dementsprechend deine gewünschten Aktionen ausführen.

Gruss
Tsuki
Bitte warten ..
Mitglied: bastla
13.03.2010, aktualisiert 18.10.2012
Hallo michaellas!
Kann ich mit "Generic/TextOnly" den CSV String, nicht nur an den Drucker senden, sondern diesen etwa in eine Datei speichern lassen?
Siehe Hinweis auf "Local Port" ...

Zum Überwachen eines Ordners hatten wir hier einen Beitrag ...

Grüße
bastla
Bitte warten ..
Mitglied: michaellas
13.03.2010 um 19:52 Uhr
Hallo Tsuki

DANKE für den Code, funktioniert super, auch wenn ich nicht alle Befehle verstehe.

Aber halt nur wenn ich die Excel Datei geöffnet habe.
Mein Problem ist , wenn ich die .txt Datei ändere (mit neuen Daten füttere) sollte Excel die Vorlage automatisch und von sich aus starten.
Bitte warten ..
Mitglied: TsukiSan
14.03.2010 um 00:59 Uhr
Hallo michaelles,

also wenn ich es richtig verstehe hast du eine "Vorlage"-Datei als Excel. In diese soll
bei Änderung der .txt oder .cvs Datei die neuen Daten in die Excel-Vorlage eingetragen werden,
z.Bsp.: Text1 in Zeile/Spalte "A1" usw.?
In diesem Falle bräuchten wir etwas mehr Details über Aufbau der .txt-Datei und was soll
in welche Felder bei Excel dann eingetragen werden.
Dann können wir den Script anpassen.
Und zwar in etwas so:
TestZeit 60 Sekunden:
01.
Dim Aenderung, ZuletztGespeichert 
02.
Dim Pfadtxt , PfadExl 
03.
Dim PruefZeit 
04.
Dim objXLs 
05.
 
06.
 
07.
Pfadtxt = "C:\MeineDatei.txt" 
08.
PfadExl = "C:\MeinExcel.xls" 
09.
PruefZeit = 60 
10.
 
11.
 
12.
    Set FSO = CreateObject("Scripting.FileSystemObject") 
13.
    Set F = FSO.GetFile(Pfadtxt) 
14.
    Aenderung = F.DateLastModified 
15.
       	ZuletztGespeichert = Aenderung 
16.
    Set FSO = nothing 
17.
    Set F = nothing 
18.
 
19.
 
20.
For i = 0 to PruefZeit 
21.
	Pruefen 
22.
	wscript.Sleep 1000 
23.
Next 
24.
 
25.
Sub Pruefen () 
26.
	on error resume next 
27.
    Set FSO = CreateObject("Scripting.FileSystemObject") 
28.
    Set F = FSO.GetFile(Pfadtxt) 
29.
    Aenderung = F.DateLastModified 
30.
    If not Aenderung = ZuletztGespeichert then 
31.
       	ZuletztGespeichert = Aenderung 
32.
      	Set objXLs = WScript.CreateObject("Excel.Application") 
33.
    		objXLs.Workbooks.Open PfadExl 
34.
		objXls.Visible = false 
35.
		objXls.Range("A1").Value = Pfadtxt  
36.
		objXls.Range("A2").Value = ZuletztGespeichert 
37.
		objXls.Visible = True 
38.
	 
39.
   End If 
40.
    Set FSO = nothing 
41.
    Set F = nothing 
42.
    Set objXLs = nothing 
43.
End Sub 
44.
 
45.
WScript.Echo "PruefeDateiaufAenderung-Script beendet"
Gruss
Tsuki
Bitte warten ..
Mitglied: michaellas
14.03.2010 um 10:52 Uhr
Hallo Tsuki danke für deine Antwort.

Pfadtxt = "C:\MeineDatei.txt"
PfadExl = "C:\MeinExcel.xls"

Pfadtxt = "I:\Michael auf i\Michi Ordner Allgemein\alles was Arbeit\TESTBEREICH\txtmit excel\PROBE2.txt
PfadExl = "I:\Michael auf i\Michi Ordner Allgemein\alles was Arbeit\TESTBEREICH\txtmit excel\txtprobeteil2.xls"

Hab hier den Pfad eingetragen,aber es kommt "Fehler beim Kompilieren"
"Außerhalb einer Prozedur ungültig"
(Hab sicher irgendwas falsch gemacht.)

>In diesem Falle bräuchten wir etwas mehr Details über Aufbau der .txt-Datei

Die txt Datei die ich abspeichern kann hat z.B. (Text;Datum;Text;Zahl;.....)

In meiner ExcelVorlage hab ich es ganz einfach so gelöst, das beim öffnen der Vorlage mit Hilfe "Externe Daten Importieren" die Daten der .txt Datei Automatisch eingefügt werden.(Aufbau und Länge der .txt ist immer gleich, nur der Inhalt ändert sich.
in Tabelle1 A1;B1;C1;... kommen die Daten z.B (Text;Datum;Text;Zahl;...)
in Tabelle2, Tabelle3,... übernehme ich dann die Daten für meine Druckvorlage wo ich noch Daten ergänzen kann.

Was ich erreichen möchte ist, zu vereinfachen wenn ich (vom Programm aus das ich nicht ändern kann) die .txt Datei ändere, sofort mit der ExcelVorlage weiterarbeiten kann, ohne diese irgendwo öffnen zu müssen.
Bitte warten ..
Mitglied: TsukiSan
14.03.2010 um 11:38 Uhr
Hallo michaellas

in
Pfadtxt = "I:\Michael auf i\Michi Ordner Allgemein\alles was Arbeit\TESTBEREICH\txtmit excel\PROBE2.txt
fehlen am Ende die "Ausführungszeichen" "
Dann stellt sich mir die Frage, was VBS
Hab hier den Pfad eingetragen,aber es kommt "Fehler beim Kompilieren"
da kompiliert. Hast du den Script als .vbs abgespeichert?

Was ich erreichen möchte ist, zu vereinfachen wenn ich (vom Programm aus das ich nicht ändern kann) die .txt Datei
ändere, sofort mit der ExcelVorlage weiterarbeiten kann, ohne diese irgendwo öffnen zu müssen.
das würde mein Code-Schnipsel erst einmal tun soweit. Aller dings müssen dann nur noch die Daten aus der .txt -Datei in die richtigen Felder deiner Exceldatei eingetragen werden.
Wenn du deinen Code schon etwas fertig hast (zum testen einfach mal) dann poste ihn doch mal.
Mit Beispiel, wie die Daten in der Textdatei aussehen und wo was von deiner .txt-Datei in welche Excelzeile soll.
Dann können wir das gemeinsam fertig bekommen.

Gruss
Tsuki
Bitte warten ..
Mitglied: michaellas
15.03.2010 um 14:12 Uhr
HalloTsuki
Hab einwenig gebraucht und mir erst mal klar werden müssen was vbs eigentlich ist!!!!!!!
Hab es mit VBA verwechselt!!!!!!!

nun mal die Datensiehe unten)
mal abgesehen von den Daten´, irgendwie öffnet sich die Vorlage aber noch nicht wenn ich die .txt überschreibe.

TEXT Datei liegt auf (wird von mir immer überschrieben;Aufbau bliebt immer gleich)

P:\Schreibtisch\Listen\U-Bericht aktuelle Daten\RCA_BexSchein_CSV.txt

%%%BEXSCHEIN_LANG%%%
22249379;Zustellung: 12.03.2010;Tür;DEPOT:140;;;RailExpress;;Regelverkehr;;;;X;;; ;Peter Eichinger;;;Kagranerplatz;Wien;;A-1220;1220PET134;;33267808;Gel Express Logistik GmbH;;;Hans Martin Schleyer-Str. 15;Willich;;D-47877;8183196;DE160410593; ; ;1; ;1 Colli Handelsware;;;;;57.00;LC 22;Wien Hirschstetten; ; ; ; ;11.03.2010;LC 46;Wels;;;;;1403326780;33267808;11.03.10;BEX; ; ;11.03.2010; ;;;; ;1. : 1 Colli Handelsware;;Rohmasse [kg]: 57 ;; ; {|};{~}
%%%JOBEND%%%

EXCEL Vorlage liegt auf
P:\Schreibtisch\Listen\U-Bericht aktuelle Daten\U-Bericht mit CSV.xlt

%%%BEXSCHEIN_LANG%%%
`soll in Tabelle1 A20 stehen
22249379
`soll in Tabelle1 A21 stehen
Zustellung:12.03.2010
`soll in Tabelle1 B21 stehen
`C21;D21;.......usw
%%%JOBENDE%%%
`soll in Tabelle1 A22 stehen


mein VBS Script liegt auf
P:\Schreibtisch\Listen\U-Bericht aktuelle Daten\txtvbstest.vbs
01.
Dim Aenderung, ZuletztGespeichert 
02.
Dim Pfadtxt , PfadExl 
03.
Dim PruefZeit 
04.
Dim objXLs 
05.
 
06.
 
07.
Pfadtxt = "P:\Schreibtisch\Listen\U-Bericht aktuelle Daten\RCA_BexSchein_CSV.txt" 
08.
PfadExl = "P:\Schreibtisch\Listen\U-Bericht aktuelle Daten\U-Bericht mit CSV.xlt" 
09.
PruefZeit = 60 
10.
 
11.
 
12.
    Set FSO = CreateObject("Scripting.FileSystemObject") 
13.
    Set F = FSO.GetFile(Pfadtxt) 
14.
    Aenderung = F.DateLastModified 
15.
       	ZuletztGespeichert = Aenderung 
16.
    Set FSO = nothing 
17.
    Set F = nothing 
18.
 
19.
 
20.
For i = 0 to PruefZeit 
21.
	Pruefen 
22.
	wscript.Sleep 1000 
23.
Next 
24.
 
25.
Sub Pruefen () 
26.
	on error resume next 
27.
    Set FSO = CreateObject("Scripting.FileSystemObject") 
28.
    Set F = FSO.GetFile(Pfadtxt) 
29.
    Aenderung = F.DateLastModified 
30.
    If not Aenderung = ZuletztGespeichert then 
31.
       	ZuletztGespeichert = Aenderung 
32.
      	Set objXLs = WScript.CreateObject("Excel.Application") 
33.
    		objXlt.Workbooks.Open PfadExl 
34.
		objXlt.Visible = false 
35.
		objXlt.Range("A18").Value = Pfadtxt  
36.
		objXlt.Range("A19").Value = ZuletztGespeichert 
37.
		objXlt.Visible = True 
38.
	 
39.
   End If 
40.
    Set FSO = nothing 
41.
    Set F = nothing 
42.
    Set objXLs = nothing 
43.
End Sub 
44.
 
45.
WScript.Echo "PruefeDateiaufAenderung-Script beendet"
P.S.
Hab zwar schon einige Sachen in VBA gemacht, aber VBS ist komplettes Neuland für mich.

[Edit Biber] ad "Hab zwar schon einige Sachen in VBA gemacht, aber VBS ist komplettes Neuland für mich."
Aber beide kann man/frau in Codetags setzen (s.o.) [/Edit]
Bitte warten ..
Mitglied: TsukiSan
16.03.2010 um 00:24 Uhr
Hi michaelles,

mein Beispielscript sollte dir zumindest einmal eine Meldung in ein Xls-File schreiben, sobald sich etwas
am Speicherdatum(zeit) deiner txt-Datei ändert. Das müßte auch soweit fiúnktionieren.
Jetzt möchte ich erst mal etwas das VBS-Schnipsel erklären und was du später machen kannst:
01.
Dim blabla
definiert dir Variablen, die du später an anderer Stelle benötigst
Das FileSytemObject
01.
Set FSO = CreateObject("Scripting.FileSystemObject") 
benötigen wir, um auf Dateien zugreifen zu können. Dabei ist egal ob wir mit
01.
Set FSO '......
"FSO" wählen. Das können wir nennen, wie wir wollen. Wichtig ist nur das einer Variablen das FileSystemObject
gesetzt wird.
Dateien öffnen, schreiben oder lesen geht mit folgender Anweisung:
01.
' Art, wie die Datei geöffnet werden soll 
02.
'ForReading   = 1  
03.
'ForWriting   = 2  
04.
'ForAppending = 8 
05.
'hier schreiben: 
06.
Set MeineDatei = FSO.OpenTextFile("D:\testfile.txt", 8) 
07.
MeineDatei.WriteLine (time) 
08.
MeineDatei.WriteLine ("Test") 
09.
MeineDatei.Close 
10.
'hier auslesen: 
11.
Set MeineDatei = FSO.OpenTextFile("D:\testfile.txt", 1) 
12.
MeineDaten =MeineDatei. ReadAll '(ReadLine) 
13.
MeineDatei.Close
mit
01.
wscript.Sleep 1000 
erreichen wir einen Sleeptimer von 1000ms.
mit der for -Schleife im Zusammenhang des Sleeptimers und der maximalen Anzahl der Schleifendurchläufe (in unseren Beispiel)
01.
 PruefZeit = 60 
erreichen wir, das die Subroutine "Pruefen" für 1 Minute aufgerufen wird, im Abstand von einer Sekunde jeweils.
Somit läuft das Script mindestens 1 Minute lang
in der Sub Prüfen musst du dann deine Befehle einbauen.
mit
01.
    Set FSO = CreateObject("Scripting.FileSystemObject")  
02.
    Set F = FSO.GetFile(Pfadtxt)  
03.
    Aenderung = F.DateLastModified 
04.
    If not Aenderung = ZuletztGespeichert then  
05.
         'Befehle 
06.
    end if 
prüfen wir, ob die letzte Änderung (Abspeichern der txt-Datei) gleich geblieben ist oder neu abgespeichert worde.

Ich denke, du solltest das erst einmal soweit nachvollziehen können in unserem Script. Den Aufruf der Excel-Datei und das Auswerten deiner Text-Datei widmen wir uns später zu, da ich schon wieder einen Termin habe.

Melde dich bitte.

Viele Grüße
Tsuki
Bitte warten ..
Mitglied: bastla
16.03.2010 um 00:36 Uhr
@Tsuki
Vielleicht doch noch einmal als Tipp (das Original zum unten verlinkten Beitrag): How Can I Automatically Open New Files Added to a Folder? ...

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
16.03.2010 um 13:32 Uhr
@bastla,

das ist auf jeden Fall ein super Tipp!
Dieser Script überwacht einen ganzen Ordner und dessen Inhalt (Dateien) auf Änderung.
Ich bin nur auf michaelles Frage eingegangen und wollte erklären, wie man generell eine Datei überwachen "könnte".
Trotzdem sollte michaelles sich deinen Tipp auch anschauen und analysieren und sich zum Schluss für das (für ihn) bessere Script entscheiden. Du bist da die bessere Hilfe, als ich.

Vielen Dank und viele Grüße

Tsuki
Bitte warten ..
Mitglied: michaellas
16.03.2010 um 15:12 Uhr
Hallo
DANKE an Euch beide!!!!
Bin gerade etwas im Stress ( viel Arbeit mit Arbeit) (viel Arbeit mit Kind)
Bin aber schon dabei Euer Wissen in mich aufzunehmen.(kann aber einige Tage dauern)
DANKE
Bitte warten ..
Mitglied: TsukiSan
16.03.2010 um 23:12 Uhr
Hallo michaellas,

nur keine Hetz.
nimm dir Zeit und nicht das Leben

Gruss
Tsuki
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Linux Tools
Mit Linux am ende einer Datei eine Leerzeile einfügen (8)

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema Linux Tools ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...