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
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.