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
GELÖST

CSV in XLSX mit OpenOffice und VBS und das ganze in meine Batchscript, das die Datei per Mail versendet

Frage Entwicklung VB for Applications

Mitglied: ColdZero89

ColdZero89 (Level 1) - Jetzt verbinden

06.07.2012, aktualisiert 15:15 Uhr, 5132 Aufrufe, 60 Kommentare

Datein werden Exportiert als CSV und werden dann per Mail versendet. Diese werden aber als XLSX benötigt

Ja Moin Moin,

also wie im Vorwort geht es darum, das ich ein Batchscript habe, das die exportierte CSV Datei versendet.

Bisher isses dann so, das die Datei abgespeichert wurd und als XLSX neu gespeichert wird - unnötiger Arbeitsschritt der vor dem Abschicken bereits geschehen kann.

Problem 1. MSOffice ist auf dem PC nicht installiert, nur OpenOffice in der aktuellsten Version.
Problem 2. Habe ich wenig ahnung von VBS UND bin zwar drauf gestoßen wie das schick zu lösen ist, aber wie geht das unter OpenOffice?

Hoffe ihr könnt mir helfen. Würd das ganze dann in mein Batch einbauen (das weiß ich dank Bastla wie das geht).

Danke im Vorraus.

Gruß Zero
60 Antworten
Mitglied: rubberman
07.07.2012 um 02:46 Uhr
Hallo ColdZero89.

Es wäre mir neu, dass man mit OOo im XLSX Format speichern kann. XLS sollte aber funktionieren. Ich bin nicht der OOo Experte, da ich beruflich ausschließlich mit M$ Office zu tun habe.
Kurzerhand zusammen geschrieben, aber nur unzureichend getestet:
01.
Dim i, arrProp(1), oSvcMan, oDsktp, oDoc 
02.
 
03.
Const sCsvURL     = "file:///C:/pfad/test.csv" 
04.
Const sXlsURL     = "file:///C:/pfad/test.xls" 
05.
 
06.
Set oSvcMan       = WScript.CreateObject("com.sun.star.ServiceManager") 
07.
Set oDsktp        = oSvcMan.createInstance("com.sun.star.frame.Desktop") 
08.
 
09.
For i = 0 To UBound(arrProp) 
10.
  Set arrProp(i)  = oSvcMan.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
11.
Next 
12.
 
13.
arrProp(0).Name   = "FilterName" 
14.
arrProp(0).Value  = "Text - txt - csv (StarCalc)" 
15.
arrProp(1).Name   = "FilterOptions" 
16.
arrProp(1).Value  = "59,34,ANSI,1," 
17.
Set oDoc          = oDsktp.loadComponentFromURL(sCsvUrl, "_blank", 0, arrProp) 
18.
 
19.
arrProp(0).Value  = "MS Excel 97" 
20.
arrProp(1).Name   = "" 
21.
arrProp(1).Value  = "" 
22.
oDoc.storeAsURL sXlsURL, arrProp 
23.
 
24.
oDoc.close(True) 
25.
oDsktp.terminate 
26.
 
27.
For i = 0 To UBound(arrProp) 
28.
  Set arrProp(i)  = Nothing 
29.
Next 
30.
Set oDoc          = Nothing 
31.
Set oDsktp        = Nothing 
32.
Set oSvcMan       = Nothing
Beachte dass Pfadangaben im URL Format stehen müssen!

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
07.07.2012, aktualisiert um 11:56 Uhr
Hallo rubberman!

Tolles Skript

Es wäre mir neu, dass man mit OOo im XLSX Format speichern kann
Habe mir die aktuelle OO-Version auf meinen virtuellen PC installiert und kann zum einen bestätigen, dass es funktioniert und zum anderen, dass (max) nur ein 97er *.xls-Format erstellt werden kann

Gibt's auch ne Möglichkeit, die Konvertierung mit Visible = False auszuführen und wie müsste dass arrProp definiert sein, wenn ich eine *.ods-Datei in's *.xls-Format konvertieren möchte?

Gruß Dieter
Bitte warten ..
Mitglied: rubberman
07.07.2012 um 15:16 Uhr
Hallo Dieter,

danke für die Blumen

Zu deinen Fragen:
"Hidden" gehört zu den Eigenschaften, die beim Öffnen eines Dokuments festgelegt werden können. Ordne einen booleschen Wert zu.
01.
Dim i, arrProp(2), oSvcMan, oDsktp, oDoc 
02.
 
03.
Const sCsvURL     = "file:///C:/pfad/test.csv" 
04.
Const sXlsURL     = "file:///C:/pfad/test.xls" 
05.
 
06.
Set oSvcMan       = WScript.CreateObject("com.sun.star.ServiceManager") 
07.
Set oDsktp        = oSvcMan.createInstance("com.sun.star.frame.Desktop") 
08.
 
09.
For i = 0 To UBound(arrProp) 
10.
  Set arrProp(i)  = oSvcMan.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
11.
Next 
12.
 
13.
arrProp(0).Name   = "Hidden" 
14.
arrProp(0).Value  = True 
15.
arrProp(1).Name   = "FilterName" 
16.
arrProp(1).Value  = "Text - txt - csv (StarCalc)" 
17.
arrProp(2).Name   = "FilterOptions" 
18.
arrProp(2).Value  = "59,34,ANSI,1," 
19.
Set oDoc          = oDsktp.loadComponentFromURL(sCsvUrl, "_blank", 0, arrProp) 
20.
 
21.
arrProp(1).Value  = "MS Excel 97" 
22.
arrProp(2).Name   = "" 
23.
arrProp(2).Value  = "" 
24.
oDoc.storeAsURL sXlsURL, arrProp 
25.
 
26.
oDoc.close(True) 
27.
oDsktp.terminate 
28.
 
29.
For i = 0 To UBound(arrProp) 
30.
  Set arrProp(i)  = Nothing 
31.
Next 
32.
Set oDoc          = Nothing 
33.
Set oDsktp        = Nothing 
34.
Set oSvcMan       = Nothing
Für ODS Dateien reicht dann die Hidden Eigenschaft bereits zum Öffnen (bzw. ein leeres Array, wenn du keine weiteren Properties festlegen willst).
01.
Dim i, arrProp(1), oSvcMan, oDsktp, oDoc 
02.
 
03.
Const sOdsURL     = "file:///C:/pfad/test.ods" 
04.
Const sXlsURL     = "file:///C:/pfad/test.xls" 
05.
 
06.
Set oSvcMan       = WScript.CreateObject("com.sun.star.ServiceManager") 
07.
Set oDsktp        = oSvcMan.createInstance("com.sun.star.frame.Desktop") 
08.
 
09.
For i = 0 To UBound(arrProp) 
10.
  Set arrProp(i)  = oSvcMan.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
11.
Next 
12.
 
13.
arrProp(0).Name   = "Hidden" 
14.
arrProp(0).Value  = True 
15.
Set oDoc          = oDsktp.loadComponentFromURL(sOdsUrl, "_blank", 0, arrProp) 
16.
 
17.
arrProp(1).Name   = "FilterName" 
18.
arrProp(1).Value  = "MS Excel 97" 
19.
oDoc.storeAsURL sXlsURL, arrProp 
20.
 
21.
oDoc.close(True) 
22.
oDsktp.terminate 
23.
 
24.
For i = 0 To UBound(arrProp) 
25.
  Set arrProp(i)  = Nothing 
26.
Next 
27.
Set oDoc          = Nothing 
28.
Set oDsktp        = Nothing 
29.
Set oSvcMan       = Nothing
Grüße
rubberman
Bitte warten ..
Mitglied: 76109
07.07.2012, aktualisiert um 16:56 Uhr
Hallo rubberman!

Super Und vielen Dank für Deine Mühe!

Grüße und ein schönes Wochendende

Dieter
Bitte warten ..
Mitglied: ColdZero89
09.07.2012 um 11:18 Uhr
Moin,

Wow ich danke dir. Ich versteh zwar nur die hälfte, bzw. kann mir einige dinge zusammenreimen aber sieht seeeehr interessant aus.

Werd ich die Tage mal ausprobieren, momentan schlecht da unterbesetzt.

Danke für deine Mühen und @Didi: Sehr schön das auch scheinbar auch dir damit geholfen ist :D

Gruß Zero
Bitte warten ..
Mitglied: rubberman
09.07.2012 um 19:30 Uhr
Hallo ColdZero89.

Zitat von ColdZero89:
Ich versteh zwar nur die hälfte

Kann ich nachvollziehen Von dem Script ist auch nicht mal die Hälfte VBScript. Vorwiegend sind es Methoden und Eigenschaften der referenzierten OOo Objekte.


@Dieter

Nachdem ich noch ein bisschen herum experimentiert habe, ist es öfters passiert, dass der OOo Menüdesktop trotzdem für Sekunden oder Sekundenbruchteile sichtbar war. Ist auch kein Wunder, da die Hidden Eigenschaft ja erst beim Öffnen des Dokuments gesetzt wird.
Folgende Änderung des Codes beruht auf:
- der Tatsache, dass soffice.exe mit der Option -invisible ohne GUI startet.
- der Beobachtung/Annahme, dass mehrere Instanzen des OOo Desktops unter nur einem bereits gestarteten soffice.exe Process laufen.
01.
Option Explicit 
02.
 
03.
Dim i, iRet, iPID 
04.
Dim sExe, sExePath 
05.
Dim arrProp(2) 
06.
Dim oReg, oFSO, oWMI, oStartup, oConfig, oProcess, colProc, oSvcMan, oDsktp, oDoc 
07.
 
08.
Const sCsvPath      = "test.csv" 
09.
Const sXlsPath      = "test.xls" 
10.
 
11.
Const iHKLM        = &h80000002 
12.
Const sKey         = "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\soffice.exe" 
13.
Const sVal         = "" 
14.
Const sComp        = "." 
15.
Const iSleep       = 2000 
16.
Const SW_HIDE      = 0 
17.
 
18.
''' OOo Starten (hidden) ''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
19.
 
20.
' Wo ist OOo installiert? (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\soffice.exe) 
21.
Set oReg           = GetObject( _ 
22.
  "winmgmts:{impersonationLevel=impersonate}!\\" & sComp & "\root\default:StdRegProv") 
23.
oReg.GetStringValue iHKLM, sKey, sVal, sExe 
24.
Set oReg           = Nothing 
25.
 
26.
If IsNull(sExe) Then WScript.Quit 
27.
 
28.
' OOo Arbeitsverzeichnis 
29.
Set oFSO           = CreateObject("Scripting.FileSystemObject") 
30.
sExePath           = oFSO.GetParentFolderName(sExe) 
31.
Set oFSO           = Nothing 
32.
 
33.
' OOo ohne GUI öffnen. 
34.
Set oWMI           = GetObject _ 
35.
  ("winmgmts:{impersonationLevel=impersonate}!\\" & sComp & "\root\cimv2") 
36.
Set oStartup       = oWMI.Get("Win32_ProcessStartup") 
37.
Set oConfig        = oStartup.SpawnInstance_ 
38.
oConfig.ShowWindow = SW_HIDE 
39.
Set oProcess       = oWMI.Get("Win32_Process") 
40.
iRet               = oProcess.Create _ 
41.
  (sExe & " -invisible", sExePath, oConfig, iPID) ' Option -invisible ist erforderlich! 
42.
 
43.
Set oProcess       = Nothing 
44.
Set oConfig        = Nothing 
45.
 
46.
If iRet > 0 Then WScript.Quit 
47.
 
48.
' Auf Prozess "soffice.bin" warten und sicherstellen dass er vollständig geladen ist. 
49.
Do 
50.
  Set colProc      = oWMI.ExecQuery( _ 
51.
    "Select * from Win32_Process Where Caption = 'soffice.bin' " & _ 
52.
    "And ParentProcessID = '" & CStr(iPID) & "'") 
53.
  For Each oProcess In colProc 
54.
    Exit Do 
55.
  Next 
56.
  WScript.Sleep 300 
57.
Loop 
58.
WScript.Sleep iSleep 
59.
 
60.
Set oProcess       = Nothing 
61.
Set colProc        = Nothing 
62.
Set oWMI           = Nothing 
63.
 
64.
''' CSV zu XLS ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
65.
 
66.
' OOo ServiceManager 
67.
Set oSvcMan        = WScript.CreateObject("com.sun.star.ServiceManager") 
68.
 
69.
' OOo Menü - Desktop 
70.
Set oDsktp         = oSvcMan.createInstance("com.sun.star.frame.Desktop") 
71.
 
72.
' OOo Property - Struct 
73.
For i = 0 To UBound(arrProp) 
74.
  Set arrProp(i)   = oSvcMan.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
75.
Next 
76.
 
77.
' Properties für das Öffnen der CSV Datei. 
78.
arrProp(0).Name    = "Hidden" 
79.
arrProp(0).Value   = True 
80.
arrProp(1).Name    = "FilterName" 
81.
arrProp(1).Value   = "Text - txt - csv (StarCalc)" 
82.
arrProp(2).Name    = "FilterOptions" 
83.
' Delimiter ';' (59), Texttrenner '"' (34), Zeichensatz ANSI, Start in Zeile 1 
84.
arrProp(2).Value   = "59,34,ANSI,1," 
85.
Set oDoc           = oDsktp.loadComponentFromURL( _ 
86.
  ToOOFileURL(sCsvPath), "_blank", 0, arrProp) 
87.
 
88.
' Properties für das Speichern als XLS Datei. 
89.
arrProp(1).Value   = "MS Excel 97" 
90.
arrProp(2).Name    = "" 
91.
arrProp(2).Value   = "" 
92.
oDoc.storeAsURL ToOOFileURL(sXlsPath), arrProp 
93.
 
94.
' Dokument schließen 
95.
oDoc.close(True) 
96.
' OOo schließen 
97.
oDsktp.terminate 
98.
 
99.
' Speicher freigeben 
100.
For i = 0 To UBound(arrProp) 
101.
  Set arrProp(i)   = Nothing 
102.
Next 
103.
Set oDoc           = Nothing 
104.
Set oDsktp         = Nothing 
105.
Set oSvcMan        = Nothing 
106.
 
107.
''' Windows Pfadangabe zu OOo File URL ''''''''''''''''''''''''''''''''''''''''' 
108.
 
109.
Function ToOOFileURL(sPath) 
110.
' Absolute Pfade oder Pfade relativ zum Script werden entsprechend konvertiert. 
111.
' OOo hält sich nicht an die Restriktionen in RFC 1738. Weniger ist hier mehr. 
112.
  ToOOFileURL      = "file:///" & Replace(Replace(Replace( _ 
113.
    CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(sPath), _ 
114.
    "\", "/"), "%", "%25"), " ", "%20") 
115.
End Function
Wie du siehst gibt es nun auch die Funktion ToOOFileURL(). Somit kannst du wie gewohnt mit Windows Pfadangaben arbeiten. Relative Pfade werden entsprechend erweitert.

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
09.07.2012, aktualisiert um 20:02 Uhr
Hallo rubberman!

Nachdem ich noch ein bisschen herum experimentiert habe, ist es öfters passiert,
dass der OOo Menüdesktop trotzdem für Sekunden oder Sekundenbruchteile sichtbar war.
Ist auch kein Wunder, da die Hidden Eigenschaft ja erst beim Öffnen des Dokuments gesetzt wird.
Ist ja bei Excel auch nicht anders, es sei denn, man lädt die Excel-Datei mit GetObject, was allerdings auch nur zum Lesen (.Close False) einer Excel-Datei geeignet ist. Beim Speichern und erneutem Öffnen sind die Excel-Einstellungen zum Großteil futsch

Dein (WOW)-Skript muss ich mir erstmal in Ruhe zu Gemüte führen

Bei meinen Testereien ist mir in dieser Hinsicht nix aufgefallen und wenn, dann ist der Umstand wohl vernachlässigbar

Danke für Deine Mühe!

Gruß Dieter
Bitte warten ..
Mitglied: 76109
10.07.2012 um 00:10 Uhr
Hallo rubberman!

' Wo ist OOo installiert? (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\soffice.exe)
Da ist bei mir keine soffice.exe zu finden, da Office nur unter Current-User installiert ist

Zum ermitteln des Pfades verwende ich folgenden Code:
01.
Const sComputer = "." 
02.
Const sSql_OpenOffice = "SELECT Version FROM Win32_Product WHERE Name Like 'OpenOffice%'" 
03.
 
04.
Const iHKCU = &H80000001 
05.
Const iHKLM = &H80000002 
06.
 
07.
Const sRegKey = "Software\OpenOffice.org\" 
08.
Const sRegVal = "Path" 
09.
 
10.
    Dim oWMI, oItem, sProduktName, sKey, sExePath 
11.
     
12.
    Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sComputer & "\root\CIMV2") 
13.
     
14.
    For Each oItem In oWMI.ExecQuery(sSql_OpenOffice) 
15.
        sProduktName = oItem.Name 
16.
    Next 
17.
         
18.
    sKey = sRegKey & Replace(sProduktName, " ", "\") 
19.
     
20.
    With GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sComputer & "\root\default:StdRegProv") 
21.
        .GetStringValue iHKCU, sKey, sRegVal, sExePath 
22.
    End With
Gruß und gute Nacht

Dieter
Bitte warten ..
Mitglied: rubberman
10.07.2012 um 00:41 Uhr
Hallo Dieter,

danke für die Info. An diese Möglichkeit hatte ich gar nicht gedacht.
Leider ist es bei mir so, dass Daten über die Win32_Product Klasse zu selektieren, mehrere Minuten dauert Da muss ich noch mal in mich gehen. Vielleicht fällt mir 'ne Alternative ein.

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
10.07.2012, aktualisiert um 23:28 Uhr
Hallo rubberman!

Hm.., bei mir geht's Ratzfatz. Liegt wohl daran, dass auf meinem XP-Mode nicht viel installiert ist

Es geht aber auch so:
01.
Const sComputer = "." 
02.
 
03.
Const iHKCR = &H80000000 
04.
Const iHKCU = &H80000001 
05.
Const iHKLM = &H80000002 
06.
Const iHKUS = &H80000003 
07.
 
08.
Const sRegKey = "Software\OpenOffice.Org\OpenOffice.Org\" 
09.
Const sRegValue = "Path" 
10.
     
11.
    Dim oReg, oSubKey, aRegValues, sExePath 
12.
     
13.
    Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
14.
                          sComputer & "\root\default:StdRegProv") 
15.
     
16.
    oReg.EnumKey iHKCU, sRegKey, aRegValues 
17.
         
18.
    If IsArray(aRegValues) Then 
19.
        If IsNumeric(aRegValues(0)) Then 
20.
           oReg.GetStringValue iHKCU, sRegKey & aRegValues(0), sRegValue, sExePath 
21.
        End If 
22.
    End If 
23.
         
24.
    MsgBox sExePath
Gruß Dieter

[edit] einen kleinen Fehler entdeckt und geändert [/edit]
Bitte warten ..
Mitglied: ColdZero89
10.07.2012 um 10:26 Uhr
Moin,

kurze anmerkung: Ihr seid Verrückt.
Und rubberman von deinem Monstösem Script - versteh ich nun vielleicht einen bruchteil... Ich kann teilweise GROB zuordnen was wofür steht und was es macht... aber herrjeh! Mir raucht der Kopf!

Am WE mal angucken und verstehen + nächste Woche testen und dann, wenns klappt, als Gelöst markieren.

Gruß Zero
Bitte warten ..
Mitglied: 76109
10.07.2012 um 11:18 Uhr
Hallo ColdZero89!

kurze anmerkung: Ihr seid Verrückt.
Das sind doch nur Spielereien und es geht eigentlich nur darum, den Prozess völlig im Hintergrund auszuführen. In den vorigen Skripts greift die Option Hidden erst, nachdem OpenOffice schon geöffnet wurde und jenachdem, wie lange das dauert, kann es sein, dass das Fenster für eine kurze Zeit sichtbar wird. Im letzten Skript hingegen, wird OpenOffice durch den Prozess-Manager im Hintergrund gestartet und bleibt somit unsichtbar. Allerdings ist der Aufwand dafür nicht gerade unerheblich, da ja u.a. auch ersteinmal der direkte Pfad der OpenOffice-Exe ermittelt werden muss...

Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
10.07.2012, aktualisiert um 13:36 Uhr
Moin,

Spielereien? Oo Spielereien sind für mich wenn ich ne Stickstoffkühlung auf meinen CPU baue und den Übertakte, aber doch nicht so ein WirrWar
/OT
Gut ich bin eben ehr der Hardware Mensch, der aus sämtlichen teilen noch nen super Office PC - oder je nach teilen - auch gaming PC zusammenbastelt oder einfach mal ein wenig CaseModding betreibt - wie demnächst geplant in mein CD Regal x)
/OT

Aber ok........ *hust* belassen wir es bei Spielereien.

Was mir noch einfällt, was unerwähnt geblieben ist: Die Ausgangsdatei EXISTIERT jedesmal vom Namen her schon und muss überschrieben werden. Rattert der das so durch oder muss da nun noch ne Zeile hinzu?

Gruß Zero
Bitte warten ..
Mitglied: 76109
10.07.2012 um 16:50 Uhr
Hallo ColdZero89!

Naja, ich bin ja durch und durch ein Handwerker und übe auch einen Handwerksberuf (Schwerstarbeit) aus. Mit IT und/oder Programmierung habe ich ansich nix zu tun. Deshalb ist es für mich eine Spielerei nach dem Motto 'Wer lesen kann ist im Vorteil..', um in meinem Alter mental noch halbwegs fit zu bleiben

Was mir noch einfällt, was unerwähnt geblieben ist: Die Ausgangsdatei EXISTIERT jedesmal vom Namen her schon und muss überschrieben werden. Rattert der das so durch oder muss da nun noch ne Zeile hinzu?
Wie jetze? Wieso existiert die Datei schon?

Du Konvertierst doch von *.csv nach *.xls. Ansonsten könnte man sich ja das ganze sparen, wenn du schon eine *.xls-Datei hättest?

Gruß Dieter
Bitte warten ..
Mitglied: rubberman
10.07.2012, aktualisiert 11.07.2012
@Dieter

das sieht doch gut aus. Das ganze noch in eine Funktion geworfen, und schon wird's für uns beide und hoffentlich auch für andere funktionieren.
01.
Option Explicit 
02.
 
03.
Const iHKCU                = &H80000001 
04.
Const iHKLM                = &H80000002 
05.
 
06.
Dim sExe 
07.
 
08.
sExe                       = GetSofficeExePath(iHKCU) 
09.
If IsEmpty(sExe) Then sExe = GetSofficeExePath(iHKLM) 
10.
If IsEmpty(sExe) Then WScript.Quit 1 
11.
 
12.
MsgBox sExe 
13.
 
14.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
15.
Function GetSofficeExePath(iHKey) 
16.
  Const sRegKey     = "Software\OpenOffice.Org\OpenOffice.Org\" 
17.
  Const sRegValue   = "Path" 
18.
  Const sComputer   = "." 
19.
         
20.
  Dim oReg, aRegValues, sExePath 
21.
         
22.
  Set oReg          = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _ 
23.
                                & sComputer & "\root\default:StdRegProv") 
24.
         
25.
  oReg.EnumKey iHKey, sRegKey, aRegValues 
26.
         
27.
  If IsArray(aRegValues) Then 
28.
    If IsNumeric(aRegValues(0)) Then 
29.
      oReg.GetStringValue iHKey, sRegKey & aRegValues(0), sRegValue, sExePath 
30.
    End If 
31.
  End If 
32.
 
33.
  Set oReg          = Nothing 
34.
 
35.
  GetSofficeExePath = sExePath 
36.
End Function
[EDIT]... und Dieters Korrektur nachgezogen[/EDIT]


@ColdZero89
[OT]
Zitat von ColdZero89:
Spielereien sind für mich wenn ich ne Stickstoffkühlung auf meinen CPU baue und den Übertakte

Brrrr... Bei solchen Temperaturen übertaktet mein Zähneklappern schon beim Lesen
Die Hardware an der ich (berufsbedingt) herumbastle ist nicht so "hard", wie mein Nickname bereits vermuten lässt. Das Ganze hat auch eher was mit höheren Temperaturen zu tun.
Ich hoffe du nimmst es Dieter und mir nicht übel, wenn wir deinen Thread für ein wenig Geplänkel rund um's Thema missbrauchen
[/OT]

Zitat von ColdZero89:
Die Ausgangsdatei EXISTIERT jedesmal vom Namen her schon und muss überschrieben werden. Rattert der das so durch oder muss da nun noch ne Zeile hinzu?

Am Script solls nicht liegen und OOo hat auch keine Probleme damit. Das Problem würde (wie so oft) vor dem Rechner sitzen, nämlich wenn die Datei mit Calc oder Excel geöffnet und somit gesperrt ist.

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
10.07.2012, aktualisiert um 23:18 Uhr
Hallo rubberman!

Beim Durchlesen Deines Postes ist mir ein kleiner Fehler aufgefallen und zwar müsste (in meinem Code schon geändert) bei Dir die Codezeile 31 etwas nach oben in den IsNumeric-Block, wobei man sich die sKey-Variable dann auch gleich sparen kann

Ist Dir wohl nicht aufgefallen?

Gruß Dieter
Bitte warten ..
Mitglied: rubberman
11.07.2012 um 01:14 Uhr
Hallo Dieter!

Zitat von 76109:
Ist Dir wohl nicht aufgefallen?

Nö, im Gegenteil. Beim ersten Durchlesen des Codes sah es mir so aus als würdest du darauf hinaus wollen letztlich die höchste Versionsnummer in Variable sKey zu haben. Keine Ahnung, wie ich darauf gekommen bin. Natürlich könnte man über aRegValues iterieren und prüfen ob es mehrere Versionen gibt. Das ist aber unsinnig, da bei Installation von OOo die vorherige Version deinstalliert wird. Ergo: es genügt völlig aRegValues(0) als Maß der Dinge anzunehmen.
Danke für das Update. Ich passe die Funktion entsprechend an.

Grüße
rubberman
Bitte warten ..
Mitglied: ColdZero89
11.07.2012, aktualisiert um 11:25 Uhr
Moin,

bezahlt ihr mir eine Dnustabzugshaube? Ich mein ich kenne das ganze von nicht ITlern wenn man da anfängt von der GPU und ach ka zu reden und denen der Kopf raucht, aber wenn ich mir das hier durchlese... da brennen mir sämtliche gehirnzellen wegen überhitzung durch

Und nein an sich kein Problem solange ihr beschreibt was ihr geändert habt und so damit auch jeder außenstehende das nachvollziehen kann - ich kansn nämlich nicht mehr

Die Datei wird auf dem NB wo es ausgeführt wird NICHT geöffnet sein.

Exportieren -> Verarbeiten -> Auf dem anderen PC - bei dem die E-Mail ankam - aufs Netzlaufwerk schieben.

Was ich mich nun frage: Wie in aller Welt bekomm ich DAS in mein Batch unter? Vorallem läuft das mit der Endung VBS? Wenn ja dann weiß ich wie ich das aufrufe und die Butter is gegessen, aber wenn nicht dann bildet mein Kopf gleich ein grooooßes ? ab x)
Herrlich hier wieder :D

Gruß Zero

Edit: Vorallem dieser Sprung von diesem "großen" Script zu einer Arg kurzen fassung - wie gesagt wäre lieb wenn ihr da zumindestens erklären könntet was verändert wurde und was das script mit dieser veränderung bewirken soll, so verstehen zumindestens laien auch ein wenig was ihr hier für "Spielerein" treibt :D
Bitte warten ..
Mitglied: 76109
11.07.2012 um 15:21 Uhr
Hallo ColdZero89!

Achso! Und ich dachte, dass bei Dir schon alles läuft

Habe mal was mit rubbermans Anfangs-Script zusammengebastelt, damit Du auch was zum spielen hast:
01.
'Aufrufbeispiele über Batch: 
02.
 
03.
'Eine Csv-/Text-Datei [csv, txt] 
04.
'@cscript //nologo "E:\Test\ConvertCsvToXls.vbs" "E:\Test\Test.csv" 
05.
 
06.
'Mehrere Csv-/Text-Dateien [csv, txt] 
07.
'@cscript //nologo "E:\Test\ConvertCsvToXls.vbs" "E:\Test\*.csv" 
08.
 
09.
'Main Beg 
10.
    Dim oFso, oFile, oArgs, sBaseName, sExtName, sFolder, sSrcFile, sDstFile 
11.
     
12.
    Set oArgs = WScript.Arguments 
13.
     
14.
    If oArgs.Count <> 1 Then 
15.
        WScript.Echo "Falsche Anzahl an Argumenten!":  WScript.Quit 1 
16.
    End If 
17.
         
18.
    sSrcFile = oArgs(0) 
19.
     
20.
    Set oFso = CreateObject("Scripting.FileSystemObject") 
21.
         
22.
    sExtName = oFso.GetExtensionName(sSrcFile) 
23.
     
24.
    If LCase(sExtName) <> "csv" And LCase(sExtName) <> "txt" Then 
25.
        WScript.Echo "Falscher Dateityp [csv, txt]!":  WScript.Quit 1 
26.
    End If 
27.
     
28.
    sBaseName = oFso.GetBaseName(sSrcFile) 
29.
    sFolder = oFso.GetParentFolderName(sSrcFile) 
30.
     
31.
    If sBaseName = "*" Then 
32.
        For Each oFile In oFso.GetFolder(sFolder).Files 
33.
            If LCase(oFso.GetExtensionName(oFile)) = sExtName Then 
34.
                sBaseName = oFso.GetBaseName(oFile) 
35.
                sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls") 
36.
                Call ConvertCsvToXls(oFile.Path, sDstFile) 
37.
            End If 
38.
        Next 
39.
    ElseIf Not oFso.FileExists(sSrcFile) Then 
40.
        WScript.Echo "Quell-Datei nicht gefunden!":  WScript.Quit 1 
41.
    Else 
42.
        sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls") 
43.
        Call ConvertCsvToXls(sSrcFile, sDstFile) 
44.
    End If 
45.
 
46.
    Set oFso = Nothing 
47.
     
48.
    WScript.Echo "Fertig!":  WScript.Quit 0 
49.
 
50.
'Main End 
51.
 
52.
Private Sub ConvertCsvToXls(ByRef sCsvFile, sXlsFile) 
53.
    Dim oSvcMan, oDsktp, oDoc, aProp(2), i, sCsvURL, sXlsURL 
54.
     
55.
    sCsvURL = "file:///" & Replace(sCsvFile, "\", "/") 
56.
    sXlsURL = "file:///" & Replace(sXlsFile, "\", "/") 
57.
     
58.
    Set oSvcMan = CreateObject("com.sun.star.ServiceManager") 
59.
    Set oDsktp = oSvcMan.createInstance("com.sun.star.frame.Desktop") 
60.
     
61.
    For i = 0 To UBound(aProp) 
62.
      Set aProp(i) = oSvcMan.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
63.
    Next 
64.
     
65.
    aProp(0).Name = "Hidden" 
66.
    aProp(0).Value = True 
67.
    aProp(1).Name = "FilterName" 
68.
    aProp(1).Value = "Text - txt - csv (StarCalc)" 
69.
    aProp(2).Name = "FilterOptions" 
70.
    aProp(2).Value = "59,34,ANSI,1," 
71.
     
72.
    Set oDoc = oDsktp.loadComponentFromURL(sCsvURL, "_blank", 0, aProp) 
73.
     
74.
    aProp(1).Value = "MS Excel 97" 
75.
    aProp(2).Name = "" 
76.
    aProp(2).Value = "" 
77.
     
78.
    oDoc.storeAsURL sXlsURL, aProp 
79.
     
80.
    oDoc.Close False 
81.
    oDsktp.Terminate 
82.
     
83.
    For i = 0 To UBound(aProp) 
84.
      Set aProp(i) = Nothing 
85.
    Next 
86.
     
87.
    Set oDoc = Nothing 
88.
    Set oDsktp = Nothing 
89.
    Set oSvcMan = Nothing 
90.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
11.07.2012 um 16:00 Uhr
Moin und danke Dieter,

nein eben nicht werde die Woche nicht dazu kommen das zu testen aber nächste Woche.

Also ohne >> schnick aufrufen und das Temporär in ne vbs Datei reinschreiben und die dann aufrufen - gut.

Und per cscript die VBS sowie die zu bearbeitende Date (csv) aufrufen.
Alles klärchen. Nun noch einigermaßen durch das Script steigen und es verstehen und ich bin happy ^-^

Danke euch beiden schonmal vielmals =)

Gruß Zero
Bitte warten ..
Mitglied: rubberman
11.07.2012 um 19:07 Uhr
Hallo ColdZero89.

Mal noch 'ne Randnotiz von meiner Seite ...
Zitat von ColdZero89:
Was ich mich nun frage: Wie in aller Welt bekomm ich DAS in mein Batch unter?

Wenn ich das lese, frage ich mich was anderes ... was in aller Welt machst du eigentlich noch mit deiner Batchdatei? Ohne nun deine vorangegangenen Threads im Detail studiert zu haben, ist mir aufgefallen, dass du so ziemlich alles in VBScript erledigst. Du benutzt die Batchdatei um ein VBScript zu schreiben und anschließend aufzurufen - öhm ... Wo klemmt's eigentlich noch, um das nicht gleich ganz per VBS zu verwursten? Oder gibt es da einen speziellen Grund?

Grüße
rubberman
Bitte warten ..
Mitglied: ColdZero89
12.07.2012 um 11:16 Uhr
Moin,

ich drücke es mal so aus: Am liebsten würde ich alles in Batch erledigen. Bin aber Aufgrund von zu wenig Möglichkeiten in Batch dazu gezwungen VBS zu nutzen.

Hintergrund dazu ist: Das ich nicht 2 oder 3 Scripte will, sondern eines. Da die Verarbeitung (Umbenennen, Kopieren, etc) in Batch stattfindet, bau ich das VBS dann in die Batch ein. Bei Batch kenn ich zum größten Teil die Möglichkeiten die ich habe und den Umfang den ich damit Erreichen kann. Daher das ganze in eine Batch verpackt.

Gruß Zero
Bitte warten ..
Mitglied: rubberman
12.07.2012 um 23:46 Uhr
Hallo Zero.

Zitat von ColdZero89:
Hintergrund dazu ist: Das ich nicht 2 oder 3 Scripte will, sondern eines.
... und genau darauf wollte ich hinaus. Letztlich hast du mehrere Scripts (ob du sie nun aus dem Batch erst erstellst oder gleich parallel liegen hast ändert nichts an der Tatsache ). Umbenennen und Kopieren ist mit VBS genauso machbar. Aber gut ...

Grüße
rubberman
Bitte warten ..
Mitglied: ColdZero89
13.07.2012 um 11:10 Uhr
Moinsen,

ja am Ende habe ich mehrere Scripte, das stimmt wohl, die Vergammeln dann aber in %temp% und jucken mich somit nicht.

Da nicht nur ich mit der Datei dann Arbeite, aber ich alleine das Wissen habe (Mit und Ohne Hilfe) das Umzusetzen, möchte ich kein Risiko eingehen, dass das Ganze irgendwann sonstwo rumliegt und es nur Probleme gibt.

Ja kann ich mir denken, dass das in VBS möglich ist, dennoch kenne ich mich mit Batch bedeutend besser aus.

Ich will halt Fehler 30 so gut es geht NICHT haben, daher alles in EIN Script.

Grüßle Zero
Bitte warten ..
Mitglied: 76109
17.07.2012, aktualisiert um 11:02 Uhr
Hallo zusammen!

Nachdem ich nun das Ganze nochmal getestet habe, insbsondere mit mehreren Dateien (*.csv, *.txt, *.ods), musste ich leider feststellen, dass das OO-Fenster doch ziemlich nervt. Dank rubbermans hervorragender Vorarbeit, habe ich nun ein Skript gebastelt, mit dem der Vorgang völlig im Hintergrund stattfindet.

Ausserdem habe ich im Sinne der besseren Performance, dass Skript so gestaltet, dass beim Konvertieren mehrerer Dateien, der OpenOffice-Prozess nur einmal zu Begin geladen und erst am Ende terminiert wird.

Hier der Vollständigkeit halber, die neue Version:
01.
'Aufrufbeispiel über Batch mit den Dateitypen [*.csv, *.txt, *.ods]: 
02.
'@cscript //nologo "E:\Test\ConvertToXls.vbs" "E:\Test\*.csv" 
03.
 
04.
'Aufrufbeispiel direkt mit den Dateitypen [*.csv, *.txt, *.ods]: 
05.
'E:\Test\ConvertToXls.vbs "E:\Test\*.csv" 
06.
 
07.
 
08.
Option Explicit 
09.
 
10.
Const CsvChar = "ANSI"      'Zeichensatz 
11.
Const CsvText = """"        'Text-Trennzeichen = (") 
12.
Const CsvDelim = ";"        'Trennzeichen = (;) 
13.
Const CsvStart = 1          'Startzeile 
14.
     
15.
Const ErrMsg1 = "Falsche Anzahl an Argumenten!" 
16.
Const ErrMsg2 = "Falscher Dateityp [*.csv, *.txt, *.ods]" 
17.
Const ErrMsg3 = "Quell-Datei nicht gefunden!" 
18.
Const ErrMsg4 = "OpenOffice konnte nicht geladen werden!" 
19.
 
20.
'Konstanten zum ermitteln des Pfades der OpenOffice-Start-Exe 
21.
Const iHKCU = &H80000001 
22.
Const sRegKey = "Software\OpenOffice.Org\OpenOffice.Org\" 
23.
Const sRegValue = "Path" 
24.
     
25.
'Konstanten zum Laden des OpenOffice-Prozesses im Hintergrund 
26.
Const sWinMan = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" 
27.
Const sWinReg = "winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv" 
28.
Const sBinSql = "Select * from Win32_Process Where Name='soffice.bin' And ParentProcessID=" 
29.
Const SW_HIDE = 0 
30.
 
31.
 
32.
Dim oOODesktop, aOOArgs(2), oFso, oFile, oArgs, sBaseName, sExtName, sFolder, sSrcFile, sDstFile 
33.
 
34.
  
35.
'Main Beg 
36.
 
37.
    Set oArgs = WScript.Arguments 
38.
     
39.
    If oArgs.Count <> 1 Then 
40.
        WScript.Echo ErrMsg1:  WScript.Quit 1 
41.
    End If 
42.
         
43.
    sSrcFile = oArgs(0) 
44.
     
45.
    Set oFso = CreateObject("Scripting.FileSystemObject") 
46.
         
47.
    sExtName = LCase(oFso.GetExtensionName(sSrcFile)) 
48.
     
49.
    Select Case sExtName 
50.
        Case "csv", "txt", "ods" 
51.
        Case Else: WScript.Echo ErrMsg2:   WScript.Quit 1 
52.
    End Select 
53.
         
54.
    sBaseName = oFso.GetBaseName(sSrcFile) 
55.
    sFolder = oFso.GetParentFolderName(sSrcFile) 
56.
     
57.
    If sBaseName = "*" Then 
58.
        Call OpenOfficeStartup 
59.
        For Each oFile In oFso.GetFolder(sFolder).Files 
60.
            If LCase(oFso.GetExtensionName(oFile)) = sExtName Then 
61.
                sBaseName = oFso.GetBaseName(oFile) 
62.
                sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls") 
63.
                Call ConvertToXls(oFile.Path, sDstFile) 
64.
            End If 
65.
        Next 
66.
        Call OpenOfficeTerminate 
67.
    ElseIf Not oFso.FileExists(sSrcFile) Then 
68.
        WScript.Echo ErrMsg3:   WScript.Quit 1 
69.
    Else 
70.
        sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls") 
71.
        Call OpenOfficeStartup 
72.
        Call ConvertToXls(sSrcFile, sDstFile) 
73.
        Call OpenOfficeTerminate 
74.
    End If 
75.
 
76.
    Set oFso = Nothing 
77.
 
78.
    WScript.Echo "Fertig!":   WScript.Quit 0 
79.
 
80.
'Main End 
81.
 
82.
 
83.
Private Sub ConvertToXls(ByRef sCsvFile, sXlsFile) 
84.
    Dim iCsvDelim, iCsvText, iFilter 
85.
     
86.
    Select Case LCase(Right(sCsvFile, 3)) 
87.
        Case "csv", "txt" 
88.
            iFilter = True 
89.
        Case "ods" 
90.
            iFilter = False 
91.
        Case Else 
92.
            Exit Sub 
93.
    End Select 
94.
     
95.
    aOOArgs(0).Name = "Hidden" 
96.
    aOOArgs(0).Value = True 
97.
    aOOArgs(1).Name = "FilterName" 
98.
    aOOArgs(1).Value = "" 
99.
    aOOArgs(2).Name = "FilterOptions" 
100.
    aOOArgs(2).Value = "" 
101.
         
102.
    iCsvDelim = Asc(CsvDelim):  iCsvText = Asc(CsvText) 
103.
     
104.
    If iFilter Then     'Argumente nur für *.csv und *.txt 
105.
        aOOArgs(1).Value = "Text - txt - csv (StarCalc)" 
106.
        aOOArgs(2).Value = Join(Array(iCsvDelim, iCsvText, CsvChar, CsvStart), ",") 
107.
    End If 
108.
     
109.
    With oOODesktop.LoadComponentFromURL(GetURL(sCsvFile), "_blank", 0, aOOArgs) 
110.
        aOOArgs(1).Value = "MS Excel 97" 
111.
        aOOArgs(2).Value = "" 
112.
       .storeAsURL GetURL(sXlsFile), aOOArgs 
113.
       .Close False 
114.
    End With 
115.
End Sub 
116.
 
117.
Private Sub OpenOfficeStartup() 
118.
    Dim i 
119.
     
120.
    Call LoadOpenOfficeProcess 
121.
     
122.
    With CreateObject("com.sun.star.ServiceManager") 
123.
        For i = 0 To UBound(aOOArgs) 
124.
          Set aOOArgs(i) = .Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
125.
        Next 
126.
         
127.
        Set oOODesktop = .createInstance("com.sun.star.frame.Desktop") 
128.
    End With 
129.
End Sub 
130.
 
131.
Private Sub LoadOpenOfficeProcess() 
132.
    Dim oConfig, aRegValues, sExeFile, sExeFolder, iPID 
133.
     
134.
    'Den Pfad der OpenOffice-Soffice.Exe in der Registry ermitteln 
135.
    With GetObject(sWinReg) 
136.
       .EnumKey iHKCU, sRegKey, aRegValues 
137.
             
138.
        If IsArray(aRegValues) Then 
139.
            If IsNumeric(aRegValues(0)) Then 
140.
                .GetStringValue iHKCU, sRegKey & aRegValues(0), sRegValue, sExeFile 
141.
            End If 
142.
        End If 
143.
    End With 
144.
     
145.
    'OpenOffice-Programm-Verzeichnis ermitteln 
146.
    sExeFolder = oFso.GetParentFolderName(sExeFile) 
147.
     
148.
    If sExeFolder = "" Then WScript.Echo ErrMsg4:  WScript.Quit 1 
149.
 
150.
    'OpenOffice ohne GUI versteckt öffnen und warten bis der Prozess vollständig geladen ist 
151.
    With GetObject(sWinMan) 
152.
        Set oConfig = .Get("Win32_ProcessStartup").SpawnInstance_:  oConfig.ShowWindow = SW_HIDE 
153.
     
154.
        If .Get("Win32_Process").Create(sExeFile & " -invisible", sExeFolder, oConfig, iPID) Then  
155.
            WScript.Echo ErrMsg4:  WScript.Quit 1 
156.
        End if 
157.
     
158.
        Do Until .ExecQuery(sBinSql & iPID).Count:  Loop 
159.
    End With 
160.
End Sub 
161.
 
162.
Private Sub OpenOfficeTerminate() 
163.
    Dim i 
164.
     
165.
    oOODesktop.Terminate:   Set oOODesktop = Nothing 
166.
     
167.
    For i = 0 To UBound(aOOArgs) 
168.
        Set aOOArgs(i) = Nothing 
169.
    Next 
170.
End Sub 
171.
 
172.
Rem Absolute/Relative Pfade ins OO-URL-Format konvertieren 
173.
Private Function GetURL(ByRef sFilename) 
174.
    Dim sChars, sClient, i 
175.
     
176.
    If Left(sFilename, 2) = "\\" Then sClient = "File:" Else sClient = "File:///" 
177.
     
178.
    sChars = Array("\", "/", "%", "%25", " ", "%20") 
179.
     
180.
    GetURL = sClient & oFso.GetAbsolutePathName(sFilename) 
181.
     
182.
    For i = 0 To UBound(sChars) Step 2 
183.
        GetURL = Replace(GetURL, sChars(i), sChars(i + 1)) 
184.
    Next 
185.
End Function
Gruß Dieter
Bitte warten ..
Mitglied: rubberman
17.07.2012 um 21:01 Uhr
Hallo Dieter,

super! Da hast du noch einiges an Funktionalität und Feinarbeit hinein gesteckt.

Ein Problem habe ich noch immer und ich weiß nicht, ob das nur auf meiner Kiste so ist:
Ich hatte oben ein Sleep von 2 Sekunden eingebaut. Selbst wenn soffice.bin bereits detektiert wird, heißt das irgendwie nicht, dass nicht doch noch eine 2. Instanz erzeugt wird und der OO Desktop trotzdem sichtbar wird. Nach diesen 2 Sekunden passiert das nicht mehr. Hast du eine Erklärung? Ich denke, dass entweder der Prozess noch nicht vollständig geladen ist, oder es einfach eine gewisse Zeit braucht, bis der Prozess im gesamten OS bekannt ist. Ich habe diesen Effekt schon mehrfach in anderen Scripts beobachtet, aber nie eine Möglichkeit gefunden ausfindig zu machen, wann es gefahrlos weiter gehen kann. Diese 2 Sekunden sind nur ein Erfahrungswert.

Übrigens sind wir quitt. Nachdem mein Script bei dir nicht auf Anhieb gelaufen ist, gilt das nun umgekehrt auch (Stichwort HKCU/HKLM)

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
17.07.2012 um 22:30 Uhr
Hallo rubberman!

Übrigens sind wir quitt. Nachdem mein Script bei dir nicht auf Anhieb gelaufen ist,
gilt das nun umgekehrt auch (Stichwort HKCU/HKLM)
Freut mich zu hören

Also, ich habe jetzt mal folgendes getestet (im XP-Mode):
Erst den OO-Desktop geöffnet und dann das Script gestartet (30 Dateien), mit dem Ergebnis:
Es wird keine weitere Instanz von OO geladen und der zuvor manuell geöffnete Desktop wird terminiert (Calc nicht sichtbar).

Erst Script gestartet und dann versucht den Desktop zu öffnen, mit dem Ergebnis:
Es läßt sich in der Zeit, in der das Script läuft, keine weitere Instanz des Desktops zusätzlich öffnen.

Und das Ganze mit 2 Sekunden Pause, genau der gleiche Effekt

Falls Calc bereits zuvor geöffnet ist, dann ebenfalls der gleiche Ablauf, wobei im Falle von Änderungen in der Calc-Datei eine entsprechende Meldung (speichern, verwerfen, abbrechen) angezeigt wird. Ansonsten, wird der zuvor gestartete Calc-Prozess ebenfalls gleich mit terminiert.

Am besten wird sein, vor dem Start des Scripts zu prüfen ob OO gerade aktiv ist und wenn ja, dann das Script mit einer entsprechenden Meldung abbrechen.


Gruß Dieter
Bitte warten ..
Mitglied: rubberman
18.07.2012, aktualisiert um 18:05 Uhr
Hallo Dieter!

Sorry, wenn ich mich nicht richtig ausgedrückt habe. Natürlich gibt es immer nur eine Instanz. Auf dieser Basis arbeiten wir ja wenn wir OOo im Vorfeld versteckt öffnen.
Ich weiß nicht wie ich es besser erklären kann, als wenn CreateObject("com.sun.star.ServiceManager") schneller ankommt, als die zuvor erzeugte Instanz bekannt ist, dann kommt das GUI trotzdem.

Wie auch immer, ich war in der Lage dieses Problem zu umschiffen. Es scheint, als würde das entsprechende InstanceCreationEvent genau um die richtige Zeitspanne später kommen. Siehe Zeilen 33, 155, 161 - 166.
Ich habe mal versucht dein Script entsprechend zu adaptieren.
01.
'Aufrufbeispiel über Batch mit den Dateitypen [*.csv, *.txt, *.ods]: 
02.
'@cscript //nologo "E:\Test\ConvertToXls.vbs" "E:\Test\*.csv" 
03.
 
04.
'Aufrufbeispiel direkt mit den Dateitypen [*.csv, *.txt, *.ods]: 
05.
'E:\Test\ConvertToXls.vbs "E:\Test\*.csv" 
06.
 
07.
 
08.
Option Explicit 
09.
 
10.
Const CsvChar = "ANSI"      'Zeichensatz 
11.
Const CsvText = """"        'Text-Trennzeichen = (") 
12.
Const CsvDelim = ";"        'Trennzeichen = (;) 
13.
Const CsvStart = 1          'Startzeile 
14.
 
