diverse soorten .csv extensies

Status
Niet open voor verdere reacties.

riw

Gebruiker
Lid geworden
30 jan 2017
Berichten
46
Als ik van het bestand "inleesbestand.xlsm" een .csv wil maken dan doe ik dit normaliter via Bestand ->Opslaan als -> CVS UTF8 (door komma's gescheiden)(*.csv) Ik wilde hiervan een voorbeeld bijvoegen maar ik kreeg de melding dat dit niet mogelijk was. Kan dit komen door de .csv extensie?

Als ik het via module 1 wil doen dan wordt het bestand opgeslagen met als bestandsnaam "inleesbestand.csv". In windows verkenner staat bij type Microsoft Exce Comma Separated Values File. Echter als ik het bestand open en dan kies voor opslaan dan geeft het systeem aan .xlsx Als ik het handmatig doe dan staat er CVS UTF8 (door komma's gescheiden)(*.csv)

Als ik het via module 2 wil doen dan wordt het bestand opgeslagen met als bestandsnaam "inleesbestand.csv". In windows verkenner staat bij type Microsoft Exce Comma Separated Values File. Echter als ik het bestand open en dan kies voor opslaan dan geeft het system aan CSV (gescheiden door lijstscheidingstekens) (*.csv). Tevens staat alle invoer vanuit het bronbestand in één cel en zijn de waardes gescheiden met een komma. Ik begrijp dat dit laatste logisch is aangezien het een CSV is. Maar als ik het handmatig doe dan blijft mijn invoer netjes in de cellen staan en komen er geen komma's.

Hoe krijg ik het voor mekaar dat het via vba wordt opgeslagen als

  • CVS UTF8 (door komma's gescheiden)(*.csv)

  • En dat de invoer blijft staan in de cellen.


Bekijk bijlage inleesbestand.xlsm
 
Maak er eens dit van:
Code:
ActiveWorkbook.SaveAs Filename:="Inleesbestand", FileFormat:=xlCSV[COLOR="#FF0000"], local:=True[/COLOR]
 
Maak er eens dit van:
Code:
ActiveWorkbook.SaveAs Filename:="Inleesbestand", FileFormat:=xlCSV[COLOR="#FF0000"], local:=True[/COLOR]

Ik ben sinds 07.00 uur bezig om dit voor mekaar te krijgen. Ik maak om 10.46 uur een bericht aan en om 10.51 is het opgelost.

Ik dank u van harte.
 
Ik heb een kleine aanpassing gedaan.

Ik heb er één tabblad bij gedaan genaamd "invoerblad". De invoer wordt automatisch ook naar het tabblad "inleesbestand" gekopieerd. De code werkt. Echter, zodra ik het tabblad "inleesbestand" verberg krijg ik een foutmelding "Methode copy van klasse mislukt".

Als ik een zoekfunctie gebruik dan kom ik vaak "persnlk.xls" tegen. Volgens mij is dit persoonsgebonden. Het is echter de bedoeling dat meerdere mensen met het bestand kunnen werken. Is hier nog een mauw aan te passen?

Bekijk bijlage Invoerbestand.xlsm
 
Daar komt een kat uit de mouw....
 
Maak er eens dit van in het betreffende document:
Code:
Sub SlaOpAlsCSV()
  Application.DisplayAlerts = False
  Sheets("Inleesbestand").SaveAs Filename:=("Inleesbestand"), FileFormat:=xlCSV, local:=True
  Application.DisplayAlerts = True
End Sub

Daar komt een kat uit de mouw....
:D:p
 
Goedemorgen,

De code heeft het gewenste effect. Bedankt daarvoor. Het heeft ook een ander effect. Zodra de code is uitgevoerd wijzigt de bestandsnaam van het originele bestand ook naar "Inleesbestand.csv". Dit is niet wenselijk omdat ik het originele bestand wil open houden en het zojuist aangemaakte bestand ook wil openen. Dit gaat niet als ze beiden dezelfde bestandsnaam hebben.
Als ik de werkmap wil afsluiten met X dan krijg ik ook de melding "Wilt u de wijzigingen in Inleesbestand.csv opslaan".
 
Ok, iets uitgebreider:
Code:
Sub SlaOpAlsCSV()
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
    With Sheets("Inleesbestand")
        .Visible = True
        .Copy
        .Visible = False
    End With
    
    ActiveWorkbook.SaveAs Filename:=("Inleesbestand"), FileFormat:=xlCSV, local:=True
    ActiveWorkbook.Close savechanges:=False
    
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub
 
Laatst bewerkt:
Dit is niet wenselijk omdat ik het originele bestand wil open houden en het zojuist aangemaakte bestand ook wil openen.

Waartoe ?
 
Ook deze werkt weer top.

Omdat ik het aan te maken werkblad "Inleesbestad.csv" wil opslaan in dezelfde map heb ik het volgende er van gemaakt.
Code:
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & Application.PathSeparator & ("Inleesbestand"), FileFormat:=xlCSV, local:=True

Bovenstaande heeft het gewenste resulaat.

Omdat ik er een kenmerk (dit is een naam die staat in veld A2 van het tabblad "Invoer") aan wilde plakken heb ik het volgende er van gemaakt.
Code:
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & Application.PathSeparator & ("Inleesbestand") & Sheets("Invoer").Range("A2").Value, FileFormat:=xlCSV, local:=True
Ik krijg de melding "Het subscript valt buiten het bereik." Dien ik onderstaande stukje anders te formuleren? En zo ja, hoe dan?
Code:
& Sheets("Invoer").Range("A2").Value
 
Probeer dit eens:
& ThisWorkbook.Sheets("Invoer").Range("A2").Value
 
Code:
Sub M_snb()
    c00 = thisworkbook.path &"\" & sheet1.Cells(2, 1) & ".xlsb"
    
    ThisWorkbook.SaveCopyAs c00
    With GetObject(c00)
       .SaveAs Replace(c00, ".xlsb", ".csv"), 23, local:=-1
       .Close 0
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan