Formato de celdas

Que tal, valedor:
Mi pregunta, es la siguiente, lo que pasa es que estoy haciendo un formulario en VB y quiero que la información que tengo en mis Text boxes se vaya a una hoja de Excel (eso ya lo puedo hacer) lo que no puedo hacer es centrar ciertos valores en las Celdas y ya intente el xlCenter ¿hay alguna otra opción?, te agradezco la atención
Saludos

1 Respuesta

Respuesta
1
Recuerda que en excel, para dar el formato correcto, se conjugan tanto el formato de la celda, como el formato de los valores que estén en esa celda, por ejemplo, cuando tienes numero formateados como Moneda y tratas de centrarlos horizontalmente, Excel no lo permite, ahora, si me muestras tu código te podría ayudar mejor, ¿necesitaría saber si accedes a Excel a través de referencias o a través de la creación de un objeto?, ¿Si el centrado lo quieres horizontal o vertical? ¿Y qué tipo de información estas enviando a las celdas?, saludos...
Mauricio
P.D. Te agradecería finalizar la pregunta en cuanto este satisfecho con la respuesta
Los datos que estoy moviendo, son simples etiquetas (sin formato), ¿qué puedo hacer?
Reitero, si me muestras tu código te puedo ayudar mejor, ¿envías los datos a un libro nuevo o a uno existente?, si es a uno existente, tal vez ya tenga algún tipo de formato y me imagino que lo que mueves son el "caption" de las etiquetas, no las etiquetas ¿verdad?...
Aquí te envío el código, espero que puedas ayudarme, gracias.
Private Sub cmdEnviarAExcel_Click()
Dim objExcel As Object 'Objeto de la aplicación
Dim objHoja As Object 'Objeto de la hoja de cálculo
Dim blnEjecucion As Boolean 'sí Excel estaba en ejecución
'Captura de errores
On Error Resume Next
'Hace una referencia a la aplicación Excel
Set objExcel = GetObject(, "excel.application")
If Err.Number <> 0 Then
Err.Clear
Set objExcel = CreateObject("excel.application")
blnEjecucion = True
Else
blnEjecucion = False
End If
'Añade un nuevo libro de trabajo si Excel estaba en ejecución
If blnEjecucion Then
objExcel.Workbooks.Add
End If
objExcel.Visible = True
'Referencia a la hoja activa
Set objHoja = objExcel.ActiveSheet
'asigna valores a las celdas de la hoja activa
With objHoja
'Encabezados
.Cells(1, 1).Value = "Nombre de la Empresa"
.Cells(2, 1).Value = frmCalcSalarios.Caption
.Cells(6, 1).Value = "No."
.Cells(6, 2).Value = "NOMBRE"
.Cells(5, 3).Value = "SUELDO"
.Cells(6, 3).Value = "DIARIO"
.Cells(5, 4).Value = "DIAS DE"
.Cells(6, 4).Value = "NOMINA"
.Cells(5, 5).Value = "PROP."
.Cells(6, 5).Value = "SUBSID."
.Cells(5, 6).Value = "FACTOR"
.Cells(6, 6).Value = "SUBSID."
.Cells(5, 7).Value = "FACTOR"
.Cells(6, 7).Value = "INT. IMSS"
.Cells(6, 8).Value = "S.D.I."
.Cells(5, 9).Value = "S.D.I."
.Cells(6, 9).Value = "C/VARIABLES"
.Cells(5, 10).Value = "S.D.I."
.Cells(6, 10).Value = "CORRECTO"
.Cells(5, 11).Value = "SALARIO"
.Cells(6, 11).Value = "BRUTO"
.Cells(5, 13).Value = "CUOTA"
.Cells(6, 13).Value = "IMSS"
.Cells(5, 14).Value = "NETO A"
.Cells(6, 14).Value = "RECIBIR"
End With
'Selecciona la segunda fila solamente para darle formato
'objHoja.Rows("1:2").Select
objExcel.Cells(1, 1).Font.Size = 10
objExcel.Cells(1, 1).Font.Bold = True
objExcel.Cells(2, 1).Font.Size = 10
objExcel.Cells(2, 1).Font.Bold = True
objHoja.Rows("5:6").Select
objExcel.Selection.Font.Size = 8
objExcel.Cells(6, 1).Select
objExcel.ActiveCell.HorizontalAlignment = objExcel.vbCenter
'objExcel.Selection.Alignment = "CenterHorizontally"
'objExcel.Selection.Font.FontStyle = "Bold"
'objExcel.Selection.NumberFormat = "$##.###.##"
'Guarda el libro de trabajo
'objExcel.Save ("C:\Generado por VB.XLS")
Set objHoja = Nothing 'Elimina la referencia a la hoja
'objExcel.ActiveWorkBook.Close False
'If Not (blnEjecucion) Then 'Si no estaba en ejecución
'objExcel.Quit 'Finaliza Excel
'End If
Set objExcel = Nothing 'Elimina la referencia a Excel
End Sub
No se si te has leído algo de objetos y propiedades, pero tu error esta en eso, veamos:
Tienes estas lineas
objExcel.Cells(6, 1).Select
objExcel.ActiveCell.HorizontalAlignment = objExcel.vbCenter
En tu primer mensaje me decías que ya habías probado el xlCenter entonces supongo que tenias algo así
objExcel.Cells(6, 1).Select
objExcel.ActiveCell.HorizontalAlignment = xlCenter
Y esta bien usada, solo que esta bien usada si la usas desde "dentro" de Excel, o sea con VBA, por que xlCenter es una "constante" del VBA, pero tu estas en VB y VB no sabes que constantes maneja Excel, para que lo sepa, hay dos formas, y estas dependen del método usado para manejar Excel, si usas referencias, sólito lo debe de reconocer, pero como estas "creando" el objeto, entonces le tienes que decir tu, el valor de esta constante, después de la declaración de tus variables, agrega esta constante
Const xlCenter As Long = -4108
y ahora si, veras que tus lineas funcionaran muy bien..
objExcel.Cells(6, 1).Select
objExcel.ActiveCell.HorizontalAlignment = xlCenter
En lo personal uso el mismo método que tu para controlar y tener acceso a alguna aplicación del Office, si bien tiene como desventaja que es un poco más lenta, tiene la gran ventaja de que es independiente de la versión de Excel a la que accedas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas