[Excel] VBScript om auto op te slaan als CSV

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Stan
  • Registratie: Augustus 2002
  • Laatst online: 16-08-2024
Ik gebruik een batch bestand met verwijzing naar VBScript (wscript) in Windows om meerdere bestanden te converteren van XLXS naar CSV (en dan gebeurt er nog meer).

Als ik het handmatig deed in Excel, kwam er een keurige CSV file uit met puntkomma gescheiden waarden ( ; ) en die waarden worden door de batch vervolgens uit de CSV gehaald etc.

Maar nu automatisch middels wscript in de batch krijg ik opeens files met komma gescheiden waarden ( ; ) en werkt de batch niet (er zitten namelijk ook kommas IN de waarden/velden!).
Ik gebruik o.a. "objExcelBook.SaveAs OutputName, 23".

Is er een mogelijkheid om in t VBScript te zorgen dat de boel gewoon keurig door een ; gescheiden wordt ipv komma? Een andere waarde dan 23 wellicht?

[ Voor 0% gewijzigd door Stan op 08-08-2014 18:34 . Reden: Unwanted smiley :/ ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 15-07 22:20

Hero of Time

Moderator LNX

There is only one Legend

Wordt het script onder een andere gebruiker uitgevoerd? Het klinkt namelijk dat dat wel het geval is en de regio instellingen van de betreffende gebruiker niet goed staan ingesteld hiervoor.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Stan
  • Registratie: Augustus 2002
  • Laatst online: 16-08-2024
Nee, zelfde gebruiker. Ik heb andere gebruikers inc admin gebprobeerd maar het lijkt of Excel wel keurig de localization volgt als je het in Excel doet, maar niet als het met een script van buitenaf gebeurt of zo...

Acties:
  • 0 Henk 'm!

  • Stan
  • Registratie: Augustus 2002
  • Laatst online: 16-08-2024
Er zijn hier toch wel wat Excel-/VB-wizards?! :)

Acties:
  • 0 Henk 'm!

  • SmiGueL
  • Registratie: September 2005
  • Laatst online: 12:31
Ik zie dat je als meerdere CSV bestanden kan opslaan.

Als ik een macro maak van m'n save dan staat er dit:

ActiveWorkbook.SaveAs Filename:="C:\Users\X\Desktop\Map1.csv", _
FileFormat:=xlCSV, CreateBackup:=False


Misschien dus de FileFormat ff meegeven? :)

Edit:
Aha, ik wist niet dat die 23 voor de Windows variant stond. dan heeft 't wss geen zin. :P
Zou het toch bij een taalinstelling zoeken dan idd.

[ Voor 22% gewijzigd door SmiGueL op 11-08-2014 15:01 ]

Delidded 4770K 4.7GHz @ H220 || Gigabyte Z87X-UD4H || 16GB @ 2400MHz || Gigabyte GTX 760 || 2x128GB Samsung 830 @ RAID-0 & WD 3 TB || Iiyama XB2483HSU-B1 || Synology DS916+ 3x6TB + 120GB SSD Cache || Synology DS213+ 6TB backup


Acties:
  • 0 Henk 'm!

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 16:09

markvt

Peppi Cola

Volgens het commentaar op:

MSDN: XlFileFormat Enumeration (Microsoft.Office.Interop.Excel)

Kan je andere waardes voor die 23 (fileformat) proberen
xlCSV ;6; Comma separated value.
xlCSVMac ;22; Comma separated value.
xlCSVMSDOS ;24; Comma separated value.
xlCSVWindows ;23; Comma separated value.

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


Acties:
  • 0 Henk 'm!

  • Stan
  • Registratie: Augustus 2002
  • Laatst online: 16-08-2024
Volgens mij is de FileFormat= hetzelfde als het nummer dat ik "direct" gebruik niet?
Ik heb jullie beiden oplossingen reeds geprobeerd, maar ik kom steeds met kommas uit ipv de gewenste puntkomma.

Ik denk dat het probleem/de oplossing m meer zit in localization of zo. Als ik in mn Excel zit doet ie ; en van buitenaf Amerikaans gewoon een simpele komma. Zoiets?

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
De setting die je zoekt heet Local en staat gewoon in de documentatie: MSDN: Workbook.SaveAs Method (Excel)

Dan nog zijn csv-bestanden met een ; een zwaar beroerde uitvinding van excel. Liever niet gebruiken. Ik bedoel, het is COMMA Separated Values. :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Stan
  • Registratie: Augustus 2002
  • Laatst online: 16-08-2024
Ik kan helaas in het huidige VB-script (aangeroepen door wscript inputfilenaam outputfilenaam) niet eens iets anders doen dan een nummer meegeven (23), dus ook geen FileType of Local. Hoe komt dat?

Set objArgs = WScript.Arguments
InputName = objArgs(0)
OutputName = objArgs(1)
Set objExcel = CreateObject("Excel.application")
objExcel.application.visible=false
objExcel.application.displayalerts=false
set objExcelBook = objExcel.Workbooks.Open(InputName)
objExcelBook.SaveAs OutputName, 23
objExcel.Application.Quit
objExcel.Quit


@pedorus: Jazeker, maar ik wil dit omdat er in de waarden zelf ook kommas zitten, en dan wordt het opvissen van velden door een batch echt een drama. Puntkommas zijn tenminste zeldzamer ;)

[ Voor 14% gewijzigd door Stan op 11-08-2014 15:31 . Reden: Pedorus ]


Acties:
  • 0 Henk 'm!

  • SmiGueL
  • Registratie: September 2005
  • Laatst online: 12:31
En dit?

FileFormat:=xlCSV, Local:=True




Of dit?

Heb geen verstand van wscript, alleen VBA :P

[ Voor 134% gewijzigd door SmiGueL op 11-08-2014 15:37 ]

Delidded 4770K 4.7GHz @ H220 || Gigabyte Z87X-UD4H || 16GB @ 2400MHz || Gigabyte GTX 760 || 2x128GB Samsung 830 @ RAID-0 & WD 3 TB || Iiyama XB2483HSU-B1 || Synology DS916+ 3x6TB + 120GB SSD Cache || Synology DS213+ 6TB backup


Acties:
  • 0 Henk 'm!

  • Stan
  • Registratie: Augustus 2002
  • Laatst online: 16-08-2024
SmiGueL schreef op maandag 11 augustus 2014 @ 15:30:
En dit?

FileFormat:=xlCSV, Local:=True
Nee hij zegt bij de minst of geringste wijziging in dit scriptje VB Script error "instructie wordt verwacht".
Ik ben helaas echt een noob op dit gebied, sorry ;)

Acties:
  • 0 Henk 'm!

  • Stan
  • Registratie: Augustus 2002
  • Laatst online: 16-08-2024
SmiGueL schreef op maandag 11 augustus 2014 @ 15:30:
KNIP

Of dit?
Heb geen verstand van wscript, alleen VBA :P
SmiGuel, je bent de beste! _/-\o_ Dit is exact de discussie die ik zocht (je tweede link).
Mijn script was al gelijk aan t voorbeeld, maar de eerste reactie laat zien dat je alle waarden mee kunt geven als getal. Mijn script werkt nu (met ; !) door mijn SaveAs-zin te vervangen door:
objExcelBook.SaveAs OutputName, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, true

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Stan schreef op maandag 11 augustus 2014 @ 15:27:
@pedorus: Jazeker, maar ik wil dit omdat er in de waarden zelf ook kommas zitten, en dan wordt het opvissen van velden door een batch echt een drama. Puntkommas zijn tenminste zeldzamer ;)
Als je gewoon een bestaande csv-parser in die batch gebruikt lijkt me dit geen enkel probleem. Juist met puntkomma's loop je tegen een situatie aan die kennelijk sporadisch gaat falen op een ";", dat lijkt me juist een drama.. :p

Overigens kun je die 0'en weglaten, zie http://stackoverflow.com/a/14226204

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten

Pagina: 1