Cambiar Configuración Regional

Respuesta de
a
Usuario
Hola Denciso:
Existe alguna manera de cambiar el formato numérico de la configuración decimal (Ej: "," ¿decimal por "." o Formato de Fecha Corta "dd-mm-aa" por "dd-mm-aaaa") desde visual basic? Y si no esmucho pedir. ¿Cómo?
Santiago

PD: Es para sistemas con Windows 95,98,9x, Y2K y XP con permisos de administrador.
Experto
La función que tienes que usar es SetLocaleInfo y lo que puedes cambiar viene dado por las constantes LOCALE_*. La declaración de la función y las constantes es la siguiente:

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

Public Const LOCALE_ICENTURY = &H24 ' especificador de formato de siglo
Public Const LOCALE_ICOUNTRY = &H5 ' código del país
Public Const LOCALE_ICURRDIGITS = &H19 ' número de dígitos de la moneda local
Public Const LOCALE_ICURRENCY = &H1B ' modo de moneda positiva
Public Const LOCALE_IDATE = &H21 ' orden del formato de fecha corta
Public Const LOCALE_IDAYLZERO = &H26 ' número de ceros iniciales en el campo día
Public Const LOCALE_IDEFAULTCODEPAGE = &HB ' página de códigos predeterminada
Public Const LOCALE_IDEFAULTCOUNTRY = &HA ' código predeterminado del país
Public Const LOCALE_IDEFAULTLANGUAGE = &H9 ' Id. predeterminado del idioma
Public Const LOCALE_IDIGITS = &H11 ' número de dígitos fraccionarios
Public Const LOCALE_IINTLCURRDIGITS = &H1A ' nº de dígitos de la moneda internacional
Public Const LOCALE_ILANGUAGE = &H1 ' Id. de idioma
Public Const LOCALE_ILDATE = &H22 ' orden del formato de fecha larga
Public Const LOCALE_ILZERO = &H12 ' número de ceros iniciales de decimales
Public Const LOCALE_IMEASURE = &HD ' 0 = métrico, 1 = EE.UU.
Public Const LOCALE_IMONLZERO = &H27 ' número de ceros iniciales en el campo mes
Public Const LOCALE_INEGCURR = &H1C ' modo de moneda negativa
Public Const LOCALE_INEGSEPBYSPACE = &H57 ' símbolo de moneda separado por un espacio de cantidad negativa
Public Const LOCALE_INEGSIGNPOSN = &H53 ' posición del signo negativo
Public Const LOCALE_INEGSYMPRECEDES = &H56 ' símbolo de moneda precede a cantidad negativa
Public Const LOCALE_IPOSSEPBYSPACE = &H55 ' símbolo de moneda separado por un espacio de cantidad positiva
Public Const LOCALE_IPOSSIGNPOSN = &H52 ' posición del signo positivo
Public Const LOCALE_IPOSSYMPRECEDES = &H54 ' símbolo de moneda precede a cantidad positiva
Public Const LOCALE_ITIME = &H23 ' especificador de formato de hora
Public Const LOCALE_ITLZERO = &H25 ' número de ceros iniciales en el campo hora
Public Const LOCALE_NOUSEROVERRIDE = &H80000000 ' no usa sustituciones del usuario
Public Const LOCALE_S1159 = &H28 ' designador de AM
Public Const LOCALE_S2359 = &H29 ' designador de PM
Public Const LOCALE_SABBREVCTRYNAME = &H7 ' nombre abreviado del país
Public Const LOCALE_SABBREVDAYNAME1 = &H31 ' nombre abreviado para Lunes
Public Const LOCALE_SABBREVDAYNAME2 = &H32 ' nombre abreviado para Martes
Public Const LOCALE_SABBREVDAYNAME3 = &H33 ' nombre abreviado para Miércoles
Public Const LOCALE_SABBREVDAYNAME4 = &H34 ' nombre abreviado para Jueves
Public Const LOCALE_SABBREVDAYNAME5 = &H35 ' nombre abreviado para Viernes
Public Const LOCALE_SABBREVDAYNAME6 = &H36 ' nombre abreviado para Sábado
Public Const LOCALE_SABBREVDAYNAME7 = &H37 ' nombre abreviado para Domingo
Public Const LOCALE_SABBREVLANGNAME = &H3 ' nombre del idioma abreviado
Public Const LOCALE_SABBREVMONTHNAME1 = &H44 ' nombre abreviado para Enero
Public Const LOCALE_SABBREVMONTHNAME10 = &H4D ' nombre abreviado para Octubre
Public Const LOCALE_SABBREVMONTHNAME11 = &H4E ' nombre abreviado para Noviembre
Public Const LOCALE_SABBREVMONTHNAME12 = &H4F ' nombre abreviado para Diciembre
Public Const LOCALE_SABBREVMONTHNAME13 = &H100F
Public Const LOCALE_SABBREVMONTHNAME2 = &H45 ' nombre abreviado para Febrero
Public Const LOCALE_SABBREVMONTHNAME3 = &H46 ' nombre abreviado para Marzo
Public Const LOCALE_SABBREVMONTHNAME4 = &H47 ' nombre abreviado para Abril
Public Const LOCALE_SABBREVMONTHNAME5 = &H48 ' nombre abreviado para Mayo
Public Const LOCALE_SABBREVMONTHNAME6 = &H49 ' nombre abreviado para Junio
Public Const LOCALE_SABBREVMONTHNAME7 = &H4A ' nombre abreviado para Julio
Public Const LOCALE_SABBREVMONTHNAME8 = &H4B ' nombre abreviado para Agosto
Public Const LOCALE_SABBREVMONTHNAME9 = &H4C ' nombre abreviado para Septiembre
Public Const LOCALE_SCOUNTRY = &H6 ' nombre traducido del país
Public Const LOCALE_SCURRENCY = &H14 ' símbolo de moneda local
Public Const LOCALE_SDATE = &H1D ' separador de fecha
Public Const LOCALE_SDAYNAME1 = &H2A ' nombre largo para Lunes
Public Const LOCALE_SDAYNAME2 = &H2B ' nombre largo para Martes
Public Const LOCALE_SDAYNAME3 = &H2C ' nombre largo para Miércoles
Public Const LOCALE_SDAYNAME4 = &H2D ' nombre largo para Jueves
Public Const LOCALE_SDAYNAME5 = &H2E ' nombre largo para Viernes
Public Const LOCALE_SDAYNAME6 = &H2F ' nombre largo para Sábado
Public Const LOCALE_SDAYNAME7 = &H30 ' nombre largo para Domingo
Public Const LOCALE_SDECIMAL = &HE ' separador de decimales
Public Const LOCALE_SENGCOUNTRY = &H1002 ' nombre del país en inglés
Public Const LOCALE_SENGLANGUAGE = &H1001 ' nombre del idioma en inglés
Public Const LOCALE_SGROUPING = &H10 ' agrupación de dígitos
Public Const LOCALE_SINTLSYMBOL = &H15 ' símbolo de moneda internacional
Public Const LOCALE_SLANGUAGE = &H2 ' nombre traducido del idioma
Public Const LOCALE_SLIST = &HC ' separador de elementos de lista
Public Const LOCALE_SLONGDATE = &H20 ' cadena de formato de fecha larga
Public Const LOCALE_SMONDECIMALSEP = &H16 ' separador de decimales en moneda
Public Const LOCALE_SMONGROUPING = &H18 ' agrupación de moneda
Public Const LOCALE_SMONTHNAME1 = &H38 ' nombre largo para Enero
Public Const LOCALE_SMONTHNAME10 = &H41 ' nombre largo para Octubre
Public Const LOCALE_SMONTHNAME11 = &H42 ' nombre largo para Noviembre
Public Const LOCALE_SMONTHNAME12 = &H43 ' nombre largo para Diciembre
Public Const LOCALE_SMONTHNAME2 = &H39 ' nombre largo para Febrero
Public Const LOCALE_SMONTHNAME3 = &H3A ' nombre largo para Marzo
Public Const LOCALE_SMONTHNAME4 = &H3B ' nombre largo para Abril
Public Const LOCALE_SMONTHNAME5 = &H3C ' nombre largo para Mayo
Public Const LOCALE_SMONTHNAME6 = &H3D ' nombre largo para Junio
Public Const LOCALE_SMONTHNAME7 = &H3E ' nombre largo para Julio
Public Const LOCALE_SMONTHNAME8 = &H3F ' nombre largo para Agosto
Public Const LOCALE_SMONTHNAME9 = &H40 ' nombre largo para Septiembre
Public Const LOCALE_SMONTHOUSANDSEP = &H17 ' separador de miles en moneda
Public Const LOCALE_SNATIVECTRYNAME = &H8 ' nombre nativo del país
Public Const LOCALE_SNATIVEDIGITS = &H13 ' ASCII 0-9 nativo
Public Const LOCALE_SNATIVELANGNAME = &H4 ' nombre nativo del idioma
Public Const LOCALE_SNEGATIVESIGN = &H51 ' signo negativo
Public Const LOCALE_SPOSITIVESIGN = &H50 ' signo positivo
Public Const LOCALE_SSHORTDATE = &H1F ' cadena de formato de fecha corta
Public Const LOCALE_STHOUSAND = &HF ' separador de miles
Public Const LOCALE_STIME = &H1E ' separador de hora
Public Const LOCALE_STIMEFORMAT = &H1003 ' cadena de formato de hora

Y un ejemplo....

Call SetLocaleInfo(GetSystemDefaultLCID(), LOCALE_SDECIMAL, ".")

Espero que te sirva...