ms access - txt - La exportación CSV de una consulta de acceso limita los valores de flotación(simple/doble) a 2 decimales
macro para importar datos de excel a access (3)
Lo siguiente producirá 8 decimales:
Dim dblFld As Double
dblFld = 2197.5678
Debug.Print dblFld
Debug.Print Format(dblFld, "#,##0.00000000")
Estoy buscando horas para cambiar la cantidad de decimales a 8, en lugar de 2 con acceso a VBA. Encontré algunas soluciones para cambiar las propiedades del sistema usando esta etiqueta:
Const público LOCALE_ILZERO = & H12
pero no funciona y no sé cómo podría cambiar esto para mi programa, independientemente de la computadora que usa este programa.
¿Alguien podría ayudarme?
Después de luchar con este problema y descubrir que podía exportar la tabla / consulta de Access a Excel y luego guardarla como CSV a partir de ahí, automaticé el proceso así:
Public Sub ExportToCsvViaExcel(ItemToExport As String, _
DestinationFileSpec As String, _
Optional IncludeFieldNames As Boolean = True)
Const TemporaryFolder = 2
Const xlUp = -4162
Const xlCSVWindows = 23
Dim xlApp As Object '' Excel.Application
Dim xlWorkbook As Object '' Excel.Workbook
Dim fso As Object '' FileSystemObject
Dim TempFileSpec As String
Set fso = CreateObject("Scripting.FileSystemObject")
TempFileSpec = fso.GetSpecialFolder(TemporaryFolder) & "/" & fso.GetTempName & ".xls"
Set fso = Nothing
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, ItemToExport, TempFileSpec, False
Set xlApp = CreateObject("Excel.Application")
Set xlWorkbook = xlApp.Workbooks.Open(TempFileSpec)
If Not IncludeFieldNames Then
xlApp.Rows("1:1").Select
xlApp.Selection.Delete Shift:=xlUp
End If
xlWorkbook.SaveAs DestinationFileSpec, xlCSVWindows
xlWorkbook.Close False
Set xlWorkbook = Nothing
xlApp.Quit
Set xlApp = Nothing
Kill TempFileSpec
End Sub
El código anterior no fuerza el número de decimales a 8 (ni a ningún otro número), solo emite tantos como hay.
Por lo que sé, la única forma de cambiar el comportamiento de redondeo / truncamiento para las exportaciones de CSV desde Access es abrir las "Opciones regionales y de idioma" en el Panel de control de Windows, hacer clic en el botón "Personalizar este formato ..." en el Pestaña "Formatos", luego cambie el valor "Núm. De dígitos después del decimal" en la pestaña "Números":
( 2
es un valor predeterminado muy común. En el cuadro de diálogo anterior lo he cambiado a 5
).
No estoy al tanto de ninguna forma de cambiar ese valor de VBA, y tengo mis dudas de que al hacerlo cambiaría el comportamiento de la instancia de acceso actualmente en ejecución de todos modos.
Muchas gracias, funciona perfectamente. Llamé a la función así:
dokumentpath = "C:/Users/" & GetUser() & "/Documents/Exportet_Table.csv"
Call ExportToCsvViaExcel("T_CUSTOMERS", dokumentpath, True)
MsgBox ("The Table T_CUSTOMERS was sucessfully exportet to: " & dokumentpath)