15.
Const ErrMsg0 = "Abbruch: Die OpenOffice-Anwendung bitte vorher Schließen!" 
16.
Const ErrMsg1 = "Falsche Anzahl an Argumenten!" 
17.
Const ErrMsg2 = "Falscher Dateityp [*.csv, *.txt, *.ods]" 
18.
Const ErrMsg3 = "Quell-Datei nicht gefunden!" 
19.
Const ErrMsg4 = "OpenOffice konnte nicht geladen werden!" 
20.
 
21.
'Konstante zum Check, ob OpenOffice bereits läuft 
22.
Const sBinSql = "Select * from Win32_Process Where Name='soffice.bin'" 
23.
 
24.
'Konstanten zum ermitteln des Pfades der OpenOffice-Start-Exe 
25.
Const iHKCU = &H80000001 
26.
Const iHKLM = &H80000002 
27.
Const sRegKey = "Software\OpenOffice.Org\OpenOffice.Org\" 
28.
Const sRegValue = "Path" 
29.
 
30.
'Konstanten zum Laden des OpenOffice-Prozesses im Hintergrund 
31.
Const sWinMan = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" 
32.
Const sWinReg = "winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv" 
33.
Const sEvtSql = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'" 
34.
Const SW_HIDE = 0 
35.
 
36.
 
37.
Dim oOODesktop, aOOArgs(2), oFso, oFile, oArgs, sBaseName, sExtName, sFolder, sSrcFile, sDstFile 
38.
 
39.
 
40.
'Main Beg 
41.
 
42.
    If GetObject(sWinMan).ExecQuery(sBinSql).Count Then 
43.
        WScript.Echo ErrMsg0:  WScript.Quit 1 
44.
    End If 
45.
 
46.
    Set oArgs = WScript.Arguments 
47.
 
48.
    If oArgs.Count <> 1 Then 
49.
        WScript.Echo ErrMsg1:  WScript.Quit 1 
50.
    End If 
51.
 
52.
    sSrcFile = oArgs(0) 
53.
 
54.
    Set oFso = CreateObject("Scripting.FileSystemObject") 
55.
 
56.
    sExtName = LCase(oFso.GetExtensionName(sSrcFile)) 
57.
 
58.
    Select Case sExtName 
59.
        Case "csv", "txt", "ods" 
60.
        Case Else: WScript.Echo ErrMsg2:   WScript.Quit 1 
61.
    End Select 
62.
 
63.
    sBaseName = oFso.GetBaseName(sSrcFile) 
64.
    sFolder = oFso.GetParentFolderName(sSrcFile) 
65.
 
66.
    If sBaseName = "*" Then 
67.
        Call OpenOfficeStartup 
68.
        For Each oFile In oFso.GetFolder(sFolder).Files 
69.
            If LCase(oFso.GetExtensionName(oFile)) = sExtName Then 
70.
                sBaseName = oFso.GetBaseName(oFile) 
71.
                sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls") 
72.
                Call ConvertToXls(oFile.Path, sDstFile) 
73.
            End If 
74.
        Next 
75.
        Call OpenOfficeTerminate 
76.
    ElseIf Not oFso.FileExists(sSrcFile) Then 
77.
        WScript.Echo ErrMsg3:   WScript.Quit 1 
78.
    Else 
79.
        sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls") 
80.
        Call OpenOfficeStartup 
81.
        Call ConvertToXls(sSrcFile, sDstFile) 
82.
        Call OpenOfficeTerminate 
83.
    End If 
84.
 
85.
    Set oFso = Nothing 
86.
 
87.
    WScript.Echo "Fertig!":   WScript.Quit 0 
88.
 
89.
'Main End 
90.
 
91.
 
92.
Private Sub ConvertToXls(ByRef sCsvFile, sXlsFile) 
93.
    Dim iCsvDelim, iCsvText, iFilter 
94.
 
95.
    Select Case LCase(Right(sCsvFile, 3)) 
96.
        Case "csv", "txt" 
97.
            iFilter = True 
98.
        Case "ods" 
99.
            iFilter = False 
100.
        Case Else 
101.
            Exit Sub 
102.
    End Select 
103.
 
104.
    aOOArgs(0).Name = "Hidden" 
105.
    aOOArgs(0).Value = True 
106.
    aOOArgs(1).Name = "FilterName" 
107.
    aOOArgs(1).Value = "" 
108.
    aOOArgs(2).Name = "FilterOptions" 
109.
    aOOArgs(2).Value = "" 
110.
 
111.
    iCsvDelim = Asc(CsvDelim):  iCsvText = Asc(CsvText) 
112.
 
113.
    If iFilter Then     'Argumente nur für *.csv und *.txt 
114.
        aOOArgs(1).Value = "Text - txt - csv (StarCalc)" 
115.
        aOOArgs(2).Value = Join(Array(iCsvDelim, iCsvText, CsvChar, CsvStart), ",") 
116.
    End If 
117.
 
118.
    With oOODesktop.LoadComponentFromURL(GetURL(sCsvFile), "_blank", 0, aOOArgs) 
119.
        aOOArgs(1).Value = "MS Excel 97" 
120.
        aOOArgs(2).Value = "" 
121.
       .storeAsURL GetURL(sXlsFile), aOOArgs 
122.
       .Close False 
123.
    End With 
124.
End Sub 
125.
 
126.
Private Sub OpenOfficeStartup() 
127.
    Dim i 
128.
 
129.
    Call LoadOpenOfficeProcess 
130.
 
131.
    With CreateObject("com.sun.star.ServiceManager") 
132.
        For i = 0 To UBound(aOOArgs) 
133.
          Set aOOArgs(i) = .Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
134.
        Next 
135.
 
136.
        Set oOODesktop = .createInstance("com.sun.star.frame.Desktop") 
137.
    End With 
138.
End Sub 
139.
 
140.
Private Sub LoadOpenOfficeProcess() 
141.
    Dim oConfig, oEventSrc, oEvent, sExeFile, sExeFolder, iPID 
142.
 
143.
    'Den Pfad der OpenOffice-Soffice.Exe in der Registry ermitteln 
144.
    sExeFile = GetSofficeExePath(iHKCU) 
145.
    If IsEmpty(sExeFile) Then sExeFile = GetSofficeExePath(iHKLM) 
146.
 
147.
    'OpenOffice-Programm-Verzeichnis ermitteln 
148.
    sExeFolder = oFso.GetParentFolderName(sExeFile) 
149.
 
150.
    If sExeFolder = "" Then WScript.Echo ErrMsg4:  WScript.Quit 1 
151.
 
152.
    'OpenOffice ohne GUI versteckt öffnen und warten bis der Prozess vollständig geladen ist 
153.
    With GetObject(sWinMan) 
154.
        Set oConfig = .Get("Win32_ProcessStartup").SpawnInstance_:  oConfig.ShowWindow = SW_HIDE 
155.
        Set oEventSrc = .ExecNotificationQuery(sEvtSql) 
156.
 
157.
        If .Get("Win32_Process").Create(sExeFile & " -invisible", sExeFolder, oConfig, iPID) Then 
158.
            WScript.Echo ErrMsg4:  WScript.Quit 1 
159.
        End if 
160.
 
161.
        Do 
162.
            Set oEvent = oEventSrc.NextEvent() 
163.
            If oEvent.TargetInstance.Name = "soffice.bin" And oEvent.TargetInstance.ParentProcessID = iPID Then 
164.
                Exit Do 
165.
            End If 
166.
        Loop 
167.
    End With 
168.
End Sub 
169.
 
170.
Private Sub OpenOfficeTerminate() 
171.
    Dim i 
172.
 
173.
    oOODesktop.Terminate:   Set oOODesktop = Nothing 
174.
 
175.
    For i = 0 To UBound(aOOArgs) 
176.
        Set aOOArgs(i) = Nothing 
177.
    Next 
178.
End Sub 
179.
 
180.
Rem Absolute/Relative Pfade ins OO-URL-Format konvertieren 
181.
Private Function GetURL(ByRef sFilename) 
182.
    Dim sChars, sClient, i 
183.
 
184.
    If Left(sFilename, 2) = "\\" Then sClient = "File:" Else sClient = "File:///" 
185.
 
186.
    sChars = Array("\", "/", "%", "%25", " ", "%20") 
187.
 
188.
    GetURL = sClient & oFso.GetAbsolutePathName(sFilename) 
189.
 
190.
    For i = 0 To UBound(sChars) Step 2 
191.
        GetURL = Replace(GetURL, sChars(i), sChars(i + 1)) 
192.
    Next 
193.
End Function 
194.
 
195.
Private Function GetSofficeExePath(iHKey) 
196.
    Dim aRegValues, sExePath 
197.
 
198.
    With GetObject(sWinReg) 
199.
       .EnumKey iHKey, sRegKey, aRegValues 
200.
 
201.
        If IsArray(aRegValues) Then 
202.
            If IsNumeric(aRegValues(0)) Then 
203.
                .GetStringValue iHKey, sRegKey & aRegValues(0), sRegValue, sExePath 
204.
            End If 
205.
        End If 
206.
    End With 
207.
 
208.
    GetSofficeExePath = sExePath 
209.
End Function
[EDIT]Dieters Test auf bereits laufenden OOo Prozess eingefügt.[/EDIT]

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
18.07.2012, aktualisiert um 09:14 Uhr
Hallo rubberman!

Ich weiß nicht wie ich es besser erklären kann, als wenn CreateObject("com.sun.star.ServiceManager") schneller ankommt, als die zuvor erzeugte Instanz bekannt ist, dann kommt das GUI trotzdem.
Jetzt hab ich's verstanden! Bei mir ist dieser Effekt allerdings nicht aufgetreten

Und danke, dass Du mein Skript entsprechend angepasst (adaptiert) hast

Gruß Dieter
Bitte warten ..
Mitglied: 76109
18.07.2012, aktualisiert um 12:36 Uhr
Hallo rubberman!

Bei der neuen Methode gibt es leider ein kleines Problem

Wenn die OpenOffice-Anwendung bereits geöffnet ist, dann bleibt das Skript hängen.

Abhilfe schafft eine entsprechende Abfrage am Skriptanfang:

Diese Konstanten noch hinzufügen:
01.
Const ErrMsg0 = "Abbruch: Die OpenOffice-Anwendung bitte vorher Schließen!" 
02.
Const sBinSql = "Select * from Win32_Process Where Name='soffice.bin'"
Und diese Codezeilen am Anfang einfügen:
01.
If GetObject(sWinMan).ExecQuery(sBinSql).Count Then 
02.
    WScript.Echo ErrMsg0:  WScript.Quit 1 
03.
End If
Das wäre so oder so sinnvoll und der Einfachheit halber schlage ich vor, dass Du dein Skript entsprechend editierst


Gruß Dieter
Bitte warten ..
Mitglied: rubberman
18.07.2012 um 17:59 Uhr
Hallo Dieter!

Ja, das war mir ungetestet schon ziemlich klar. Natürlich hast du recht, dass man solche Komplettlösungen dann auch möglichst foolproof machen sollte. Ich baue die Abfrage oben ein. Danke für die Zuarbeit!

(BTW: Irgendwo unterwegs haben wir ColdZero89 wohl verloren. )

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
18.07.2012 um 18:14 Uhr
Hallo rubberman!

(BTW: Irgendwo unterwegs haben wir ColdZero89 wohl verloren. )
Das hat mich auch schon gewundert, dass von ihm noch keine Rückmeldung gekommen ist?

Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 10:46 Uhr
Moin,

ihr habt mich nicht verloren, ne Grippe hat mich flach gelegt trifft es besser.

Ich lese hier nur und denke WTF welches Script ist denn nun für mich das richtige?

Ich bin verwirrt und nicht ganz aufm Damm - erklären wohl die Schmerzmittel - daher schaltet mein Hirn auch net so schnell mit

Dennoch frage ich mich: Welches Script ist denn nun für mich das richtige? Ich meine das fing mal Kurz an und endete Lang x)

Gruß Zero
Bitte warten ..
Mitglied: 76109
19.07.2012, aktualisiert um 11:02 Uhr
Hallo ColdZero89!

ihr habt mich nicht verloren, ne Grippe hat mich flach gelegt trifft es besser.
Na, dann gute Besserung

Dennoch frage ich mich: Welches Script ist denn nun für mich das richtige? Ich meine das fing mal Kurz an und endete Lang x)
Nun, dass Skript das ich Dir zum Testen angeboten hatte, war schonmal eine Erstlösung und die andere Variante war, wie Du sicherlich selbst erkennen konntest, noch nicht ganz ausgereift und getestet

Demzufolge würde ich an Deiner Stelle jetzt das letzte Skript von ruberman verwenden. Das nun ein richtig professionelles und sehr gutes Skript ist

Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
19.07.2012, aktualisiert um 11:24 Uhr
Moin,

Danke.

Eigentlich wollte ich nur CSV zu XLS, dass das so kompliziert wird, konnte ich ja nicht ahnen

Ich teste grad mal. Geb gleich Rückmeldung.

Gruß Zero
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 11:28 Uhr
Moinsen,

er gibt mir Meldung: Abbruch: Die OpenOffice-Anwendung bitte vorher Schließen!

Ich hab kein OO offen im TM läuft kein Prozess von OO.

*Kopfkratz* was läuft da krum?

Btw: Sehe ich das richtig, dass das VBS die CSV Datei selbstständig ermittelt - bzw die nimmt die im selben Ordner ist?

Dazu, es ist ein XP System - ich denke Zwar nicht, dass das nen unterschied im Script macht, aber ich glaube ich habe DIE Information nicht erwähnt.

Gruß Zero
Bitte warten ..
Mitglied: 76109
19.07.2012 um 11:56 Uhr
Hallo ColdZero89!

Bist Du sicher, dass im TM die soffice.exe und soffice.bin nicht als Prozess läuft? Ansonsten kann ich das absolut nicht nachvollziehen.

Ist in der Taskleiste das OO-Symbol sichtbar?

Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 12:01 Uhr
Moin,

räusper.... soffice heißt der Prozess?! Die ganze Anwendnug heißt OPENOFFICE - dann sollte der Prozess ooffice oder so heißen und Dieter? Nun lächel nicht :-P

Nagut danke Problem 1 behoben, das kommt davon wenn man nicht mit OO mal arbeitet.....

Problem 2: Falsche Anzahl an Argumenten!

Grummel... würd ich da mehr durchsteigen würd ich kapieren was er mir sagen will. Aber so? Hilfeee

Als Info: VBS liegt im Ordner mit einer Bat und einer CSV Datei. Eventuell ist dies ja entscheidend.

Danke schonmal.

Gruß Zero
Bitte warten ..
Mitglied: 76109
19.07.2012, aktualisiert um 12:20 Uhr
Hallo ColdZero89!

Über Batch mit einem Argument aufrufen so:
@cscript //nologo "C:\Pfad\ConvertToXls.vbs" "C:\Pfad\*.csv"

oder von der Commandozeile dann so:
C:\Pfad\ConvertToXls.vbs "C:\Pfad\*.csv"


Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 13:16 Uhr
Moin,

ah ok... heißt das Script ist darauf ausgelegt die genaue Dateiangabe zu bekommen.

Ok. Wird gleich getestet.

Danke Dieter und rubberman!

Geb gleich Meldung.

Gruß Zero
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 13:30 Uhr
Moinsen

zu erst dachte ich grad: grml wieso schließt der die soffice.bin nicht schließt - tut er doch, keine Ahnung wieso die gerade bei mir offen geblieben ist, beim 2ten und 3ten Versuch gehte alles blitze Blank

Ich danke euch beiden Vielmals!

Nun nur noch das Makro anpassen das es keine XLSX will sondern eine XLS sich zum futtern vornimmt und meine Welt ist friedlich und gelassen

Ich makiere den Beitrag als gelöst, ihr könnt ja weiterhin eure Spielerrein über dieses Script ziehen lassen

Gruß Zero
Bitte warten ..
Mitglied: 76109
19.07.2012 um 13:34 Uhr
Hallo ColdZero89!

ah ok... heißt das Script ist darauf ausgelegt die genaue Dateiangabe zu bekommen.
Jain

Du kannst sowohl einen Dateinamen 'C:\pfad\xy.csv', als auch alle Csv's in einem ordner mit 'C:\pfad\*.csv' als Argument übergeben.

Ich makiere den Beitrag als gelöst, ihr könnt ja weiterhin eure Spielerrein über dieses Script ziehen lassen
Wir haben soweit ausgespielt


Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
19.07.2012, aktualisiert um 14:08 Uhr
Moin,

gut ich nicht.... *heul* ich sing gleich das Airameva rückwärts....

Nun wollte ich das ganze schön säuberlich in mein Batch einbasteln... FEHLANZEIGE... Problem: Ich bau selbst eine Pause ein, der springt mir VOR der Pause aber schon aus dem Script und zwar komplett.... habe die Pause stück für Stück nach vorne gesetzt... bringt nichts...

Ich tacker mein Script hier gleich mal fein Säuberlich ein - habe nichts anderes gemacht als sonst vorher überall auch...... wo is mein Fehler?

01.
@echo off & setlocal 
02.
 
03.
rem Changelog 
04.
rem 1.0 Batch/VB-Skript zur Versendung von exportierte Anlagendaten per E-Mail mithilfe eines Auswahlmenüs 
05.
rem 2.0 Umwandlung der exportierten CSV Datei in XLS (Script von rubberman und didi1954) 
06.
rem V2.0 Kevin Lange 19.07.2012 
07.
 
08.
rem ==================================================================== 
09.
rem Deklarierung 
10.
rem ==================================================================== 
11.
	set "Ein=C:\Datenversand\InverterOverview.csv" 
12.
	set "Aus=C:\Datenversand\Thuengen Daten.csv" 
13.
	set "Send=C:\Datenversand\Thuengen Daten.xls" 
14.
	set "Mail=E-Mail@E-Mail" 
15.
 
16.
rem ==================================================================== 
17.
rem E-Mail Adresse auswählen 
18.
rem ==================================================================== 
19.
	echo [1] Mailziel1 
20.
 
21.
 
22.
	set /p Mailnr=Bitte Nummer vom Empaenger eingeben:  
23.
 
24.
	GOTO CASE_%Mailnr% 
25.
		:CASE_1 
26.
			set "Mail=MAILZIEL1@mailempfang.de" 
27.
				GOTO END_SWITCH 
28.
 
29.
		HIER SIND MEHRERE MAILADRESSEN VORHANDEN 
30.
 
31.
		:END_SWITCH 
32.
 
33.
rem ==================================================================== 
34.
rem Datei umbenennen 
35.
rem ==================================================================== 
36.
	move "%Ein%" "%Aus%" 
37.
 
38.
rem ==================================================================== 
39.
rem Erstellung des VBS zum Umwandeln 
40.
rem ==================================================================== 
41.
 
42.
rem Aufrufbeispiel über Batch mit den Dateitypen [*.csv, *.txt, *.ods]: 
43.
rem @cscript //nologo "E:\Test\ConvertToXls.vbs" "E:\Test\*.csv"  
44.
 
45.
rem Aufrufbeispiel direkt mit den Dateitypen [*.csv, *.txt, *.ods]: 
46.
rem E:\Test\ConvertToXls.vbs "E:\Test\*.csv" 
47.
 
48.
	Set "U=%temp%\CSVtoXLS.vbs" 
49.
 
50.
	>"%U%" echo Option Explicit 
51.
 
52.
	>>"%U%" echo Const CsvChar = "ANSI"      'Zeichensatz 
53.
	>>"%U%" echo Const CsvText = """"        'Text-Trennzeichen = (") 
54.
	>>"%U%" echo Const CsvDelim = ";"        'Trennzeichen = (;) 
55.
	>>"%U%" echo Const CsvStart = 1          'Startzeile 
56.
	>>"%U%" echo Const ErrMsg0 = "Abbruch: Die OpenOffice-Anwendung bitte vorher Schließen!" 
57.
	>>"%U%" echo Const ErrMsg1 = "Falsche Anzahl an Argumenten!" 
58.
	>>"%U%" echo Const ErrMsg2 = "Falscher Dateityp [*.csv, *.txt, *.ods]" 
59.
	>>"%U%" echo Const ErrMsg3 = "Quell-Datei nicht gefunden!" 
60.
	>>"%U%" echo Const ErrMsg4 = "OpenOffice konnte nicht geladen werden!" 
61.
	 
62.
	rem Konstante zum Check, ob OpenOffice bereits läuft 
63.
	>>"%U%" echo Const sBinSql = "Select * from Win32_Process Where Name='soffice.bin'" 
64.
	rem Konstanten zum ermitteln des Pfades der OpenOffice-Start-Exe 
65.
	>>"%U%" echo Const iHKCU = &H80000001 
66.
	>>"%U%" echo Const iHKLM = &H80000002 
67.
	>>"%U%" echo Const sRegKey = "Software\OpenOffice.Org\OpenOffice.Org\" 
68.
	>>"%U%" echo Const sRegValue = "Path" 
69.
	rem Konstanten zum Laden des OpenOffice-Prozesses im Hintergrund 
70.
	>>"%U%" echo Const sWinMan = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" 
71.
	>>"%U%" echo Const sWinReg = "winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv" 
72.
	>>"%U%" echo Const sEvtSql = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'" 
73.
	>>"%U%" echo Const SW_HIDE = 0 
74.
	>>"%U%" echo Dim oOODesktop, aOOArgs(2), oFso, oFile, oArgs, sBaseName, sExtName, sFolder, sSrcFile, sDstFile			 
75.
 
76.
	rem Main Beg 
77.
	>>"%U%" echo If GetObject(sWinMan).ExecQuery(sBinSql).Count Then 
78.
	>>"%U%" echo WScript.Echo ErrMsg0:  WScript.Quit 1 
79.
	>>"%U%" echo End If 
80.
	>>"%U%" echo Set oArgs = WScript.Arguments  
81.
	>>"%U%" echo If oArgs.Count <> 1 Then 
82.
	>>"%U%" echo WScript.Echo ErrMsg1:  WScript.Quit 1 
83.
	>>"%U%" echo End If 
84.
	>>"%U%" echo sSrcFile = oArgs(0)	 
85.
	>>"%U%" echo Set oFso = CreateObject("Scripting.FileSystemObject") 
86.
	>>"%U%" echo sExtName = LCase(oFso.GetExtensionName(sSrcFile)) 
87.
	>>"%U%" echo Select Case sExtName 
88.
	>>"%U%" echo Case "csv", "txt", "ods" 
89.
	>>"%U%" echo Case Else: WScript.Echo ErrMsg2:   WScript.Quit 1 
90.
         >>"%U%" echo End Select 
91.
	>>"%U%" echo sBaseName = oFso.GetBaseName(sSrcFile) 
92.
	>>"%U%" echo sFolder = oFso.GetParentFolderName(sSrcFile) 
93.
	>>"%U%" echo If sBaseName = "*" Then 
94.
	>>"%U%" echo Call OpenOfficeStartup 
95.
	>>"%U%" echo For Each oFile In oFso.GetFolder(sFolder).Files 
96.
	>>"%U%" echo If LCase(oFso.GetExtensionName(oFile)) = sExtName Then 
97.
	>>"%U%" echo sBaseName = oFso.GetBaseName(oFile) 
98.
	>>"%U%" echo sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls") 
99.
	>>"%U%" echo Call ConvertToXls(oFile.Path, sDstFile) 
100.
	>>"%U%" echo End If 
101.
	>>"%U%" echo Next 
102.
	>>"%U%" echo Call OpenOfficeTerminate 
103.
	>>"%U%" echo ElseIf Not oFso.FileExists(sSrcFile) Then 
104.
	>>"%U%" echo WScript.Echo ErrMsg3:   WScript.Quit 1 
105.
	>>"%U%" echo Else 
106.
	>>"%U%" echo sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls") 
107.
	>>"%U%" echo Call OpenOfficeStartup 
108.
	>>"%U%" echo Call ConvertToXls(sSrcFile, sDstFile) 
109.
	>>"%U%" echo Call OpenOfficeTerminate 
110.
	>>"%U%" echo End If 
111.
	>>"%U%" echo Set oFso = Nothing 
112.
	>>"%U%" echo WScript.Echo "Fertig!":   WScript.Quit 0 
113.
	rem Main End 
114.
 
115.
	>>"%U%" echo Private Sub ConvertToXls(ByRef sCsvFile, sXlsFile) 
116.
	>>"%U%" echo Dim iCsvDelim, iCsvText, iFilter  
117.
	>>"%U%" echo Select Case LCase(Right(sCsvFile, 3)) 
118.
	>>"%U%" echo Case "csv", "txt" 
119.
	>>"%U%" echo iFilter = True 
120.
	>>"%U%" echo Case "ods" 
121.
	>>"%U%" echo iFilter = False	 
122.
	>>"%U%" echo Case Else 
123.
	>>"%U%" echo Exit Sub 
124.
	>>"%U%" echo End Select 
125.
	>>"%U%" echo aOOArgs(0).Name = "Hidden" 
126.
	>>"%U%" echo aOOArgs(0).Value = True 
127.
	>>"%U%" echo aOOArgs(1).Name = "FilterName" 
128.
	>>"%U%" echo aOOArgs(1).Value = "" 
129.
	>>"%U%" echo aOOArgs(2).Name = "FilterOptions" 
130.
	>>"%U%" echo aOOArgs(2).Value = ""  
131.
	>>"%U%" echo iCsvDelim = Asc(CsvDelim):  iCsvText = Asc(CsvText) 
132.
	>>"%U%" echo If iFilter Then     'Argumente nur für *.csv und *.txt 
133.
	>>"%U%" echo aOOArgs(1).Value = "Text - txt - csv (StarCalc)" 
134.
	>>"%U%" echo aOOArgs(2).Value = Join(Array(iCsvDelim, iCsvText, CsvChar, CsvStart), ",") 
135.
	>>"%U%" echo End If 
136.
	>>"%U%" echo With oOODesktop.LoadComponentFromURL(GetURL(sCsvFile), "_blank", 0, aOOArgs) 
137.
	>>"%U%" echo aOOArgs(1).Value = "MS Excel 97" 
138.
	>>"%U%" echo aOOArgs(2).Value = "" 
139.
	>>"%U%" echo .storeAsURL GetURL(sXlsFile), aOOArgs 
140.
	>>"%U%" echo .Close False 
141.
	>>"%U%" echo End With 
142.
	>>"%U%" echo End Sub 
143.
 
144.
	>>"%U%" echo Private Sub OpenOfficeStartup() 
145.
	>>"%U%" echo Dim i 
146.
	>>"%U%" echo Call LoadOpenOfficeProcess 
147.
	>>"%U%" echo With CreateObject("com.sun.star.ServiceManager") 
148.
	>>"%U%" echo For i = 0 To UBound(aOOArgs) 
149.
	>>"%U%" echo Set aOOArgs(i) = .Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
150.
	>>"%U%" echo Next 
151.
	>>"%U%" echo Set oOODesktop = .createInstance("com.sun.star.frame.Desktop") 
152.
	>>"%U%" echo End With 
153.
	>>"%U%" echo End Sub 
154.
 
155.
	>>"%U%" echo Private Sub LoadOpenOfficeProcess() 
156.
	>>"%U%" echo Dim oConfig, oEventSrc, oEvent, sExeFile, sExeFolder, iPID 
157.
	rem Den Pfad der OpenOffice-Soffice.Exe in der Registry ermitteln 
158.
	>>"%U%" echo sExeFile = GetSofficeExePath(iHKCU) 
159.
	>>"%U%" echo If IsEmpty(sExeFile) Then sExeFile = GetSofficeExePath(iHKLM) 
160.
	rem OpenOffice-Programm-Verzeichnis ermitteln 
161.
	>>"%U%" echo sExeFolder = oFso.GetParentFolderName(sExeFile) 
162.
	>>"%U%" echo If sExeFolder = "" Then WScript.Echo ErrMsg4:  WScript.Quit 1 
163.
	rem OpenOffice ohne GUI versteckt öffnen und warten bis der Prozess vollständig geladen ist 
164.
	>>"%U%" echo With GetObject(sWinMan) 
165.
	>>"%U%" echo Set oConfig = .Get("Win32_ProcessStartup").SpawnInstance_:  oConfig.ShowWindow = SW_HIDE 
166.
	>>"%U%" echo Set oEventSrc = .ExecNotificationQuery(sEvtSql) 
167.
	>>"%U%" echo If .Get("Win32_Process").Create(sExeFile & " -invisible", sExeFolder, oConfig, iPID) Then 
168.
	>>"%U%" echo WScript.Echo ErrMsg4:  WScript.Quit 1 
169.
	>>"%U%" echo End if 
170.
	>>"%U%" echo Do 
171.
	>>"%U%" echo Set oEvent = oEventSrc.NextEvent() 
172.
	>>"%U%" echo If oEvent.TargetInstance.Name = "soffice.bin" And oEvent.TargetInstance.ParentProcessID = iPID Then 
173.
	>>"%U%" echo Exit Do 
174.
	>>"%U%" echo End If 
175.
	>>"%U%" echo Loop 
176.
	>>"%U%" echo End With 
177.
	>>"%U%" echo End Sub 
178.
 
179.
	>>"%U%" echo Private Sub OpenOfficeTerminate() 
180.
	>>"%U%" echo Dim i 
181.
	>>"%U%" echo oOODesktop.Terminate:   Set oOODesktop = Nothing 
182.
	>>"%U%" echo For i = 0 To UBound(aOOArgs) 
183.
	>>"%U%" echo Set aOOArgs(i) = Nothing 
184.
	>>"%U%" echo Next 
185.
	>>"%U%" echo End Sub 
186.
 
187.
Rem Absolute/Relative Pfade ins OO-URL-Format konvertieren 
188.
 
189.
	>>"%U%" echo Private Function GetURL(ByRef sFilename) 
190.
	>>"%U%" echo Dim sChars, sClient, i 
191.
	>>"%U%" echo If Left(sFilename, 2) = "\\" Then sClient = "File:" Else sClient = "File:///" 
192.
	>>"%U%" echo sChars = Array("\", "/", "%", "%25", " ", "%20") 
193.
	>>"%U%" echo GetURL = sClient & oFso.GetAbsolutePathName(sFilename) 
194.
	>>"%U%" echo For i = 0 To UBound(sChars) Step 2 
195.
	>>"%U%" echo GetURL = Replace(GetURL, sChars(i), sChars(i + 1)) 
196.
	>>"%U%" echo Next 
197.
	>>"%U%" echo End Function 
198.
 
199.
	>>"%U%" echo Private Function GetSofficeExePath(iHKey) 
200.
	>>"%U%" echo Dim aRegValues, sExePath 
201.
	>>"%U%" echo With GetObject(sWinReg) 
202.
	>>"%U%" echo .EnumKey iHKey, sRegKey, aRegValues 
203.
	>>"%U%" echo If IsArray(aRegValues) Then 
204.
	>>"%U%" echo If IsNumeric(aRegValues(0)) Then 
205.
	>>"%U%" echo .GetStringValue iHKey, sRegKey & aRegValues(0), sRegValue, sExePath 
206.
	>>"%U%" echo End If 
207.
	>>"%U%" echo End If 
208.
	>>"%U%" echo End With 
209.
	>>"%U%" echo GetSofficeExePath = sExePath 
210.
	>>"%U%" echo End Function 
211.
		 
212.
rem ==================================================================== 
213.
rem CSV to XLS 
214.
rem ==================================================================== 
215.
	echo ____________________________________	 
216.
	echo CSV-Datei wird in XLS umgewandelt. Bitte Warten... 
217.
	cscript //nologo "%U%" "%Send%" 
218.
 
219.
rem ==================================================================== 
220.
rem Erstellung des VBS zum Mailversand 
221.
rem ==================================================================== 
222.
	Set "M=%temp%\Mailversand.vbs" 
223.
	>"%M%" echo Dim objMail,objConfig,objFields 
224.
	>>"%M%" echo Set objMail = CreateObject("CDO.Message") 
225.
	>>"%M%" echo Set objConfig = CreateObject("CDO.configuration") 
226.
	>>"%M%" echo Set objFields = objConfig.Fields 
227.
	>>"%M%" echo With objFields 
228.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/SendUsing")= 2 
229.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")= "mail.gmx.net" 
230.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")= 1 
231.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/SMTPServerPort")= 25 
232.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "MAIL" 
233.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "PW" 
234.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true 
235.
	>>"%M%" echo   .Update 
236.
	>>"%M%" echo End With 
237.
	>>"%M%" echo With objMail 
238.
	>>"%M%" echo   Set .Configuration = objConfig 
239.
	>>"%M%" echo   .To = "%Mail%" 
240.
	>>"%M%" echo   .From = "MAIL" 
241.
	>>"%M%" echo   .Subject = "Thuengen Daten" 
242.
	>>"%M%" echo   .TextBody = "Thuengen Daten" 
243.
	>>"%M%" echo   .AddAttachment "%Send%" 
244.
	>>"%M%" echo   .Send 
245.
	>>"%M%" echo End With 
246.
	 
247.
	echo ____________________________________ 
248.
	echo Ich versende nun die Dateien an %Mail%. Bitte Warten... 
249.
	cscript //nologo "%M%" 
250.
 
251.
	pause 
252.
	 
253.
rem ==================================================================== 
254.
rem Versendete Anhänge löschen 
255.
rem ==================================================================== 
256.
	del /Q "C:\Datenversand\Th*"
Gruß Zero
Bitte warten ..
Mitglied: 76109
19.07.2012, aktualisiert um 15:27 Uhr
Hallo


Ich frage mich schon, warum Du das Skript über Batch erzeugst?

Destotrotz ist es kein Wunder, weil Du in dem dem Fall alle Batch-Steuerzeichen (&>|()...) entsprechend maskieren musst, damit Batch weiß, dass es diese Zeichen ignorieren soll

Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 15:30 Uhr
Moin,

wieso maskieren? Bei dem Mailvbs funktioniert das auch wunderbar - wieso bei dem Script nicht?

*Grübel* ^_^

Gruß Zero
Bitte warten ..
Mitglied: 76109
19.07.2012, aktualisiert um 16:01 Uhr
Hallo Zero!

Schau Dir mal an, was in dem Script im Temp-Verzeichnis steht. Oder besser noch starte die Batch auf der Comandozeil mit echo On

Nimm als beispiel dies '"%Mail%"' im Makro-Text. Da wird eine Variable aufgelöst. In unserem Skript muss aber alles 1:1 in das Skript geschrieben werden und nichts in irgendeiner weise durch Batch aufgelöst oder sonstig bearbeitet werden

Gruß Dieter
Bitte warten ..
Mitglied: bastla
19.07.2012, aktualisiert um 16:14 Uhr
Hallo Dieter!
Nimm als beispiel dies '"%Mail%"' im Makro-Text. Da wird eine Variable aufgelöst. In unserem Skript muss aber alles 1:1 in das Skript geschrieben werden und nichts in irgendeiner weise durch Batch aufgelöst oder sonstig bearbeitet werden
Einspruch: Die Anführungszeichen sind dort, wo sie hingehören, und der Pfad dazwischen kommt (aufgelöst) aus der CMD-Variablen %Mail% - daher alles ok.

Was das Maskieren angeht: Betroffen sind (wegen der enthaltenen Zeichen "&", "<" und ">") ja nur die Zeilen 65, 66, 81, 98, 106, 167, 193 und 205 - also halb so wild ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
19.07.2012 um 16:22 Uhr
Hallo bastla!

Ok, das war jetze im Eifer des Gefechts etwas daneben gegriffen

Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 16:22 Uhr
Moin,

redet ihr Deutsch mit mir?

Maskieren geht mit \ ?

Sind es nur die Zeichen die du nun genannt hast bastla oder gibt es noch mehr Zeichen die ich dann Maskieren muss?

Wieso heißt das eigentlich Maskieren? (meine Interpretation: Man setzt einem Zeichen damit eine Maske auf, damit das - in dem falle - Batch es nicht lesen will/kann/möchte. Richtig?)

Gruß Zero
Bitte warten ..
Mitglied: 76109
19.07.2012, aktualisiert um 16:32 Uhr
Hallo Zero!

Maskieren geht mit ^

Wieso heißt das eigentlich Maskieren? (meine Interpretation: Man setzt einem Zeichen damit eine Maske auf, damit das - in dem falle - Batch es nicht lesen will/kann/möchte. Richtig?)
Damit Batch es ignoriert und als normales Zeichen liest


Gruß Dieter
Bitte warten ..
Mitglied: bastla
19.07.2012 um 16:28 Uhr
Damit Batch es ignoriert und als normales Zeichen liest
- man könnte auch sagen: Damit das Zeichen nicht interpretiert wird ...

Grüße
bastla
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 16:29 Uhr
Moin,

danke.

War meine Interpretation ja gar nicht so falsch *g*

Gut werde ich dann - sofern ichs noch schaffe - heut noch umsetzen und testen.

Gruß Zero
Bitte warten ..
Mitglied: 76109
19.07.2012 um 16:31 Uhr
Hallo bastla!

- man könnte auch sagen: Damit das Zeichen nicht interpretiert wird ...
Jepp, hört sich zumindest besser an

Gruß Dieter
Bitte warten ..
Mitglied: ColdZero89
19.07.2012 um 16:33 Uhr
Moin,

meine Bildliche Darstellung wie dem kleinem & zeichen Augen und ein Bart gemalt wird damit Batch denkt "mh schönes Zeichen aber nichts für mich" find ich irgendwie niedlicher

Gruß Zero
Bitte warten ..
Mitglied: bastla
19.07.2012, aktualisiert um 16:38 Uhr
Hallo ColdZero89!
wie dem kleinem & zeichen Augen und ein Bart gemalt wird
Mach das nicht - damit erschreckst Du VBS (ein kleines lustiges Hütchen ist doch auch schon was ) ...

Grüße
bastla
Bitte warten ..
Mitglied: ColdZero89
19.07.2012, aktualisiert um 17:17 Uhr
Moin,

1. Platz ich gleich
2. Fress ich gleich nen Stock samt Brot dadran!
3. Hat wer Ketchup und Senf?

Nun bekomm ich den Fehler "Falscher Dateityp [*.csv, *.txt, *.ods]"

....

Fehler schon gefunden - die Stelle bei dem die VBS aufgerufen wird, dort hab ich die XLS mitgegeben anstatt die CSV...

Erneuter Test: Fehler.... Temp\CSVtoXLS.vbs(128, 1) Laufzeitfehler in Microsoft VBScript: Index außerhalb des gültigen Bereichs: '[number: 5]'

Hab gerade gemerkt es geht ja um die Zeilenangabe in VBS... das Erzeugte VBS steht nun hier, das Originalscript ist anch unten gewandert.

01.
Option Explicit	 
02.
Const CsvChar = "ANSI"      'Zeichensatz	 
03.
Const CsvText = """"        'Text-Trennzeichen = (")	 
04.
Const CsvDelim = "	"        'Trennzeichen = (;) 
05.
Const CsvStart = 1          'Startzeile 
06.
Const ErrMsg0 = Abbruch: Die OpenOffice-Anwendung bitte vorher Schließen!""" 
07.
Const ErrMsg1 = "Falsche Anzahl an Argumenten!"	 
08.
Const ErrMsg2 = "Falscher Dateityp [*.csv, *.txt, *.ods]"	 
09.
Const ErrMsg3 = "Quell-Datei nicht gefunden!"	 
10.
Const ErrMsg4 = "OpenOffice konnte nicht geladen werden!"	 
11.
Const sBinSql = "Select * from Win32_Process Where Name='soffice.bin'"	 
12.
Const iHKCU = &H80000001	 
13.
Const iHKLM = &H80000002	 
14.
Const sRegKey = "Software\OpenOffice.Org\OpenOffice.Org\"	 
15.
Const sRegValue = "Path"	 
16.
Const sWinMan = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"	 
17.
Const sWinReg = "winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"	 
18.
Const sEvtSql = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"	 
19.
Const SW_HIDE = 0	 
20.
"Dim oOODesktop, aOOArgs(2), oFso, oFile, oArgs, sBaseName, sExtName, sFolder, sSrcFile, sDstFile			"	 
21.
If GetObject(sWinMan).ExecQuery(sBinSql).Count Then	 
22.
WScript.Echo ErrMsg0:  WScript.Quit 1	 
23.
End If	 
24.
Set oArgs = WScript.Arguments 	 
25.
If oArgs.Count <> 1 Then	 
26.
WScript.Echo ErrMsg1:  WScript.Quit 1	 
27.
End If	 
28.
"sSrcFile = oArgs(0)	"	 
29.
Set oFso = CreateObject("Scripting.FileSystemObject")	 
30.
sExtName = LCase(oFso.GetExtensionName(sSrcFile))	 
31.
Select Case sExtName	 
32.
Case "csv", "txt", "ods"	 
33.
Case Else: WScript.Echo ErrMsg2:   WScript.Quit 1	 
34.
End Select	 
35.
sBaseName = oFso.GetBaseName(sSrcFile)	 
36.
sFolder = oFso.GetParentFolderName(sSrcFile)	 
37.
If sBaseName = "*" Then	 
38.
Call OpenOfficeStartup	 
39.
For Each oFile In oFso.GetFolder(sFolder).Files	 
40.
If LCase(oFso.GetExtensionName(oFile)) = sExtName Then	 
41.
sBaseName = oFso.GetBaseName(oFile)	 
42.
sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls")	 
43.
Call ConvertToXls(oFile.Path, sDstFile)	 
44.
End If	 
45.
Next	 
46.
Call OpenOfficeTerminate	 
47.
ElseIf Not oFso.FileExists(sSrcFile) Then	 
48.
WScript.Echo ErrMsg3:   WScript.Quit 1	 
49.
Else	 
50.
sDstFile = oFso.BuildPath(sFolder, sBaseName & ".xls")	 
51.
Call OpenOfficeStartup	 
52.
Call ConvertToXls(sSrcFile, sDstFile)	 
53.
Call OpenOfficeTerminate	 
54.
End If	 
55.
Set oFso = Nothing	 
56.
WScript.Echo "Fertig!":   WScript.Quit 0	 
57.
Private Sub ConvertToXls(ByRef sCsvFile, sXlsFile)	 
58.
Dim iCsvDelim, iCsvText, iFilter 	 
59.
Select Case LCase(Right(sCsvFile, 3))	 
60.
Case "csv", "txt"	 
61.
iFilter = True	 
62.
Case "ods"	 
63.
"iFilter = False	"	 
64.
Case Else	 
65.
Exit Sub	 
66.
End Select	 
67.
aOOArgs(0).Name = "Hidden"	 
68.
aOOArgs(0).Value = True	 
69.
aOOArgs(1).Name = "FilterName"	 
70.
aOOArgs(1).Value = ""	 
71.
aOOArgs(2).Name = "FilterOptions"	 
72.
aOOArgs(2).Value = "" 	 
73.
iCsvDelim = Asc(CsvDelim):  iCsvText = Asc(CsvText)	 
74.
If iFilter Then     'Argumente nur für *.csv und *.txt	 
75.
aOOArgs(1).Value = "Text - txt - csv (StarCalc)"	 
76.
aOOArgs(2).Value = Join(Array(iCsvDelim, iCsvText, CsvChar, CsvStart), ",")	 
77.
End If	 
78.
With oOODesktop.LoadComponentFromURL(GetURL(sCsvFile), "_blank", 0, aOOArgs)	 
79.
aOOArgs(1).Value = "MS Excel 97"	 
80.
aOOArgs(2).Value = ""	 
81.
.storeAsURL GetURL(sXlsFile), aOOArgs	 
82.
.Close False	 
83.
End With	 
84.
End Sub	 
85.
Private Sub OpenOfficeStartup()	 
86.
Dim i	 
87.
Call LoadOpenOfficeProcess	 
88.
With CreateObject("com.sun.star.ServiceManager")	 
89.
For i = 0 To UBound(aOOArgs)	 
90.
Set aOOArgs(i) = .Bridge_GetStruct("com.sun.star.beans.PropertyValue")	 
91.
Next	 
92.
Set oOODesktop = .createInstance("com.sun.star.frame.Desktop")	 
93.
End With	 
94.
End Sub	 
95.
Private Sub LoadOpenOfficeProcess()	 
96.
Dim oConfig, oEventSrc, oEvent, sExeFile, sExeFolder, iPID	 
97.
sExeFile = GetSofficeExePath(iHKCU)	 
98.
If IsEmpty(sExeFile) Then sExeFile = GetSofficeExePath(iHKLM)	 
99.
sExeFolder = oFso.GetParentFolderName(sExeFile)	 
100.
If sExeFolder = "" Then WScript.Echo ErrMsg4:  WScript.Quit 1	 
101.
With GetObject(sWinMan)	 
102.
Set oConfig = .Get("Win32_ProcessStartup").SpawnInstance_:  oConfig.ShowWindow = SW_HIDE	 
103.
Set oEventSrc = .ExecNotificationQuery(sEvtSql)	 
104.
If .Get("Win32_Process").Create(sExeFile & " -invisible", sExeFolder, oConfig, iPID) Then	 
105.
WScript.Echo ErrMsg4:  WScript.Quit 1	 
106.
End if	 
107.
Do	 
108.
Set oEvent = oEventSrc.NextEvent()	 
109.
If oEvent.TargetInstance.Name = "soffice.bin" And oEvent.TargetInstance.ParentProcessID = iPID Then	 
110.
Exit Do	 
111.
End If	 
112.
Loop	 
113.
End With	 
114.
End Sub	 
115.
Private Sub OpenOfficeTerminate()	 
116.
Dim i	 
117.
oOODesktop.Terminate:   Set oOODesktop = Nothing	 
118.
For i = 0 To UBound(aOOArgs)	 
119.
Set aOOArgs(i) = Nothing	 
120.
Next	 
121.
End Sub	 
122.
Private Function GetURL(ByRef sFilename)	 
123.
Dim sChars, sClient, i	 
124.
If Left(sFilename, 2) = "\\" Then sClient = "File:" Else sClient = "File:///"	 
125.
sChars = Array("\", "/", "25", " ", "0")	 
126.
GetURL = sClient & oFso.GetAbsolutePathName(sFilename)	 
127.
For i = 0 To UBound(sChars) Step 2	 
128.
GetURL = Replace(GetURL, sChars(i), sChars(i + 1))	 
129.
Next	 
130.
End Function	 
131.
Private Function GetSofficeExePath(iHKey)	 
132.
Dim aRegValues, sExePath	 
133.
With GetObject(sWinReg)	 
134.
.EnumKey iHKey, sRegKey, aRegValues	 
135.
If IsArray(aRegValues) Then	 
136.
If IsNumeric(aRegValues(0)) Then	 
137.
.GetStringValue iHKey, sRegKey & aRegValues(0), sRegValue, sExePath	 
138.
End If	 
139.
End If	 
140.
End With	 
141.
GetSofficeExePath = sExePath	 
142.
End Function	
GRUMMEL!

Danke für eure Geduld.

Gruß Zero

P.S.: gibt es eigentlich sowas wie einen "spoiler"? Sodass man den Quellcode auf und zuklappen kann? In der Formatierungshilfe keinen gefunden... ^^

Originalscript
Nun nocheinmal das Script... Damit die Zeilenanghaben mit denen von mir übereinstimmen nun die ganzen mailadressen mal ersetzt...
01.
@echo off & setlocal 
02.
 
03.
rem Changelog 
04.
rem 1.0 Batch/VB-Skript zur Versendung von exportierte Anlagendaten per E-Mail mithilfe eines Auswahlmenüs 
05.
rem 2.0 Umwandlung der exportierten CSV Datei in XLS (Script von rubberman und didi1954) 
06.
rem V2.0b Kevin Lange 19.07.2012 
07.
 
08.
rem ==================================================================== 
09.
rem Deklarierung 
10.
rem ==================================================================== 
11.
	set "Ein=C:\Datenversand\InverterOverview.csv" 
12.
	set "Aus=C:\Datenversand\Thuengen Daten.csv" 
13.
	set "Send=C:\Datenversand\Thuengen Daten.xls" 
14.
	set "Mail=E-Mail@E-Mail" 
15.
 
16.
rem ==================================================================== 
17.
rem E-Mail Adresse auswählen 
18.
rem ==================================================================== 
19.
	echo [1] a 
20.
	echo [2] b 
21.
	echo [3] c 
22.
	echo [4] d 
23.
	echo [5] e 
24.
	echo [6] f 
25.
	echo [7] g 
26.
	echo [8] h 
27.
	echo [9] i 
28.
	echo [10] j 
29.
 
30.
	set /p Mailnr=Bitte Nummer vom Empaenger eingeben:  
31.
 
32.
	GOTO CASE_%Mailnr% 
33.
		:CASE_1 
34.
			set "Mail=a" 
35.
				GOTO END_SWITCH 
36.
		:CASE_2 
37.
			set "Mail=b" 
38.
			GOTO END_SWITCH 
39.
		:CASE_3 
40.
			set "Mail=c" 
41.
			GOTO END_SWITCH 
42.
		:CASE_4 
43.
			set "Mail=d" 
44.
			GOTO END_SWITCH 
45.
		:CASE_5 
46.
			set "Mail=e" 
47.
			GOTO END_SWITCH 
48.
		:CASE_6 
49.
			set "Mail=f" 
50.
			GOTO END_SWITCH 
51.
		:CASE_7 
52.
			set "Mail=g" 
53.
			GOTO END_SWITCH 
54.
		:CASE_8 
55.
			set "Mail=h" 
56.
			GOTO END_SWITCH 
57.
		:CASE_9 
58.
			set "Mail=i" 
59.
			GOTO END_SWITCH 
60.
		:CASE_10 
61.
			set "Mail=j" 
62.
			GOTO END_SWITCH 
63.
		:END_SWITCH 
64.
 
65.
rem ==================================================================== 
66.
rem Datei umbenennen 
67.
rem ==================================================================== 
68.
	move "%Ein%" "%Aus%" 
69.
 
70.
rem ==================================================================== 
71.
rem Erstellung des VBS zum Umwandeln 
72.
rem ==================================================================== 
73.
 
74.
rem Aufrufbeispiel über Batch mit den Dateitypen [*.csv, *.txt, *.ods]: 
75.
rem @cscript //nologo "E:\Test\ConvertToXls.vbs" "E:\Test\*.csv"  
76.
 
77.
rem Aufrufbeispiel direkt mit den Dateitypen [*.csv, *.txt, *.ods]: 
78.
rem E:\Test\ConvertToXls.vbs "E:\Test\*.csv" 
79.
 
80.
	Set "U=%temp%\CSVtoXLS.vbs" 
81.
 
82.
	>"%U%" echo Option Explicit 
83.
 
84.
	>>"%U%" echo Const CsvChar = "ANSI"      'Zeichensatz 
85.
	>>"%U%" echo Const CsvText = """"        'Text-Trennzeichen = (") 
86.
	>>"%U%" echo Const CsvDelim = ";"        'Trennzeichen = (;) 
87.
	>>"%U%" echo Const CsvStart = 1          'Startzeile 
88.
	>>"%U%" echo Const ErrMsg0 = "Abbruch: Die OpenOffice-Anwendung bitte vorher Schließen!" 
89.
	>>"%U%" echo Const ErrMsg1 = "Falsche Anzahl an Argumenten!" 
90.
	>>"%U%" echo Const ErrMsg2 = "Falscher Dateityp [*.csv, *.txt, *.ods]" 
91.
	>>"%U%" echo Const ErrMsg3 = "Quell-Datei nicht gefunden!" 
92.
	>>"%U%" echo Const ErrMsg4 = "OpenOffice konnte nicht geladen werden!" 
93.
	 
94.
	rem Konstante zum Check, ob OpenOffice bereits läuft 
95.
	>>"%U%" echo Const sBinSql = "Select * from Win32_Process Where Name='soffice.bin'" 
96.
	rem Konstanten zum ermitteln des Pfades der OpenOffice-Start-Exe 
97.
	>>"%U%" echo Const iHKCU = ^&H80000001 
98.
	>>"%U%" echo Const iHKLM = ^&H80000002 
99.
	>>"%U%" echo Const sRegKey = "Software\OpenOffice.Org\OpenOffice.Org\" 
100.
	>>"%U%" echo Const sRegValue = "Path" 
101.
	rem Konstanten zum Laden des OpenOffice-Prozesses im Hintergrund 
102.
	>>"%U%" echo Const sWinMan = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" 
103.
	>>"%U%" echo Const sWinReg = "winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv" 
104.
	>>"%U%" echo Const sEvtSql = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'" 
105.
	>>"%U%" echo Const SW_HIDE = 0 
106.
	>>"%U%" echo Dim oOODesktop, aOOArgs(2), oFso, oFile, oArgs, sBaseName, sExtName, sFolder, sSrcFile, sDstFile			 
107.
 
108.
	rem Main Beg 
109.
		>>"%U%" echo If GetObject(sWinMan).ExecQuery(sBinSql).Count Then 
110.
			>>"%U%" echo WScript.Echo ErrMsg0:  WScript.Quit 1 
111.
		>>"%U%" echo End If 
112.
		>>"%U%" echo Set oArgs = WScript.Arguments  
113.
		>>"%U%" echo If oArgs.Count ^<^> 1 Then 
114.
			>>"%U%" echo WScript.Echo ErrMsg1:  WScript.Quit 1 
115.
		>>"%U%" echo End If 
116.
		>>"%U%" echo sSrcFile = oArgs(0)	 
117.
		>>"%U%" echo Set oFso = CreateObject("Scripting.FileSystemObject") 
118.
		>>"%U%" echo sExtName = LCase(oFso.GetExtensionName(sSrcFile)) 
119.
		>>"%U%" echo Select Case sExtName 
120.
			>>"%U%" echo Case "csv", "txt", "ods" 
121.
			>>"%U%" echo Case Else: WScript.Echo ErrMsg2:   WScript.Quit 1 
122.
		>>"%U%" echo End Select 
123.
		>>"%U%" echo sBaseName = oFso.GetBaseName(sSrcFile) 
124.
		>>"%U%" echo sFolder = oFso.GetParentFolderName(sSrcFile) 
125.
		>>"%U%" echo If sBaseName = "*" Then 
126.
			>>"%U%" echo Call OpenOfficeStartup 
127.
			>>"%U%" echo For Each oFile In oFso.GetFolder(sFolder).Files 
128.
				>>"%U%" echo If LCase(oFso.GetExtensionName(oFile)) = sExtName Then 
129.
					>>"%U%" echo sBaseName = oFso.GetBaseName(oFile) 
130.
					>>"%U%" echo sDstFile = oFso.BuildPath(sFolder, sBaseName ^& ".xls") 
131.
					>>"%U%" echo Call ConvertToXls(oFile.Path, sDstFile) 
132.
				>>"%U%" echo End If 
133.
			>>"%U%" echo Next 
134.
			>>"%U%" echo Call OpenOfficeTerminate 
135.
		>>"%U%" echo ElseIf Not oFso.FileExists(sSrcFile) Then 
136.
			>>"%U%" echo WScript.Echo ErrMsg3:   WScript.Quit 1 
137.
		>>"%U%" echo Else 
138.
			>>"%U%" echo sDstFile = oFso.BuildPath(sFolder, sBaseName ^& ".xls") 
139.
			>>"%U%" echo Call OpenOfficeStartup 
140.
			>>"%U%" echo Call ConvertToXls(sSrcFile, sDstFile) 
141.
			>>"%U%" echo Call OpenOfficeTerminate 
142.
		>>"%U%" echo End If 
143.
		>>"%U%" echo Set oFso = Nothing 
144.
		>>"%U%" echo WScript.Echo "Fertig!":   WScript.Quit 0 
145.
	rem Main End 
146.
 
147.
	>>"%U%" echo Private Sub ConvertToXls(ByRef sCsvFile, sXlsFile) 
148.
		>>"%U%" echo Dim iCsvDelim, iCsvText, iFilter  
149.
		>>"%U%" echo Select Case LCase(Right(sCsvFile, 3)) 
150.
			>>"%U%" echo Case "csv", "txt" 
151.
				>>"%U%" echo iFilter = True 
152.
			>>"%U%" echo Case "ods" 
153.
				>>"%U%" echo iFilter = False	 
154.
			>>"%U%" echo Case Else 
155.
				>>"%U%" echo Exit Sub 
156.
		>>"%U%" echo End Select 
157.
		>>"%U%" echo aOOArgs(0).Name = "Hidden" 
158.
		>>"%U%" echo aOOArgs(0).Value = True 
159.
		>>"%U%" echo aOOArgs(1).Name = "FilterName" 
160.
		>>"%U%" echo aOOArgs(1).Value = "" 
161.
		>>"%U%" echo aOOArgs(2).Name = "FilterOptions" 
162.
		>>"%U%" echo aOOArgs(2).Value = ""  
163.
		>>"%U%" echo iCsvDelim = Asc(CsvDelim):  iCsvText = Asc(CsvText) 
164.
		>>"%U%" echo If iFilter Then     'Argumente nur für *.csv und *.txt 
165.
			>>"%U%" echo aOOArgs(1).Value = "Text - txt - csv (StarCalc)" 
166.
			>>"%U%" echo aOOArgs(2).Value = Join(Array(iCsvDelim, iCsvText, CsvChar, CsvStart), ",") 
167.
		>>"%U%" echo End If 
168.
		>>"%U%" echo With oOODesktop.LoadComponentFromURL(GetURL(sCsvFile), "_blank", 0, aOOArgs) 
169.
			>>"%U%" echo aOOArgs(1).Value = "MS Excel 97" 
170.
			>>"%U%" echo aOOArgs(2).Value = "" 
171.
			>>"%U%" echo .storeAsURL GetURL(sXlsFile), aOOArgs 
172.
			>>"%U%" echo .Close False 
173.
		>>"%U%" echo End With 
174.
	>>"%U%" echo End Sub 
175.
 
176.
	>>"%U%" echo Private Sub OpenOfficeStartup() 
177.
		>>"%U%" echo Dim i 
178.
		>>"%U%" echo Call LoadOpenOfficeProcess 
179.
		>>"%U%" echo With CreateObject("com.sun.star.ServiceManager") 
180.
			>>"%U%" echo For i = 0 To UBound(aOOArgs) 
181.
			>>"%U%" echo Set aOOArgs(i) = .Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
182.
			>>"%U%" echo Next 
183.
			>>"%U%" echo Set oOODesktop = .createInstance("com.sun.star.frame.Desktop") 
184.
		>>"%U%" echo End With 
185.
	>>"%U%" echo End Sub 
186.
 
187.
	>>"%U%" echo Private Sub LoadOpenOfficeProcess() 
188.
		>>"%U%" echo Dim oConfig, oEventSrc, oEvent, sExeFile, sExeFolder, iPID 
189.
		rem Den Pfad der OpenOffice-Soffice.Exe in der Registry ermitteln 
190.
		>>"%U%" echo sExeFile = GetSofficeExePath(iHKCU) 
191.
		>>"%U%" echo If IsEmpty(sExeFile) Then sExeFile = GetSofficeExePath(iHKLM) 
192.
		rem OpenOffice-Programm-Verzeichnis ermitteln 
193.
		>>"%U%" echo sExeFolder = oFso.GetParentFolderName(sExeFile) 
194.
		>>"%U%" echo If sExeFolder = "" Then WScript.Echo ErrMsg4:  WScript.Quit 1 
195.
		rem OpenOffice ohne GUI versteckt öffnen und warten bis der Prozess vollständig geladen ist 
196.
		>>"%U%" echo With GetObject(sWinMan) 
197.
			>>"%U%" echo Set oConfig = .Get("Win32_ProcessStartup").SpawnInstance_:  oConfig.ShowWindow = SW_HIDE 
198.
			>>"%U%" echo Set oEventSrc = .ExecNotificationQuery(sEvtSql) 
199.
			>>"%U%" echo If .Get("Win32_Process").Create(sExeFile ^& " -invisible", sExeFolder, oConfig, iPID) Then 
200.
				>>"%U%" echo WScript.Echo ErrMsg4:  WScript.Quit 1 
201.
			>>"%U%" echo End if 
202.
			>>"%U%" echo Do 
203.
				>>"%U%" echo Set oEvent = oEventSrc.NextEvent() 
204.
				>>"%U%" echo If oEvent.TargetInstance.Name = "soffice.bin" And oEvent.TargetInstance.ParentProcessID = iPID Then 
205.
					>>"%U%" echo Exit Do 
206.
				>>"%U%" echo End If 
207.
			>>"%U%" echo Loop 
208.
		>>"%U%" echo End With 
209.
	>>"%U%" echo End Sub 
210.
 
211.
	>>"%U%" echo Private Sub OpenOfficeTerminate() 
212.
		>>"%U%" echo Dim i 
213.
		>>"%U%" echo oOODesktop.Terminate:   Set oOODesktop = Nothing 
214.
		>>"%U%" echo For i = 0 To UBound(aOOArgs) 
215.
			>>"%U%" echo Set aOOArgs(i) = Nothing 
216.
		>>"%U%" echo Next 
217.
	>>"%U%" echo End Sub 
218.
 
219.
Rem Absolute/Relative Pfade ins OO-URL-Format konvertieren 
220.
 
221.
	>>"%U%" echo Private Function GetURL(ByRef sFilename) 
222.
		>>"%U%" echo Dim sChars, sClient, i 
223.
		>>"%U%" echo If Left(sFilename, 2) = "\\" Then sClient = "File:" Else sClient = "File:///" 
224.
		>>"%U%" echo sChars = Array("\", "/", "%", "%25", " ", "%20") 
225.
		>>"%U%" echo GetURL = sClient ^& oFso.GetAbsolutePathName(sFilename) 
226.
		>>"%U%" echo For i = 0 To UBound(sChars) Step 2 
227.
			>>"%U%" echo GetURL = Replace(GetURL, sChars(i), sChars(i + 1)) 
228.
		>>"%U%" echo Next 
229.
	>>"%U%" echo End Function 
230.
 
231.
	>>"%U%" echo Private Function GetSofficeExePath(iHKey) 
232.
		>>"%U%" echo Dim aRegValues, sExePath 
233.
		>>"%U%" echo With GetObject(sWinReg) 
234.
		>>"%U%" echo .EnumKey iHKey, sRegKey, aRegValues 
235.
			>>"%U%" echo If IsArray(aRegValues) Then 
236.
				>>"%U%" echo If IsNumeric(aRegValues(0)) Then 
237.
					>>"%U%" echo .GetStringValue iHKey, sRegKey ^& aRegValues(0), sRegValue, sExePath 
238.
				>>"%U%" echo End If 
239.
			>>"%U%" echo End If 
240.
		>>"%U%" echo End With 
241.
		>>"%U%" echo GetSofficeExePath = sExePath 
242.
		>>"%U%" echo End Function 
243.
		 
244.
rem ==================================================================== 
245.
rem CSV to XLS 
246.
rem ==================================================================== 
247.
	echo ____________________________________	 
248.
	echo CSV-Datei wird in XLS umgewandelt. Bitte Warten... 
249.
	cscript //nologo "%U%" "%Aus%" 
250.
 
251.
rem ==================================================================== 
252.
rem Erstellung des VBS zum Mailversand 
253.
rem ==================================================================== 
254.
	Set "M=%temp%\Mailversand.vbs" 
255.
	>"%M%" echo Dim objMail,objConfig,objFields 
256.
	>>"%M%" echo Set objMail = CreateObject("CDO.Message") 
257.
	>>"%M%" echo Set objConfig = CreateObject("CDO.configuration") 
258.
	>>"%M%" echo Set objFields = objConfig.Fields 
259.
	>>"%M%" echo With objFields 
260.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/SendUsing")= 2 
261.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")= "mail.gmx.net" 
262.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")= 1 
263.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/SMTPServerPort")= 25 
264.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Mail" 
265.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "PW" 
266.
	>>"%M%" echo   .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true 
267.
	>>"%M%" echo   .Update 
268.
	>>"%M%" echo End With 
269.
	>>"%M%" echo With objMail 
270.
	>>"%M%" echo   Set .Configuration = objConfig 
271.
	>>"%M%" echo   .To = "%Mail%" 
272.
	>>"%M%" echo   .From = "Mail" 
273.
	>>"%M%" echo   .Subject = "Thuengen Daten" 
274.
	>>"%M%" echo   .TextBody = "Thuengen Daten" 
275.
	>>"%M%" echo   .AddAttachment "%Send%" 
276.
	>>"%M%" echo   .Send 
277.
	>>"%M%" echo End With 
278.
	 
279.
	echo ____________________________________ 
280.
	echo Ich versende nun die Dateien an %Mail%. Bitte Warten... 
281.
	cscript //nologo "%M%" 
282.
 
283.
	pause 
284.
	 
285.
rem ==================================================================== 
286.
rem Versendete Anhänge löschen 
287.
rem ==================================================================== 
288.
	del /Q "C:\Datenversand\Th*"
Bitte warten ..
Mitglied: bastla
19.07.2012, aktualisiert um 17:29 Uhr
Hallo ColdZero89!

Ändere die Zeile 224 (hatte ich vorher leider übersehen ) auf:
>>"%U%" echo sChars = Array("\", "/", "%%", "%%25", " ", "%%20")
Um in Batch ein einzelnen Prozentzeichen auszugeben, musst Du zwei schreiben (wie in VBS mit den Anführungszeichen) ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
19.07.2012, aktualisiert um 17:31 Uhr
Hallo Zero!

Jepp, da hat Batch noch äh bissl was verschluckt und zwar:
sChars = Array("\", "/", "25", " ", "0")
Anstatt:
sChars = Array("\", "/", "%", "%25", " ", "%20")
Denke mal mit Prozentzeichen verdoppeln, sollte es gehen

Gruß Dieter

bastla ist zu schnell für mich
Bitte warten ..
Mitglied: ColdZero89
19.07.2012, aktualisiert um 17:33 Uhr
Moinsen

gepriesen solltet ihr sein!

Im ernst? Da hätte ich auch selbst drauf kommen können... sowas sagte mir bastla nämlich schonmal... grml ^-^

Ich danke euch echt vielmals Script funktoniert nun 1a.

Schönen Abend euch noch.

Gruß Zero

P.S.: Ach du musst dich nur kürzer fassen Dieter ;P
Bitte warten ..
Mitglied: 76109
19.07.2012 um 17:43 Uhr
Hallo Zero!

Ich danke euch echt vielmals Script funktoniert nun 1a.
Gottseidank

P.S.: Ach du musst dich nur kürzer fassen Dieter ;P
Gute Idee, werde ich mir merken

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

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 ...