Ayuda con exportar

Hola tengo un msflexgrid que busca información de una base de datos accessy lo exporto a excel tengo todo eso bien
Private Sub llenar()
MS.TextMatrix(0, 1) = "Periodo"
MS.TextMatrix(0, 2) = "rut"
MS.TextMatrix(0, 3) = "nombre"
MS.TextMatrix(0, 4) = "cpais"
MS.TextMatrix(0, 5) = "pais"
MS.TextMatrix(0, 6) = "item"
MS.TextMatrix(0, 7) = "monto"
MS.TextMatrix(0, 8) = "cantidad"
fil = 1
Do While Not m1.EOF
MS.Rows = MS.Rows + 1
MS.TextMatrix(fil, 1) = m1!periodo
MS.TextMatrix(fil, 2) = "'" & m1!rut
MS.TextMatrix(fil, 4) = m1!codigopais
MS.TextMatrix(fil, 5) = Combo5.Text
MS.TextMatrix(fil, 6) = "'" & m1!codigoitem
MS.TextMatrix(fil, 7) = m1!monto
MS.TextMatrix(fil, 8) = m1!cantidad
m1.MoveNext
fil = fil + 1
Loop
End Sub
Private Sub exportar_Click()
Dim i As Integer, j As Integer
Dim objExcel As Excel.Application
Dim HojaExcel As Excel.Worksheet
Set objExcel = Excel.Application
objExcel.Workbooks.Add
Set HojaExcel = objExcel.ActiveWorkbook.Worksheets(1)
For i = 1 To MS.Rows - 1
For j = 1 To MS.Cols - 1
objExcel.Cells(i, j) = MS.TextMatrix(i, j)
Next
Next
objExcel.Visible = True
Set HojaExcel = Nothing
Set objExcel = Nothing
End Sub
Pero cuando me muestra los datos en de monto algunos me los muestra como texto los que tienen comillas y los otros como numéricos
Como hacer que me muestre todos como numéricos
Gracias

2 respuestas

Respuesta
1
¿Tienes option explicit habilitado? ¿Dónde declaras las variables?
Seria así:
objExcel.Cells(i, 7) = FormatNumber(objExcel.Cells(i, 7), 0, vbFalse, vbUseDefault, vbFalse)
Hay me sale pero sin los decimales
Proba con 2 donde esta el 0 haber si anda.
Para lo otro así.
Viste como hicimos con rut.
For i = 1 To MS.Rows - 1
For j = 1 To MS.Cols - 1
If j = 3 Then
variable =FormatNumber(objExcel.Cells(i, 6), 2)
objExcel.Cells(i, 6) = variable
End If
next
next
De esta manera vamos a podes controlar con un parate en esa posición y probar cual es la mejor opción para formatear el numero en tu caso
o con format number o con el format de ##,#0.00
Tendrías que probar de las 2 maneras
¿Qué excel usas?
Esta es mi dirección
[email protected] si quieres o podes enviarme el proyecto o la base y el form.
¿Cuándo dice que no coinciden los tipos en que sentencia?
Hay mande la información gracias
variable = FormatNumber(MS.TextMatrix(i, j), 2)
Me dice no coincidan los tipos
Gracias
if j = 3 es la indicación de cuando en la grilla pase por el campo de monto haga el formateo y solo cuando pase por ahí.
variable =FormatNumber(ms.textmatrix(i, j), 2)
Así tienes que probar, disculpas por favor.
Primero hay que formatear lo de la grilla, después una vez hecho esto lo pasamos.
Hola ocupo excel 97 y probé la primera forma
objExcel.Cells(i, 7) = FormatNumber(objExcel.Cells(i, 7), 2, vbFalse, vbUseDefault, vbFalse)
Pero me coloca todos los montos como texto (al lado izquierdo)
Y de la segunda forma no me muestra nada
For i = 1 To MS.Rows - 1
For j = 1 To MS.Cols - 1
If j = 3 Then
variable =FormatNumber(objExcel.Cells(i, 7), 2)
objExcel.Cells(i, 7) = variable
End If
next
next
por que if = 3 que es el 3
Gracias por tu ayuda
Hola entonces seria
If j = 7 Then
variable = FormatNumber(MS.TextMatrix(i, j), 2)
objExcel.Cells(i, 7) = variable
Else
objExcel.Cells(i, j) = MS.TextMatrix(i, j)
End If
Next
Next
Me dice NO COINCIDEN LOS TIPOS
Gracias por tu ayuda
No lo tengo habilitado
Y las variables las declaro en el modulo
Gracias
¿Me mandaste la base?
Así te ayudo por ahí
¿Por qué usas monto con comillas?
Explicame
Si lo del rut me salio gracias ya termine esa pregunta pero ahora tengo problemas con el monto y no le coloco comillas son comas los datos que vienen con comas ejemplos 1234,567
Esos números me salen en el lado izquierdo del excel pero los que están sin, ejemplos 1234567 me salen en el lado derecho
Gracias
Si la única forma que tienes es así:
1) Centras esa columna y listo
2) Formateas el numero ya para que salga con dos decimales 123456,00
Por cualquiera de las dos decime y te ayudo
Ya lo hice pero cuando quiero sumar esos montos no me los toma
Gracias
pd:pero cuando a un numero que tiene, lo marco o le agrego un numero hay me lo toma
Yo los formateo así
hojaexcel.Cells(acu, 9) = FormatNumber(hojaexcel.Cells(acu, 9), 2)
Pruébalo
Grande maestro por hay va pero ahora me desordena los que son numéricos
Pero solo me resulta así
objExcel.Cells(i, 7) = FormatNumber(objExcel.Cells(i, 7), 0)
con 2 o mas no pero con 0 un numero que estaba bien ahora se puso texto
un numero que es 1771450 se coloco 1.177.450 y me lo tomo como texto y antes era numerico
¿Se podrá hacer un if para solo los que son texto?
Gracias saludos
Hola sabes estaba viendo y cuando coloco esto
objExcel.Cells(i, 7) = FormatNumber(objExcel.Cells(i, 7), 0, vbFalse, vbUseDefault, vbFalse)
Hay me sale pero sin los decimales
Si, antes formateas el numero
con un if en la columna
contexcelpat = Format(contexcelpat, "##,##0.00")
Entonces primero lo pasas a formato numérico y después lo formateas como la respuesta anterior
Pruébalo y contame.
La idea es tratar de buscar una manera.
Esta es como yo lo hice y no tuve problemas para sumar.
No maestro me mataste no se como hacer eso sera algo así
Set objExcel = Excel.Application
objExcel.Workbooks.Add
Set HojaExcel = objExcel.ActiveWorkbook.Worksheets(1)
For i = 1 To MS.Rows - 1
For j = 1 To MS.Cols - 1
If objExcel = Format(objExcel, "##,##0.00") Then
objExcel.Cells(i, 6) = FormatNumber(objExcel.Cells(i, 6), 2)
Else
objExcel.Cells(i, j) = MS.TextMatrix(i, j)
End If
Next j
Next i
Gracias por la ayuda y paciencia
Hola maestro gracias si bueno si te das cuenta ocupo 5 bases de datos como puedo hacer como una variable para poder ocupar en las consultas esto me dijeron que podía hacer pero no me funciona si tu sabes alguna otra forma
o capas que lo este haciendo mal
Dim bd_actual As ADODB.Connection
'esto lo pondría como matriz
Dim bd(4) As ADODB.Connection
'luego con poner
Set bd_actual = bd(Combo3.ListIndex)
'ya tienes la asignación hecha
Cada uno de los elementos de la matriz bd sería una de tus 5 bases de datos:bd(0) sería la primera y bd(4) la quinta.
Luego en el evento Clik del combo haces la asignación a la variable bd_actual
Set bd_actual = bd(Combo3.ListIndex)
y el resto es el código que habias escrito en tu primer mensaje.
y esto me dijeron pero no entiendo
select case iconexion
case 1
set conexionunica =New ADODB.Connection
conexionunica.ConnectionString = "dsn=ex2000"
case 2
Set conexionunica = New ADODB.Connection
conexionunica.connectionString = "dsn=ex2001"
Y así hasta terminar.
Validar con tu combo de año que tienes en tu forma, dependiendo del valor en un select le indicas a donde se conecte.
Gracias
Si te das cuenta para todas las consultas ocupo solo ex0 que es el año 2000 y que pasa si seleccionan otro año
es por eso que quiero una variable
Gracias
¿Si voy para argentina te llevare un presente supongo que eres de un equipo de fútbol?
Si maestro ya la mande
Gracias
Lo estoy viendo...
¿Alguna otra duda o consulta así lo miro todo junto?
Me podrías enviar un excel como quedaría todas las consultas. El ideal se podría decir
Guiame para llegar a exportar datos.
Que formulario uso, que botones aprieto
Bien del form1 hay un tipo de menu el primero que es el form2 después seleccionas el año y mes y buscas un código en el país coloca el 112 y luego el botón buscar después el botón exportar
1) Esta en modo exclusivo
2)¿Me pide la base ex?
¿No entiendo porque no armas tablas en vez de tener tantas bases?
Hola maestro quería saber si tienes alguna respuesta
Gracias
Disculpa más Allá del error de formato en excel.
Tienes que replantear toda y todas las base de datos.
Si quiero ayudarte como corresponde es mi deber decirte estas manejando muy mal las bases de datos.
Ejemplo:
Tu base ex2000 solo tiene las tablas de los meses.
La ex2001 también.
En otra tienes los datos de la empresa.
Esta mal trabajado.
Tienes que crear una sola base de datos con tabla.
La base se llama datos o como quieras.
Tendrías las tablas periodo con los campos año, mes, rut.
ETC.
Otra tabla con los datos de la empresa.
Y nada más.
Bueno cualquier duda me gustaría ayudarte en restablecer todas tus bases.
Porque estas trabajando mucho y mal.
Bueno espero poder ayudarte.
Desde el punto de vista analítico es una barbaridad lo que esta haciéndote hacer.
Para practicar un fenómeno, pero para nada practico y no te esta sirviendo de practica.
Saludos leandro
Si háblalo por favor porque estas trabajando mucho y mal.
Y no le veo la gracia como practica.
Es que mira estoy en esto de mi practica en una empresa y mi jefe me dijo que quiere eso osea solo trabajo con 2 bases de datos eso me dijo tienes que hacer una ruta para saber a que bd conectarse una para saber que año y la otra que están los datos pero voy a preguntar
Gracias
No tengo que hacerlo así sabes de alguna forma de usar variables para que todas las bases de datos tengan el mismo nombre me dijeron que si se puede
Lo que te mande el 8/9/05 algo así me dijeron que podía hacer
Gracias
Saludos
Te voy a ser sincero.
Me encantaría ayudarte pero con respecto a las bases de datos están haciéndote trabajar lo peor posible.
No creo poder ayudarte en el tema de base de datos porque es todo lo contrario a como se tiene que manejar una base en si (te convendría usar archivos).
Para todo lo demás estoy a tu disposición y te dejo mi msn [email protected], pero lo que estas haciendo lo vas a tener que remendar y modificar siempre.
Si con una variable pensás poner todas las bases con el mismo nombre, mi amigo es mi obligación para tu futuro en la programación decirte que eso es una burrada.
Si todas tienen el mismo nombre porque estas separadas... no hay razón lógica para trabajarlas por separadas y menos con el mismo nombre.
Perdona por hacerte perder tu tiempo.
Lo lamento.
Respuesta
1
A la hora de mandarlos saca el valor del campo a una variable de tipo integer para que te pase el dato como numero y listo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas