varios txt transfertext para macro importar exportar ejemplo docmd desde datos convertir archivos archivo acimportdelim ms-access access-vba ms-access-2010

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)