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

Eine Exel Tabelle in eine .csv Datei mit einer Batch inclusive einige Änderungen

Frage Entwicklung Batch & Shell

Mitglied: Underdog81

Underdog81 (Level 1) - Jetzt verbinden

14.07.2011 um 20:47 Uhr, 6628 Aufrufe, 33 Kommentare

Hallo ich habe schon lange das Forum nicht mehr besucht und freue mich auf eure Antworten.
Ich brauche Beschreibe mal mein Anliegen und hoffe es klappt wie ich es glaube.

Hintergrund: ich exportiere Adressaten aus einem Programm. Dabei wird eine .xls erstellt mit 3 Spalten die wie folgt aufgebaut ist.

Spalte1: adressnummer
Spalte2: Name Nachname
Spalte3: e-mailadresse

Soweit so gut, doch nun sollen die Adressen in ein Newsletter Programm importiert werden.
Doch hier gibt es ein Problem, denn es muss eine csv sein und mit Komma getrennt.
Der Aufbau muss aber so aussehen
Name Nachname , E-Mailadresse , 1 , 1
Spalte1 aus der xls soll also verschwinden und es sollen 2 neue spalten hinten dran mit 1 gefüllt werden.
Nun gibt es aber auch in der Spalte2 oft den Fall , dass der Name getrennt ist mit einem Komma und dann steht
In Spalte2 eben " Name , Nachname" und der Import schlägt dann fehl.

Idee war also erst mal die xls als .csv wandeln aber getrennt mit einem ; und es sollen alle , gelöscht werden.
Danach zurück in eine .xls und das ohne der ursprünglichen Spalte1 und die Zahl 1 in dann Spalte 3 und 4.
Jetzt gibt's also keine Komma Zeichen mehr und nun zurück in .csv mit Komma getrennt.

Geht das überhaupt mit Batch?? Klappt das alles in eine Batch-Datei??
Leider habe ich beim großem G Bruder nichts gefunden.

Ich danke schon mal
Underdog81
33 Antworten
Mitglied: hmarkus
14.07.2011 um 20:58 Uhr
Guten Abend,

also ich würde erstmal in der zweiten Spalte die Kommata durch Semikolon ersetzten, dann löschst Du Spalte 1, trägst in den Spalten 4 und 5 die Einsen ein und speicherst dann als *.csv mit Komma als Separator.

Mit Batch läuft da nix, das kannst Du vergessen. Excel kann selbst gut genug mit csv-Dateien umgehen.

Markus
Bitte warten ..
Mitglied: Underdog81
14.07.2011 um 21:10 Uhr
Also geht es mit Batch eh nicht?
Das Komma in Spalte2 ist durch dem Export aus dem ursprünglichen Programm ja leider da.
Es sind ja nicht nur 10 - 50 Adressen, es handelt sich um über 2000 Adressen die zum Teil ein Komma in spalte2 haben.
Und die Trennung durch das Komma in der csv ist ein Muss zum Import.
Irgendwie muss man es doch hinbekommen, das ich schnell zu der gewünschten csv kommen.

Thx Underdog81
Bitte warten ..
Mitglied: hmarkus
14.07.2011 um 21:17 Uhr
Naja, gehen tut das mit Batch bestimmt, aber das ist (m.E.) der falsche Ansatz.

Guck Dir doch erstmal die Spalte mit den Namen an. Dann mach folgendes, Spalte markieren, anderes Tabellenblatt, dort die ganze Spalte einfügen, dann Ersetzten lassen, also ";" durch " " (Leerzeichen). Danach die Spalte wieder kopieren und in die ursprüngliche Tabelle (anstatt der alten Spalte 2) einfügen.
Dann sind die Kommata weg.
Jetzt löschst Du Spalte 1.
Dann fügst Du in Spalte 3 und 4 die gewünschten Einsen ein (also jeweils erste und zweite Zeile die 1 rein, danach markieren und runterziehen bis zur letzten Zeile).
Danach speicherst Du "Speichern unter" als csv-Datei ab und gibst als Separator das Komma an.

Das war's eigentlich.

Oder noch eine Frage: wie fit bist Du mit Excel?

Markus
Bitte warten ..
Mitglied: Friemler
14.07.2011 um 21:30 Uhr
Hallo Underdog,

Batch ist zu unsicher zum bearbeiten von Textdateien. Ein Namensfeld wie "Hans & Maria Maier" wäre schon ein Problem, wegen dem "&". Für sowas eignet sich VBScript besser.

Was ist denn eigentlich mit diesen Namensfeldern. Erwartet das Newsletterprogramm Vor- und Nachname getrennt in zwei Zellen der CSV oder zusammen in einer Zelle?

Gruß
Friemler
Bitte warten ..
Mitglied: rubberman
14.07.2011 um 21:31 Uhr
Hallo Zusammen.

Zitat von Underdog81:
Hintergrund: ich exportiere Adressaten aus einem Programm. Dabei wird eine .xls erstellt ...


Zwischenfrage:
Du bist sicher, dass wirklich eine "echte" Exceldatei erstellt wird, oder ist es nur ein Format, dass Excel als Tabelle verarbeiten kann und die Endung .xls trägt?

Öffne die Datei mal in einem Texteditor. Wenn du tatsächlich nur cryptisches Zeug siehst, kommst du da per Batch nicht ran. Könnte aber auch anders sein...

Grüße
rubberman
Bitte warten ..
Mitglied: Underdog81
14.07.2011 um 21:42 Uhr
Wow jetzt wird schnell Kit den antworten.
Also das namenfeld soll den vor und Zuname haben und in der csv in einer Zelle.
Es gibt auch keine Sonderzeichen wie & sondern nur das , Zeichen.
Ich will auch nicht alles selber machen, da ich diesen Vorgang wohl 1-3 mal im Monat machen muss.

Ich geh mal eben Pizza holen und schau dann wieder rein.
Bitte warten ..
Mitglied: Skyemugen
14.07.2011 um 22:01 Uhr
Aloha,

nun, mit batch wäre es möglich und auch nicht einmal unbedingt aufwändig aber (abgesehen davon, dass ich heute keine Lust dazu habe) als Anmerkung wollte ich noch bringen: OpenOffice kann auch mit verschiedenen Trennzeichen arbeiten (importieren und exportieren), das könnte schon einmal einen Schritt verkürzen(?)

greetz André
Bitte warten ..
Mitglied: Friemler
14.07.2011 um 22:17 Uhr
Hallo Underdog,

teste mal das hier:
01.
Const ForReading = 1 
02.
Const ForWriting = 2 
03.
 
04.
 
05.
strReplace = "" 
06.
 
07.
 
08.
If WScript.Arguments.Count > 0 Then 
09.
  Set objFSO = CreateObject("Scripting.FileSystemObject") 
10.
 
11.
  strFilePath = objFSO.GetParentFolderName(WScript.Arguments(0)) 
12.
  strFileName = objFSO.GetBaseName(WScript.Arguments(0)) 
13.
  strFileExt  = objFSO.GetExtensionName(WScript.Arguments(0)) 
14.
 
15.
  Set objInFile = objFSO.OpenTextFile(WScript.Arguments(0), ForReading, False) 
16.
  Set objOutFile = objFSO.OpenTextFile(objFSO.BuildPath(strFilePath, strFileName & "_Neu" & "." & strFileExt), ForWriting, True) 
17.
 
18.
  While Not objInFile.AtEndOfStream 
19.
    arrFields = Split(objInFile.ReadLine, ";") 
20.
    objOutFile.WriteLine Replace(arrFields(1), ",", strReplace) & "," & arrFields(2) & "," & "1,1" 
21.
  Wend 
22.
 
23.
  objOutFile.Close 
24.
  objInFile.Close 
25.
End If
Speichere das obige Script z.B. als ConvertExport.vbs.

Du musst die exportierte XLS-Datei erstmal in Excel laden und als CSV speichern. Das Icon dieser neu erzeugten Datei kannst Du auf das Icon des obigen Scripts ziehen. Es wird dann eine neue Datei erzeugt, deren Namen um den Zusatz "_Neu" ergänzt wurde (aus "Eport.csv" wird "Export_Neu.csv").

In Zeile 5 kannst Du angeben, durch was ein Komma im Namensfeld ersetzt werden soll. Ich habe hier mal "nichts" gewählt. Wenn es sein muss, setze ein Leerzeichen zwischen die Anführungszeichen.

Gruß
Friemler
Bitte warten ..
Mitglied: Underdog81
14.07.2011 um 22:24 Uhr
Zitat von Skyemugen:
Aloha,

nun, mit batch wäre es möglich und auch nicht einmal unbedingt aufwändig aber (abgesehen davon, dass ich
heute keine Lust dazu habe)
als Anmerkung wollte ich noch bringen: OpenOffice kann auch mit verschiedenen Trennzeichen arbeiten
(importieren und exportieren), das könnte schon einmal einen Schritt verkürzen(?)

greetz André

Ich werde morgen mal versuchen genauer zu erklären wieso ich an Batch gedacht habe.
Auch werde ich einige Beispiele schreiben wie es nach dem Export aussieht und für den Import in das andere Programm sein muss. Auch werde ich prüfen ob es eine "echte" Exel Datei ist und ob man die Daten auch als txt exportieren kann.
Wünsche euch also jetzt eine gute Nacht
Bitte warten ..
Mitglied: Underdog81
14.07.2011 um 22:29 Uhr
Cool friemler ich werde es morgen früh sofort testen und schreiben ob es klappt.
Ich muss jetzt zu meiner besseren Hälfte ins Bett.
Ich kann nur sagen, dass ihr mir schon sehr geholfen habt ruhig zu schlafen.
Aber wie lerne ich so etwas oder wo??
Bitte warten ..
Mitglied: Underdog81
15.07.2011 um 09:48 Uhr
Guten Morgen

Habe also erst mal die .csv erstellt un der Aufbau sieht so aus.
Adressnummer,Name,E-Mail
23842,Underdog Hund,Under@dog.hund

bei einigen ist eben die Besonderheit mit dem Komma im Feld Name.
Im Beispiel ist im Feld Name -> Underdog, Hund

23842,Underdog, Hund,Under@dog.hund

Ich hab das Script jetzt mal getestet und bekomme einen Fehler.
Windows Scrip Host meldet

Skript: C:\Ordner\ConvertExport.vbs
Zeile: 22
Zeichen: 5
Fehler: Index ausserhalb des gültigen Bereichs: [number: 1]
code: 800A0009
Quelle: Laufzeitfehler in Microsoft VBSkript

Was mach ich falsch oder was passt nicht?
Bitte warten ..
Mitglied: 76109
15.07.2011 um 10:50 Uhr
Hallo Underdog81!

Irgendwie bin ich ein wenig verwirrt, denn in Deinem 1. Beitrag schreibst Du, dass eine .xls-Datei in folgendem Format vorliegt (in Spalten...) und später taucht die Frage auf, ob es denn eine Excel-Datei ist oder nicht und Du schreibst, dass Du das erst noch prüfen musst?

Ist die .xls nun ne Excel-Datei oder nicht? Und wenn ja, wird der Name in den Spalten auch mit/ohne Komma korrekt angezeigt?

Gruß Dieter
Bitte warten ..
Mitglied: cse
15.07.2011 um 11:17 Uhr
Hi,

also für sawas bietet sich doch die excelfunktion VERKETTEN an.

=Verketten(saplte1;",";Spalte2;",";" 1, 1")

oder hab ich da was net verstanden?

grüße!
Bitte warten ..
Mitglied: Friemler
15.07.2011 um 23:51 Uhr
Hallo Underdog,

wenn das
23842,Underdog, Hund,Under@dog.hund
wirklich der Inhalt der CSV ist - da werden als Feldtrennzeichen Kommata benutzt. Mein Script geht von Semikolons aus (Zeile 19). Kommata zu benutzen ist auch ungeschickt, weil das Namensfeld ja bei manchen Datensätzen schon ein Komma enthält. Ändere das Feld-Trennzeichen der CSV auf Semikolon und es sollte funktionieren.

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
16.07.2011 um 09:31 Uhr
Aloha Friemler,

er hat doch von vornherein gesagt, dass er Kommata benötigt (bzw. das Endprogramm).

greetz André
Bitte warten ..
Mitglied: Friemler
16.07.2011 um 10:54 Uhr
Moin André,

mein Script erzeugt ja auch eine Datei, die Kommata als Trennzeichen enthält. Die Eingabedatei muss aber Semikolons als Trennzeichen enthalten.

Gruß
Friemler
Bitte warten ..
Mitglied: Underdog81
16.07.2011 um 13:20 Uhr
Ahh ok dann hab ich es jetzt gerafft. Dann erstelle ich jetzt eine csv die als trennzeichen ein Simikolon enthält und Teste es nochmal.
Ich werde es aber erst am Montag testen da ich auf meinem IPad von zuhause schlecht arbeiten kann. Die Verbindung ist halt nur eine 20kbit und das schockt nicht über Remote.
Daumen hoch an euch beide Skyemugen und friemler, denn ihr hab sofort verstanden was mein Ziel war.
Danke und schönes Woxhenende.

P.S. Wenn ich aber zu komme werde ich es auch schon am Wochenende testen.
Bitte warten ..
Mitglied: 76109
16.07.2011 um 14:49 Uhr
Hallo!

Naja, warum einfach, wenn's auch umständlich geht

Wünsche auch ein schönes Wochenende

Gruß Dieter
Bitte warten ..
Mitglied: Underdog81
16.07.2011 um 16:11 Uhr
Zitat von 76109:
Hallo!

Naja, warum einfach, wenn's auch umständlich geht

Wünsche auch ein schönes Wochenende

Gruß Dieter



Was würdest du denn anders machen oder was ist jetzt in deinen Augen umständlich??
Bitte warten ..
Mitglied: 76109
16.07.2011 um 17:13 Uhr
Hallo Underdog81!

Naja, sofern es tatsächlich einen Excel-Datei ist, würde ich die *.xls direkt in eine Csv-Datei mit Kommata exportieren. Aber sicherlich hast Du meine diesbezügliche Nachfrage ja einfach übersehen

Gruß Dieter
Bitte warten ..
Mitglied: rubberman
16.07.2011 um 17:19 Uhr
Hallo Underdog81.

Als erstes solltest du eindeutig klarstellen in welchem Format nun der Inhalt deines Exportfiles kommt, statt die Leute die Hilfe anbieten im Trüben fischen zu lassen. Solange das nicht klar ist kann niemand wissen wie diese Daten sinvoll weiterverarbeitet werden könnten.

Mittels VBScript könnte man dann bspw. auch eine Instanz von Excel erzeugen und auf die VBA Komponente zugreifen, die die Arbeit für dich erledigt. (BTW: mit welcher Officeversion arbeitest du?)

Grüße
rubberman
Bitte warten ..
Mitglied: Underdog81
16.07.2011 um 17:26 Uhr
@ didi
Ich habe doch geschrieben, dass in dem Feld mit dem Namen zum Teil ein Komma als trennet steht.
Doch bei dem Programm wie es dann importiert werden soll ein Komma notwendig ist und somit der zweite Teil des Name im Feld für die Email importiert werden soll und somit ein Fehler kommt.

@rubbermann
Ja es ist tatsächlich eine echte Exel Datei und zeigt beim öffnen mit dem Editor tolle lustige Zeichen.
Bitte warten ..
Mitglied: 76109
16.07.2011 um 17:33 Uhr
Hallo Underdog81!

Na dann versuchs mal damit (*.vbs):
01.
Option Explicit 
02.
 
03.
Const strXlsPath = "X:\Test\Test.xls"       'Xls-Pfadangabe anpassen 
04.
Const strCsvPath = "X:\Test\Test.csv"       'Csv-Pfadangabe anpassen 
05.
 
06.
Const Delim = ","                           'Csv-Trennzeichen 
07.
Const ReplaceChar = " "                     'Komma im Namen durch Leerzeichen ersetzen? 
08.
 
09.
Dim objFso, objCsvFile, objCells, arrCsvValues, strNamen 
10.
     
11.
Set objFso = CreateObject("Scripting.FileSystemObject") 
12.
     
13.
If Not objFso.FileExists(strXlsPath) Then  
14.
    MsgBox "Datei '" & strXlsPath & "' nicht gefunden!", vbExclamation, "Fehler...":  WScript.Quit 
15.
End If 
16.
 
17.
Set objCsvFile = objFso.CreateTextFile(strCsvPath) 
18.
     
19.
With GetObject(strXlsPath) 
20.
    With .Sheets(1) 
21.
        For Each objCells In .Range("B:B") 
22.
            If IsEmpty(objCells) Then Exit For 
23.
            strNamen = Replace(objCells.Value, ",", ReplaceChar) 
24.
            arrCsvValues = Array(strNamen, objCells.Offset(0, 1).Value, 1, 1) 
25.
            objCsvFile.WriteLine Join(arrCsvValues, Delim) 
26.
        Next 
27.
    End With 
28.
   .Close False 
29.
End With 
30.
     
31.
objCsvFile.Close
Wobei das erste Tabellenblatt exportiert wird. Eine eventuelle Überschrift in der 1. Zeile ist noch nicht berücksichtigt.

Gruß Dieter

[Edit] Auf Rubbermans Anregung hin, die Konstante ReplaceChar nun auch verwendet [/Edit]
Bitte warten ..
Mitglied: rubberman
16.07.2011 um 18:06 Uhr
Hallo Dieter!

Bis auf dass du die Konstante ReplaceChar gar nicht verwendest, hätte ich's nicht besser hinbekommen.

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
16.07.2011 um 18:40 Uhr
Hallo Rubberman!

Danke für den Hinweis (oben korrigiert).

Wußte doch, dass ich was vergessen hatte

Gruß Dieter
Bitte warten ..
Mitglied: Underdog81
16.07.2011 um 19:03 Uhr
Oh man wo lernt man sowas? Ich verstehe nur bis Zeile 9 was da steht aber den Rest nicht.
Abgesehen davon ziehe ich die Exel oder die csv auf d Script ? Oder soll die csv mit " als trennzeichen stehen in der csv
Ich werde am Montag mal einen Teil der Exel posten, die ich als Export bekomme.
Bitte warten ..
Mitglied: 76109
16.07.2011 um 20:15 Uhr
Hallo Underdog81!

Bei diesem Script können eine oder mehrere Excel-Dateien übergeben werden. Du kannst jetzt also die Dateien auf das Script ziehen und/oder eine Verknüpfung mit dem Script in den SendTo-Ordner legen.

Es wird explizit geprüft, ob es ich um eine *.xls-Datei handelt und zusätzlich extra nochmal, ob die Datei auch existiert (Batch-Aufruf...).

Die Csv-Export-Datei wird im gleichen Pfad, wie die *.xls-Datei mit dem gleichen Dateinamen gespeichert.

01.
Option Explicit 
02.
 
03.
Const Delim = ","                           'Csv-Trennzeichen (Ausgabe) 
04.
Const ReplaceChar = " "                     'Komma im Namen durch Leerzeichen  ersetzen 
05.
 
06.
Dim objArgs, objArg, objFso, objCsvFile, objCells, arrCsvValues 
07.
Dim strNamen, strFilePath, strFileName, strCsvFile 
08.
     
09.
Set objArgs = WScript.Arguments 
10.
  
11.
If objArgs.Count = 0 Then MsgBox "Zuwenig Parameter!", vbExclamation, "Fehler...":  WScript.Quit 
12.
 
13.
Set objFso = CreateObject("Scripting.FileSystemObject") 
14.
 
15.
For Each objArg In objArgs 
16.
    If LCase(objFso.GetExtensionName(objArg)) = "xls" Then 
17.
        strFileName = objFso.GetBaseName(objArg) 
18.
        strFilePath = objFso.GetParentFolderName(objArg) 
19.
        strCsvFile = objFso.BuildPath(strFilePath, strFileName & ".csv") 
20.
     
21.
        If Not objFso.FileExists(objArg) Then 
22.
            MsgBox "Datei '" & objArg & "' nicht gefunden!", vbExclamation, "Fehler...":  WScript.Quit 
23.
        End If 
24.
             
25.
        Set objCsvFile = objFso.CreateTextFile(strCsvFile) 
26.
             
27.
        With GetObject(objArg) 
28.
            With .Sheets(1) 
29.
                For Each objCells In .Range("B:B") 
30.
                    If IsEmpty(objCells) Then Exit For 
31.
                    strNamen = Replace(objCells.Value, ",", ReplaceChar) 
32.
                    arrCsvValues = Array(strNamen, objCells.Offset(0, 1).Value, 1, 1) 
33.
                    objCsvFile.WriteLine Join(arrCsvValues, Delim) 
34.
                Next 
35.
            End With 
36.
           .Close False 
37.
        End With 
38.
             
39.
        objCsvFile.Close 
40.
    End If 
41.
Next
Gruß Dieter
Bitte warten ..
Mitglied: rubberman
16.07.2011 um 20:25 Uhr
Hallo Dieter!

Ich will ja kein Korinthenkacker sein, aber ...
            strNamen = Replace(objCells.Value, ",", ReplaceChar")
... Anführungszeichen hinter ReplaceChar zu viel
Flüchtigkeitsfehler, wie sie mich schon zum Haareraufen gebracht haben.

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
16.07.2011 um 20:29 Uhr
Hallo Rubberman!

So'n Mist aber auch, schon wieder was übersehen

Gruß Dieter
Bitte warten ..
Mitglied: Underdog81
22.07.2011 um 14:05 Uhr
Leute das Script funktionier übrigends echt klasse und perfekt.
Kann man jetzt zusätzlich noch sagen, dass er mehrere Dateien mit beispielsweise 250 Zeilen erstellt?
Wenn nicht ist es nicht so wild.

DANKE AN ALLE DIE HIER GEHOLFEN HABEN!!!!!
Bitte warten ..
Mitglied: Friemler
22.07.2011 um 14:57 Uhr
Hallo Underdog,

ich bin jetzt einfach mal so dreist und modifiziere das Script von Dieter, habe gerade etwas Zeit:
01.
Option Explicit 
02.
 
03.
Const Delim = ","                           'Csv-Trennzeichen (Ausgabe) 
04.
Const ReplaceChar = " "                     'Komma im Namen durch Leerzeichen  ersetzen 
05.
Const nLines = 250                          'Anzahl Zeilen pro erzeugter Datei 
06.
 
07.
Dim objArgs, objArg, objFso, objCsvFile, objCells, arrCsvValues 
08.
Dim strNamen, strFilePath, strFileName, strCsvFile, intCntr 
09.
 
10.
Set objArgs = WScript.Arguments 
11.
 
12.
If objArgs.Count = 0 Then MsgBox "Zuwenig Parameter!", vbExclamation, "Fehler...":  WScript.Quit 
13.
 
14.
Set objFso = CreateObject("Scripting.FileSystemObject") 
15.
 
16.
For Each objArg In objArgs 
17.
  If LCase(objFso.GetExtensionName(objArg)) = "xls" Then 
18.
    strFileName = objFso.GetBaseName(objArg) 
19.
    strFilePath = objFso.GetParentFolderName(objArg) 
20.
 
21.
    If Not objFso.FileExists(objArg) Then 
22.
      MsgBox "Datei '" & objArg & "' nicht gefunden!", vbExclamation, "Fehler...":  WScript.Quit 
23.
    End If 
24.
 
25.
    intCntr = 0 
26.
 
27.
    With GetObject(objArg) 
28.
      With .Sheets(1) 
29.
        For Each objCells In .Range("B:B") 
30.
          If intCntr Mod nLines = 0 Then 
31.
            If IsObject(objCsvFile) Then objCsvFile.Close 
32.
            strCsvFile     = objFso.BuildPath(strFilePath, strFileName & CStr(intCntr\nLines + 1) & ".csv") 
33.
            Set objCsvFile = objFso.CreateTextFile(strCsvFile) 
34.
          End If 
35.
 
36.
          If IsEmpty(objCells) Then Exit For 
37.
 
38.
          strNamen = Replace(objCells.Value, ",", ReplaceChar) 
39.
          arrCsvValues = Array(strNamen, objCells.Offset(0, 1).Value, 1, 1) 
40.
          objCsvFile.WriteLine Join(arrCsvValues, Delim) 
41.
 
42.
          intCntr = intCntr + 1 
43.
        Next 
44.
      End With 
45.
 
46.
     .Close False 
47.
    End With 
48.
 
49.
    objCsvFile.Close 
50.
  End If 
51.
Next
Trage die gewünschte Anzahl Zeilen pro Datei in Zeile 5 ein.

Die erzeugten Dateien werden durchnummeriert, z.B. Import1.csv, Import2.csv usw.

Gruß
Friemler
Bitte warten ..
Mitglied: 76109
22.07.2011 um 15:40 Uhr
Hallo Friemler!

ich bin jetzt einfach mal so dreist und modifiziere das Script von Dieter, habe gerade etwas Zeit:
Finde ich gut, bin noch anderweitig beschäftigt

Gruß Dieter
Bitte warten ..
Mitglied: Underdog81
22.07.2011 um 15:45 Uhr
THX ich weiss nicht was ich sagen soll!!
WO IST DER DANKE BUTTON???
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

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

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

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