• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

csv save as xls

Status
Niet open voor verdere reacties.

sickofitall

Gebruiker
Lid geworden
29 sep 2008
Berichten
375
ik heb al een heel eind zelf kunnen vinden, maar mijn laatste probleem kan ik zelf niet vinden en staat ook niet op het forum

dit is een deel van mijn code:
Code:
Select Case Left(ActiveWorkbook.Name, 3)

    Case "LIQ"
    ChDir "W:\ft\achat\LIQUIDATIE"
    ActiveWorkbook.SaveAs Filename:="W:\ft\achat\LIQUIDATIE\" & ActiveWorkbook.Name & ".xls", FileFormat:=xlNormal
    

    Case "LEV"
    ChDir "W:\ft\achat\LEVTIJD"
    ActiveWorkbook.SaveAs Filename:="W:\ft\achat\LEVTIJD\" & ActiveWorkbook.Name & ".xls", FileFormat:=xlNormal

    Case "STO"
    ChDir "W:\ft\achat\STOCKBREUK"
    ActiveWorkbook.SaveAs Filename:="W:\ft\achat\STOCKBREUK\" & ActiveWorkbook.Name & ".xls", FileFormat:=xlNormal
End Select

ActiveWorkbook.Close

Nu slaat de macro de bestanden wel op als xls MAAR er staat wel nog .csv in de bestandsnaam. Want als ik als test gewoon Msgbox ActiveWorkbook.Name doe, dan krijg ik ook de .csv te zien (bvb "LEVTIJD12345.CSV")

Hoe kan ik ervoor zorgen dat de .csv uit mijn bestandsnaam verdwijnt?

thx!!
 
Begin eerst met codewieden:
Die ChDir is volstrekt overbodig.

Deze code doet hetzelfde als de jouwe

Code:
With ActiveWorkbook
    .SaveAs "W:\ft\achat\" & switch(Left(.Name, 2)="LI","LIQUIDATIE",Left(.Name, 2)="LE","LEVTIJD",Left(.Name, 2)="ST","STOCKBREUK") & "\" & .Name & ".xls"    
   .Close
End With
 
Begin eerst met codewieden:
Die ChDir is volstrekt overbodig.

Deze code doet hetzelfde als de jouwe

Code:
With ActiveWorkbook
    .SaveAs "W:\ft\achat\" & switch(Left(.Name, 2)="LI","LIQUIDATIE",Left(.Name, 2)="LE","LEVTIJD",Left(.Name, 2)="ST","STOCKBREUK") & "\" & .Name & ".xls"    
   .Close
End With

Ah, mijn ChDir was nog van de macrorecorder :)

Uw macro werkt perfect maar het probleem van in mijn beginpost blijft bestaan...
 
Koop eens een boek over VBA, kijk in de hulpfunktie van de VBEditor bij replace (dat heb je voor de methode switch natuurlijk ook al gedaan). Wat je zelf hebt uitgezocht kun je veel beter onthouden.
 
Laatst bewerkt:
Koop eens een boek over VBA, kijk in de hulpfunktie van de VBEditor bij replace (dat heb je voor de methode switch natuurlijk ook al gedaan). Wat je zelf hebt uitgezocht kun je veel beter onthouden.

Zelf zoeken lukt, het vinden daarentegen...
Ik héb een VBA boek, maar blijkbaar is dat te basic. google kan mij ook al niet helpen

Ik heb geprobeerd met Replace maar dat werkt niet (of ik doe wrs wel iets verkeerd)

Heb het nu gedaan met Left en Len() en dat werkt wel.

Code:
With ActiveWorkbook
    .SaveAs "W:\ft\achat\" & Switch(Left(.Name, 2) = "LI", "LIQUIDATIE", Left(.Name, 2) = "LE", "LEVTIJD", Left(.Name, 2) = "ST", "STOCKBREUK") & "\" & Left(.Name, Len(.Name) - 4) & ".xls"
    .Close
End With
 
uit de help

bij mij staat dit in de help:

Code:
Replace, functie
      

Beschrijving

Resulteert in een tekenreeks waarin een opgegeven subtekenreeks een gegeven aantal keer is vervangen door een andere subtekenreeks.

Syntaxis

Replace(expressie, zoek, vervang[, begin[, teller[, vergelijk]]])

De syntaxis van de functie Replace heeft de volgende benoemde argumenten:

Onderdeel Beschrijving 
expressie Vereist. Tekenreeksexpressie met de te vervangen subtekenreeks. 
zoek Vereist. De subtekenreeks die wordt gezocht. 
vervang Vereist. Vervangende subtekenreeks. 
begin Optioneel. Positie in expressie waarop het zoeken naar de subtekenreeks moet beginnen. Als dit argument wordt weggelaten, wordt uitgegaan van 1. 
Teller Optioneel. Aantal maal dat subtekenreeks moet worden vervangen. Als dit argument is weggelaten, is de standaardwaarde –1. Dat betekent dat alle mogelijke vervangingen worden uitgevoerd. 
vergelijk Optioneel. Numerieke waarde die aangeeft welk soort vergelijking bij het evalueren van de subtekenreeksen moet worden uitgevoerd. Zie Instellingen voor een overzicht van de mogelijke waarden. 



Instellingen

Het argument compare kan de volgende waarden bevatten:

Constante Waarde Beschrijving 
vbUseCompareOption –1 
 Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare. 
vbBinaryCompare 0 Voert een binaire vergelijking uit. 
vbTextCompare 1 Voert een tekstvergelijking uit. 
vbDatabaseCompare 2 Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database. 



Resultaatwaarden

Replace geeft de volgende waarden terug:

Als Resultaat is 
expressie de lengte nul heeft Tekenreeks, zonder gegevens ("") 
expressie Null is Een fout. 
zoek leeg is. Kopie van expressie. 
vervang de lengte nul heeft Kopie van expressie waaruit alle instanties van zoek zijn verwijderd. 
start > Len(expressie) Lege tekenreeks 
teller 0 is Kopie van expressie. 



Notities

De resultaatwaarde van de functie Replace is een tekenreeks waarin vervangingen zijn uitgevoerd. Deze vervangingen zijn gestart op de positie, aangegeven in begin en uitgevoerd tot aan het einde van de tekenreeks expressie. Het is geen kopie van de oorsponkelijke tekenreeks vanaf het begin tot aan het einde.
 
bij mij staat dit in de help:

Code:
Replace, functie
      

Beschrijving

Resulteert in een tekenreeks waarin een opgegeven subtekenreeks een gegeven aantal keer is vervangen door een andere subtekenreeks.

Syntaxis

Replace(expressie, zoek, vervang[, begin[, teller[, vergelijk]]])

De syntaxis van de functie Replace heeft de volgende benoemde argumenten:

Onderdeel Beschrijving 
expressie Vereist. Tekenreeksexpressie met de te vervangen subtekenreeks. 
zoek Vereist. De subtekenreeks die wordt gezocht. 
vervang Vereist. Vervangende subtekenreeks. 
begin Optioneel. Positie in expressie waarop het zoeken naar de subtekenreeks moet beginnen. Als dit argument wordt weggelaten, wordt uitgegaan van 1. 
Teller Optioneel. Aantal maal dat subtekenreeks moet worden vervangen. Als dit argument is weggelaten, is de standaardwaarde –1. Dat betekent dat alle mogelijke vervangingen worden uitgevoerd. 
vergelijk Optioneel. Numerieke waarde die aangeeft welk soort vergelijking bij het evalueren van de subtekenreeksen moet worden uitgevoerd. Zie Instellingen voor een overzicht van de mogelijke waarden. 



Instellingen

Het argument compare kan de volgende waarden bevatten:

Constante Waarde Beschrijving 
vbUseCompareOption –1 
 Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare. 
vbBinaryCompare 0 Voert een binaire vergelijking uit. 
vbTextCompare 1 Voert een tekstvergelijking uit. 
vbDatabaseCompare 2 Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database. 



Resultaatwaarden

Replace geeft de volgende waarden terug:

Als Resultaat is 
expressie de lengte nul heeft Tekenreeks, zonder gegevens ("") 
expressie Null is Een fout. 
zoek leeg is. Kopie van expressie. 
vervang de lengte nul heeft Kopie van expressie waaruit alle instanties van zoek zijn verwijderd. 
start > Len(expressie) Lege tekenreeks 
teller 0 is Kopie van expressie. 



Notities

De resultaatwaarde van de functie Replace is een tekenreeks waarin vervangingen zijn uitgevoerd. Deze vervangingen zijn gestart op de positie, aangegeven in begin en uitgevoerd tot aan het einde van de tekenreeks expressie. Het is geen kopie van de oorsponkelijke tekenreeks vanaf het begin tot aan het einde.

Dat klopt! Dat staat bij mij ook...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan