Werkbladen Excel document opslaan als csv

Status
Niet open voor verdere reacties.

DJ.Funny

Gebruiker
Lid geworden
17 jan 2006
Berichten
113
Beste allemaal,


Heb na veel zoeken een mooi script gevonden wat mijn xlsx bestand omzet naar een csv bestand.

Helaas alleen werkblad wat tijdens het opslaan actief was :(.

Zitten googelen e.d. maar krijg het niet voor elkaar om alle werkladen om te zetten naar csv.

Voorbeeld: 12345678.xlsx wordt omgezet naar 12345678.csv echter had het originele bestand 3 werkbladen en zou ik dus bijvoorbeeld het volgende willen krijgen:

12345678_01.csv
12345678_02.csv
12345678_03.csv

En bij 4 werkbladen uiteraard nog een vierde document 12345678_04.csv ;)

Het gaat om deze code:

Code:
Set lstArgs = WScript.Arguments
For I = 0 to lstArgs.Count - 1 ' Loop through each file

    FullName = lstArgs(I)
    FileName = Left(lstArgs(I), InStrRev(lstArgs(I), ".") )

' Create Excel Objects
    Set objWS = CreateObject("Excel.application")
    set objWB = objWS.Workbooks.Open(FullName)
    

    objWS.application.visible=false
    objWS.application.displayalerts=false
'MsgBox FileName
    objWB.SaveAs FileName & "csv", 23
    objWB.SaveAs 
    objWS.Application.Quit
    objWS.Quit   

' Destroy Excel Objects
    Set objWS = Nothing
    set objWB = Nothing
    
Next

Iemand een idee??


Groeten Dirk
 
Ik heb het niet getest maar op deze manier zou je per werkboek door alle werkbladen moeten kunnen lopen en ze dan per werkblad opslaan:
Code:
Dim i
Dim sNaam
For i = 1 to objWB.Worksheets.Count
    sNaaam = objWB.Worksheets(i).Name
Next

Uiteraard zet je dan de verschillende regels van dat voorbeeld op de juiste plek in je eigen routine.
 
Zelf ook zoiets in gedachten maar krijg het niet voor elkaar :mad:?

Even kort wat extra info het betreft hier een vb-script wat ik middels een taak oproep.

c:\testen\vbs\XLSX2CSV.vbs c:\testen\vbs\docs\12345678.xlsx

Het volgende document c:\testen\vbs\docs.12345678.csv wordt aangemaakt.

Meerdere worksheets krijg ik niet voor elkaar.

vbs bijgesloten!


Groeten Dirk
 

Bijlagen

Ik heb na wat knutselen er dit van gemaakt maar resultaat is iig niet dat alle worksheets meegenomen worden!!

Iemand nog een idee?? Help!! :o:o:o

Code:
Set lstArgs = WScript.Arguments
For I = 0 to lstArgs.Count - 1 ' Loop through each file

    FullName = lstArgs(I)
    FileName = Left(lstArgs(I), InStrRev(lstArgs(I), ".") )

    'Create Excel Objects
    Set objWS = CreateObject("Excel.application")
    set objWB = objWS.Workbooks.Open(FullName)
    

    objWS.application.visible=false
    objWS.application.displayalerts=false
    'MsgBox FileName

    For w = 1 To objWB.Worksheets.Count
	
        objWB.Worksheets(w).Activate
    	objWB.SaveAs FileName & ".csv", 23

    Next

objWS.Application.Quit
objWS.Quit   

'Destroy Excel Objects
Set objWS = Nothing
set objWB = Nothing
    
Next
 
Ik gebruik eigenlijk nooit VBS maar Ik heb 'm een beetje aangepast voor je en deze doet het bij mij prima. Hij slaat de CSV bestanden op als Documentnaam_Sheetnaam.csv
Misschien wel even de padnaam ("C:\Diversen\") aanpassen.

Code:
Set lstArgs = WScript.Arguments

If lstArgs.Count >  0 Then
    Set objWS = CreateObject("Excel.application")
    objWS.application.visible = False
    objWS.application.displayalerts = False
Else
    Msgbox "Geen document(en)"
    Wscript.Quit
End If

For I = 0 to lstArgs.Count - 1 ' Loop through each file
    FullName = "C:\Diversen\" & lstArgs(I)
    set objWB = objWS.Workbooks.Open(FullName)

    For w = 1 To objWB.Worksheets.Count	
        objWB.Worksheets(w).Activate
        Filename = objWB.Worksheets(w).Name
        objWB.SaveAs Fullname & "_" & FileName & ".csv", 23
    Next

    objWS.Workbooks.Close
Next

objWS.Application.Quit   
Set objWS = Nothing
set objWB = Nothing
 
Laatst bewerkt:
Hier worden we vrolijk van!!!! Helemal top!! Precies wat mij niet lukt :D

Oeps!! Misschien is het wel zo vriendelijk als ik je even bedank!


BEDANKT!!!

Ik gebruik eigenlijk nooit VBS maar Ik heb 'm een beetje aangepast voor je en deze doet het bij mij prima. Hij slaat de CSV bestanden op als Documentnaam_Sheetnaam.csv
Misschien wel even het padnaam ("C:\Diversen\") aanpassen.

Code:
Set lstArgs = WScript.Arguments

If lstArgs.Count >  0 Then
    Set objWS = CreateObject("Excel.application")
    objWS.application.visible = False
    objWS.application.displayalerts = False
Else
    Msgbox lstargs(0) '"Geen document(en)"
    Wscript.Quit
End If

For I = 0 to lstArgs.Count - 1 ' Loop through each file
    FullName = "C:\Diversen\" & lstArgs(I)
    set objWB = objWS.Workbooks.Open(FullName)

    For w = 1 To objWB.Worksheets.Count	
        objWB.Worksheets(w).Activate
        Filename = objWB.Worksheets(w).Name
        objWB.SaveAs Fullname & "_" & FileName & ".csv", 23
    Next

    objWS.Workbooks.Close
Next

objWS.Application.Quit   
Set objWS = Nothing
set objWB = Nothing
 
Graag gedaan :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan