Excel - Rango de Datos en un UserForm
Estimados:
Primero quiero saludarlos atentamente. Estoy desarrollando una aplicación en excel y necesito desplegar un UserForm con información que está en una hoja del mismo archivo. Para ser más específico, desde una hoja (hoja1) llamo a un UserForm mediante una llamada a una macro (UserForm1.Show). Lo que necesito es que el UserForm desplegado contenga un rango de celdas (preferiblemente en formato de imagen) de otra hoja en el mismo libro (Rango(A1:K50) ubicado en hoja2). Si pueden ayudarme, les estaré muy agradecido. Atte., Juan Pablo También te puede interesar...
Ya te respondi en emagister.
Abraham
Abraham:
Muchas Gracias. No había actualizado la página por lo que no vi la respuesta. Lamentablemente yo tengo Excel 2003 y no funciona la solución dada, incluso agregando las componente Microsoft Office XP Web. Respecto a lo mismo, quisiera que el rango mostrado en la UserForm fuese una imagen del rango de excel solicitado, esto para no perder el formato, ya que en algún momento agregué una excel en el formulario, pero no me permitió conservar el formato original. Probé también con la función de Excel "Cámara", pero no me permite grabar la macro. En definitiva he intentado varias soluciones y creo que la más recomendable es usar un OLE que tiene Visual Basic, pero que no puedo encontrar en VBA. Nuevamente, si tienes alguna solución, te la agradecería muchísimo. Atte., Juan Pablo
Ya, voy entendiendo mejor. Tal y como tu dices, el dilema de usar, por ejemplo un spreadsheet, es que si bien se pueden ver los datos de la hoja de excel que uno quiera, pues no asi el formato, aunque a mi entender no le veo la necesidad, pero bueno. Siguiendo con tu idea de verlo como imagen, primero en un userform inserta un control refedit, un control image y un boton. Luego, en el modulo del userform, inserta esye codigo (casi todo es de Fernando Arroyo, yo solo le he variado un par de cosas)
Private Sub CommandButton1_Click() Dim choObj As ChartObject, chGráf As Chart, ptImagen As Object Dim blnGuardado As Boolean Dim rango1 As Range Dim nombre As String Set rango1 = Range(Me.RefEdit1.Value) rango1.CopyPicture _ appearance:=xlScreen, _ Format:=xlPicture Set choObj = ActiveSheet.ChartObjects.Add(0, 0, 800, 600) Set chGráf = choObj.Chart choObj.Activate chGráf.ChartArea.Select chGráf.Paste Set ptImagen = chGráf.Pictures(1) ptImagen.Left = 0 ptImagen.Top = 0 choObj.Border.LineStyle = xlNone choObj.Width = ptImagen.Width + 7 choObj.Height = ptImagen.Height + 7 blnGuardado = chGráf.Export( _ Filename:="C:\ImagenExcel.GIF", filtername:="GIF") If Not blnGuardado Then MsgBox _ prompt:="Problemas al guardar la imagen.", _ Buttons:=vbOKOnly + vbExclamation choObj.Delete Image1.Picture = LoadPicture("c:\ImagenExcel.GIF") Set choObj = Nothing Set chGráf = Nothing Set ptImagen = Nothing Set rango1 = Nothing End Sub en tonces, activas el userform, con el control refedit, seleccionas el rango que deseas ver, le das clcik al botn y mira lo que sucede Abraham
Abraham:
Te agradezco mucho por tu apoyo en este problema. Utilicé el código que me enviaste (agradezco también a Fernando Arroyo) y pude resolver el problema. La única diferencia es que el rango que deseaba presentar en el UserForm era fijo y no variable según lo que tu me enviaste, pero sólo modifiqué pequeñas cosas. Desde ya estoy a tu servicio en lo que te pueda ayudar y espero participar más activamente en este tipo de discuciones. Un abrazo, Juan Pablo Contreras M.
Estimado amigo, que bueno que se resolvio tu dilema, en todo caso, sobre los rangos, ya sabes como hacer si en algun momento necesitas que estos sean variables
Abraham
Hola, perdón que me meta en este foro. Es que estoy haciendo una aplicación parecida y necesito saber de qué manera le puedo pedir a la macro que me guarde la imagen como *.jpg o cualquier otro formato.
yo estoy utilizando este código, y en el userform 3 hay un boton que me gustaria que te guardara esto como imagen. Dim C As Chart 'Dim sFileName$ On Error Resume Next sFileName = ActiveWorkbook.Path & "\" & Mid(CStr(Rnd), 3) & ".jpg" Set C = Sheets("MMNN") C.Export sFileName If Dir(sFileName) <> "" Then UserForm3.Image1.Picture = LoadPicture(sFileName) End If Set C = Nothing Kill sFileName UserForm3.Show gracias Borrar celdas CONTAR CELDAS DE TEXTO |