Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Ever Cerna en Marzo 05, 2016, 07:21:57 am
-
Buenos dias, muchachos
Eh intentado pasar unos datos desde un MSHFlexGrid, a Excel y hasta alli todo ok, el detalle es que intentado ponerle algunos formatos como poner el nombre del titulo, poner en negritam, etc eh estado probando con la MACRO, el detalle es que todo me funciona excepto poner en centrado el titulo no me funciona el codigo que me arroja el macro, al intentar copiar me dice que la variable no esta definida.
En esa parte me arroja el error, es el mismo codigo copie y pega de la MACRO generada del excel.
[b].HorizontalAlignment = xlGeneral[/b][b].VerticalAlignment = xlCenter[/b]
Y el codigo me que me funciona hasta el momento es esto, pero no logro centrarlo, haber si nme da una manito
Private Sub CmdExpExcel_Click()
Dim i As Long, J As Long
Dim objExcel As Object
Dim objWorkbook As Object
On Error Resume Next ' por si se cierra Excel antes de cargar los datos
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add
'Titulo..
objExcel.Range("A1:H1").Select
objExcel.Selection.Merge
objExcel.ActiveCell.FormulaR1C1 = "COMERCIAL ""KLO"""
objExcel.Range("A1:H1").Select
objExcel.Selection.Font.Bold = True
With objExcel.Selection.Font
.Name = "Calibri"
.Size = 36
End With
Set objWorkbook = Nothing
Set objExcel = Nothing
End Sub
-
Hola, no lo probe, pero por lo visto tu error es que utilizas constantes que son de excel y vos no usas referencias utilizas CreateObject por lo tanto esas constantes no están integradas a visual basic, mirando en el examinador de objectos de Excel(VBA) vi cuales son sus valores, asi que tenes que declarar esas constantes en tu proyecto.
Private Const xlCenter = &HFFFFEFF4
Private Const xlGeneral = 1
o bien le pasas el valor directamente
.HorizontalAlignment = 1
.VerticalAlignment = &HFFFFEFF4
espero me ayas entendido. saludos.
-
Buen dia Lea, gracias por responder, se me habia olvidado pasarle la Referencia de "Microsoft Excel ......", asiendo eso efectivamente funciona todo ok.
Aprovechando este, mismo Post, haber si me das otra manito amigo Lea, hasta ahora todo esta perfecto pasa todo mis datos del MSHFlexGrid, al Excel pero lo que estava intendtando, hacer es agregarle unos Items o enumerarlos a los productos que pasan al excel osea algo parecido a esto:
1 - ARROZ 1KL
2 - AZUCAR
3 - ACEITE
: - .....
: - ....
: - ....
Captura:
Ver Imagen: http://s2.subirimagenes.com/imagen/previo/thump_9535691captura.png (http://www.subirimagenes.com/imagen-captura-9535691.html)
De igual manera adjunto la imagen de mas o menos como seria. Como vez los numero que van de 1 al 11 de color rojo, van juntos con la lista segun la cantidad de productos, lo eh estado intentando obviamente con un FOR pero no logro que me funcione.
Por ahora tengo este codigo que pasa todo los datos al excel, adicionalmente a eso queria agregarle los Items o numero correlativos segun la cantidad de productos.
Private Sub CmdExpExcel_Click()
Dim i As Long, J As Long, m As Long
Dim objExcel As Object
Dim objWorkbook As Object
On Error Resume Next ' por si se cierra Excel antes de cargar los datos
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add
For i = 0 To Grid.Rows - 1
Grid.Row = i
For J = 0 To Grid.Cols - 1
Grid.Col = J
objWorkbook.ActiveSheet.Cells(i + 13, J + 1).Value = Grid.Text
Next
Next
End Sub
Haber si me orientas de que forma puedo solucionar ese detalle.
Gracias de antemano.
-
hola si es que entiendo bien de lo que quieres hacer, hay una columna de la imagen que no coincide con el codigo, pero buengo suponiendo que la pusiste manualmente.
creo que es esto lo que queres hacer
Private Sub CmdExpExcel_Click()
Dim i As Long, J As Long, m As Long
Dim objExcel As Object
Dim objWorkbook As Object
On Error Resume Next ' por si se cierra Excel antes de cargar los datos
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add
For i = 0 To Grid.Rows - 1
Grid.Row = i
For J = 0 To Grid.Cols - 1
Grid.Col = J
objWorkbook.ActiveSheet.Cells(i + 13, J + 2).Value = Grid.Text '<--- columna 2 en adelante
Next
objWorkbook.ActiveSheet.Cells(i + 13, 1).Value =i+1 '<--- columna 1
Next
End Sub
-
Gracias Lea, por tu apoyo el codigo si funciona, si logra pasar ase lo que queria pero un detalle, si vez la imagen que puse esos numero que estan de rojo, empieza desde el primer Articulo, hacia abajo, el codigo ase lo que se le pide el detalle es que agarra desde la cabezara obviamente por que se le esta indicando que arranque desde la FILA 13, cambie esa parte le puse para que arranque de la fila 14 pero no funciona no muestra nada, alguna idea del por que no funciona??
Alli le cambie de FILA 13 A 14, pero no me imprime, deberia de imprimir con toda normalidad pero no funciona.
objWorkbook.ActiveSheet.Cells(i + 14, 1).Value =i+1 '<--- columna 1
Gracias, de antemano y por tu tiempo.
-
Hola si tenes razon tenia que empezar desde la fila 14, de todas formas deberia funcionar, no se que decirte, lo mejor seria que subas la planilla para poder probar el código.
Saludos.