Lijstscheidingsteken wijzigen in vba

Status
Niet open voor verdere reacties.

Trustno1

Terugkerende gebruiker
Lid geworden
13 okt 2000
Berichten
1.332
Weet iemand of het mogelijk is de lijstscheidingsteken in vba te wijzigen. Deze staat in het systeem standaard op ";". Om een csv bestand te maken wil ik deze via een macro kunnen wijzigen naar een komma. Nu werkt dit alleen als ik dit in het configuratiescherm aanpas. Het zou fijn zijn als dit in een macro te wijzigen is.
 
Zet dit achter die opdracht in VBA:
Code:
, Local:=True
 
Als je de code laat zien waarmee je nu het csv bestand aanmaakt kan ik dat laten zien. Maar je zal nu ergens een Workbook.SaveAs of zoiets gebruiken en daar moet dat achter komen.
 
Ik heb deze niet in code staan, maar sla deze handmatig met opslaan als. Maar ik moet eerst in de Windows configuratie de scheidingsteken wijzigen. Dit wil ik eigenlijk in een macro kunnen aanpassen.
 
Ok. Ik had begrepen dat je dat al in VBA deed. Kijk eens naar dit:
Code:
Sub OpslaanAlsCSV()
    [COLOR="#008000"]'Opslaan met komma[/COLOR]
    ThisWorkbook.SaveAs "C:\Diversen\a.csv", FileFormat:=xlCSV
    
    [COLOR="#008000"]'Opslaan met puntkomma[/COLOR]
    ThisWorkbook.SaveAs "C:\Diversen\a.csv", FileFormat:=xlCSV, Local:=True
End Sub

Dan hoef je niets in instellingen te wijzigen, ook niet via een macro.
 
Laatst bewerkt:
Dan wordt als scheidingsteken ; gebruikt. Ik wil deze via een macro aan kunnen passen. De decimalen scheiding kan je bijvoorbeeld met de decimalseparator aanpassen. De lijstscheidingsteken kan ik niet vinden hier je dat in VBA kan wijzigen.
 
Dat kan wel maar is sterk af te raden omdat deze gewijzigd achtergelaten kan worden zonder dat het de bedoeling is en Windows en andere applicaties het ook gebruiken. Dit is de variant voor 32-bit Office.

Code:
Declare Function GetLocaleInfo Lib "kernel32" Alias _
"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, _
ByVal lpLCData As String, ByVal cchData As Long) As Long

Declare Function SetLocaleInfo Lib "kernel32" Alias _
"SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, _
ByVal lpLCData As String) As Boolean

Declare Function GetUserDefaultLCID% Lib "kernel32" ()

Public Const LOCALE_SLIST = &HC

Public Sub Get_locale() [COLOR="#008000"]'Ophalen lijstscheidingteken[/COLOR]

      Dim Symbol As String
      Dim iRet1 As Long
      Dim iRet2 As Long
      Dim lpLCDataVar As String
      Dim Pos As Integer
      Dim Locale As Long
     
      Locale = GetUserDefaultLCID()
     
      iRet1 = GetLocaleInfo(Locale, LOCALE_SLIST, _
      lpLCDataVar, 0)
      Symbol = String$(iRet1, 0)
     
      iRet2 = GetLocaleInfo(Locale, LOCALE_SLIST, Symbol, iRet1)
      Pos = InStr(Symbol, Chr$(0))
      If Pos > 0 Then
           Symbol = Left$(Symbol, Pos - 1)
           MsgBox "Regional Setting = " + Symbol
      End If

End Sub

Public Sub Set_locale() [COLOR="#008000"]'Wijzig lijstscheidingteken[/COLOR]

      Dim Symbol As String
      Dim iRet As Long
      Dim Locale As Long

      Locale = GetUserDefaultLCID()
      Symbol = ";"
      iRet = SetLocaleInfo(Locale, LOCALE_SLIST, Symbol)
     
End Sub
 
Laatst bewerkt:
Ik ga kijken of ik het opslaan ook in een macro kan regelen. Bedankt voor de informatie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan