VBA code voor opslaan als xlsx ipv csv

Status
Niet open voor verdere reacties.

sameh3

Gebruiker
Lid geworden
8 dec 2016
Berichten
10
Hoi Allemaal,

Ik zit met een kleine probleempje, misschien heeft iemand advies.

Ik ben een Macro aan het maken om een bepaalde csv bestand te bewerken in excel 2010. Dit lukt wel maar bij het opslaan wordt het opgeslagen als csv en dit is niet de bedoeling. Ik wil het namelijk opslaan in twee verschillende locaties als xlsx (excel 2010) extentie (waar het ook in verwerkt werd). wat het extra moeilijk maakt is dat de macro verwerkt bestanden met verschillende namen (beginnen allemaal met ThuisP*.csv), en de opgeslagen excel bestand moet worden opgeslagen met hetzelfde naam als de csv bestand. Dit lukt echter niet. de opslaan sub staat hieronder. Heeft iemand een advies hoe ik die kan aanpassen?

Code:
Application.DisplayAlerts = False
ActiveWorkbook.SaveCopyAs Filename:="Y:\ZDexport" & _
    ActiveWorkbook.Name
    ActiveWorkbook.SaveCopyAs Filename:="Y:\ZDgood" & _
    ActiveWorkbook.Name
    ActiveWorkbook.Close savechanges:=False
    Application.Quit
    Application.DisplayAlerts = True
End Sub
 
Laatst bewerkt:
Als je wil opslaan als een ander formaat kun je niet savecopyas gebruiken. Je bent dan aangewezen op saveas
 
Save as heb ik ook geprobeerd met FileFormat:=51 maar ik kom helemaal niet uit, of het werkt niet :(
 
Uhm dat is niet helemaal duidelijk. geeft je wel xlsx als extensie mee? juiste locatie? wordt er wel een file gemaakt? Anders is het erg moeilijk voor ons om gericht te helpen
 
Hoi bedankt voor het antwoorden.
Aanvankelijk met de eerder vermeld code werd er wel een file aangemaakt maar dan csv file, nu heb ik de code aangepast om save as te gebruiken en er wordt geen file aangemaakt!! ik gebruik voor de save as de volgende regel:

Code:
FNAME = ActiveWorkbook.Name
    FNAME = Left(FNAME, Len(FNAME) - 5)
    ActiveWorkbook.SaveAs Filename:="H:\Mijn Documenten\test1" & FNAME & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, _
    ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWorkbook.Close savechanges:=False
 
met deze code staat de file de direct in "mijn documenten" niet in "mijn documenten\test1" Ik neem aan dat je in de goede directory zoekt?

Als je geen foutmelding krijgt is er toch iets vreemds aan de hand. eenzelfde code als hierboven (zonder de filenaam magie) werkt hier zonder problemen.
 
Hoi test deze eens.
Zet de code in een nieuw bestand
mapnamen & locatie evt aanpassen
Deze slaat alle CSV bestanden uit de map csvFolder op als excelbestanden in beide andere mappen xlsxFolder & xlsxFolder1
Code:
Sub dotchie()
Dim CSVfolder As String
Dim XlsFolder As String
Dim XlsFolder1 As String
Dim fname As String
Dim wBook As Workbook
 Application.ScreenUpdating = False
 CSVfolder = "C:\csvFolder\"
 XlsFolder = "C:\xlsxFolder\"
 XlsFolder1 = "C:\xlsxFolder1\"
 fname = Dir(CSVfolder & "*.csv")
 Do While fname <> ""
    Set wBook = Workbooks.Open(CSVfolder & fname, Format:=6, Delimiter:=",")
    wBook.SaveAs XlsFolder & Replace(fname, ".csv", ""), ThisWorkbook.FileFormat
    wBook.SaveAs XlsFolder1 & Replace(fname, ".csv", ""), ThisWorkbook.FileFormat
    wBook.Close False
 fname = Dir
 Loop
  Application.ScreenUpdating = True
End Sub
 
@sameh3:
De naam van een werkboek ophalen zonder afhankelijk te zijn van de extensie kan zo:
FNAME = Split(ActiveWorkbook.Name,".")(0)
 
Ik kwam eindelijk eruit :D bedankt voor de tips en hulp :love:
 
Dit was dus mijn save as code die wel werkt. Het slaat een bewerkt csv extensie bestand op als xlsx bestand in twee locaties (ZDgood en ZD export) :love:

Code:
FNAME = ActiveWorkbook.Name
    FNAME = Left(FNAME, Len(FNAME) - 5)
    ActiveWorkbook.SaveAs Filename:="Y:\ZDexport\" & FNAME & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, _
    ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWorkbook.SaveAs Filename:="Y:\ZDgood\" & FNAME & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, _
    ReadOnlyRecommended:=False, CreateBackup:=False
 
Persoonlijk vind ik het zo wat prettiger lezen
Code:
With ActiveWorkbook
  .SaveAs "Y:\ZDexport\" & Left(.Name, Len(.Name) - 5) & ".xlsx", xlOpenXMLWorkbook
  .SaveAs "Y:\ZDgood\" & Left(.Name, Len(.Name) - 5) & ".xlsx", xlOpenXMLWorkbook
End With

@edmoor,
Code:
FNAME = Split(ActiveWorkbook.Name,".")(0)
is alleen bruikbaar als er maar 1 . in de naam staat. Blijkbaar 1 van de gedachtenkronkels van MS dat er meerdere .. in een bestandsnaam mogen staan en dat de laatste punt de extensie bepaald?:rolleyes:
 
Daar heb je gelijk in :)
Maar je kan wel Ubound(FNAME) gebruiken om de extensie te verkrijgen.
De rest vormt dan de bestandsnaam.
 
Laatst bewerkt:
Daarvoor hebben we

Code:
msgbox createobject("scripting.filesystemobject").getbasename("G:\OF\voorbeeld.xlsx")
en
Code:
msgbox CreateObject("scripting.filesystemobject").GetExtensionName([COLOR=green]"G:\OF\voorbeeld.xls"[/COLOR])

zie bijv. http://www.snb-vba.eu/VBA_Bestanden.html#L_2.3
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan