Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Insertar Comentario con Macro

614 views
Skip to first unread message

maxc

unread,
Oct 14, 2008, 7:14:00 AM10/14/08
to
He creado una macro para introducir un comentario en la celda seleccionada,
de una hoja protegida, sin contraseña.
La macro no funciona como debería si vuelvo a insertar al final de la macro
la instrucción para volver a proteger la hoja. ¿Cómo puedo hacer?

¿Hay una forma para pedir al usuario, en la misma macro, de elegir si quiere
el comentario visible u oculto?
¿Además se puede impostar el Tamaño Automático del Comentario?

Adjunto el código:

Sub Commentario()
ActiveSheet.Unprotect
With ActiveCell.AddComment.Shape.OLEFormat.Object
.Text = ""
End With
SendKeys "%IM~"
ActiveCell.Comment.Visible = True
ActiveCell.Comment.Shape.Select True
ActiveCell.Comment.Visible = False
'¡¡¡¡¡¡¡¡¡¡¡¡¡ si lo pongo no funciona!!!!!!!!!!!!!!!!!
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

max

Héctor Miguel

unread,
Oct 14, 2008, 7:20:08 PM10/14/08
to
hola, !

> He creado una macro para introducir un comentario en la celda seleccionada, de una hoja protegida, sin contrasena.
> La macro no funciona como deberia si vuelvo a insertar al final de la macro la instruccion para volver a proteger la hoja.
> Como puedo hacer?


> Hay una forma para pedir al usuario, en la misma macro, de elegir si quiere el comentario visible u oculto?

> Ademas se puede impostar el Tamano Automatico del Comentario?

1) cuando ejecutas una instruccion "SendKeys" debes tomar en cuenta que "esta" NO SE EJECUTA sino hasta que...
a) se termina la ejecucion del codigo (y cualquier derivacion a otro/s codigo/s)
b) se muestre algun dialogo que requiera de la intervencion del usuario
-> y deberas tener muy en cuenta cual pudiera ser el objeto "activo" cuando se llegara a ejecutar el "SendKeys"

2) por la secuencia de letras en el sendkeys, (pre/a)sumo que intentas que el comentario lleve una imagen de fondo -???-

3) finalmente, el codigo no falla por la reproteccion de la hoja, sino por el sendkeys o alguna otra eventualidad -???-

haz una prueba con este ejemplo (solo asegura una ruta que contenga la imagen que se inserta en el comentario .JPG)

Sub Abcd()
ActiveSheet.Unprotect
With ActiveCell
If .Comment Is Nothing Then .AddComment "": .Comment.Visible = True
.Comment.Shape.Fill.UserPicture "c:\ruta y sub\carpetas donde esta\tu archivo.jpg"
End With
ActiveSheet.Protect
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __

maxc

unread,
Oct 15, 2008, 5:23:01 AM10/15/08
to
Hola Héctor,
He leído tus sugerencias y probado tu código, pero no consigo el resultado
esperado.
El problema es que lo que se VBA lo he aprendido grabando o copiando macros,
para luego modificarlas según las exigencias con la ayuda del F1. Así que voy
probando o pidiendo ayuda.

Te explico lo que quisiera obtener con una macro “para insertar comentario
en la celda seleccionada”:
1) desproteger hoja
2) permitir al usuario de insertar el texto que desea en el comentario
3) Ajustar automáticamente el tamaño del cuadro del comentario
4) Pedir al usuario si quiere mostrar o ocultar el comentario
5) Volver a proteger la hoja

Con mi macro solo consigo los puntos 1 y 2.
Si el problema es la instrucción SendKeys (que copié de otro código),
intuitivamente creo se podría utilizar un Userform (es correcto?), aunque
todavía no soy muy experto en su utilización.

max


"Héctor Miguel" wrote:

> > '¡¡¡¡¡¡¡¡¡¡¡¡¡ si lo pongo no funciona!!!!!!!!!!!!!!!!!

Héctor Miguel

unread,
Oct 15, 2008, 5:13:32 PM10/15/08
to
hola, max !

> He leido tus sugerencias y probado tu codigo, pero no consigo el resultado esperado.

=> y... el resultado "esperado", es... ??? (+/- exactamente)

> ... lo que se VBA lo he aprendido grabando o copiando macros
> para luego modificarlas segun las exigencias con la ayuda del F1.
> Asi que voy probando o pidiendo ayuda.

=> (creo que)... justo es asi como empezamos (casi ?) todos :))

> Te explico lo que quisiera obtener con una macro "ara insertar comentario en la celda seleccionada":


> 1) desproteger hoja
> 2) permitir al usuario de insertar el texto que desea en el comentario

> 3) Ajustar automaticamente el tamano del cuadro del comentario


> 4) Pedir al usuario si quiere mostrar o ocultar el comentario
> 5) Volver a proteger la hoja
>
> Con mi macro solo consigo los puntos 1 y 2.

> Si el problema es la instruccion SendKeys (que copie de otro codigo), intuitivamente
> creo se podria utilizar un Userform (es correcto?), aunque todavia no soy muy experto en su utilizacion.

1) uno de los "detalles" del codigo que expusiste originalmente, es que la instruccion -> SendKeys "%IM~"
"literalmente" lo que hace (excel en espanol) es ejecutar los comandos (del menu) Insertar > Mapa > {enter}
(asumiendo que tienes instalada la aplicacion Microsoft DataMap)

2) otro detalle de lo que solicitas, es que para "ajustar automaticamente el tamano del cuadro de comentario"
(al texto que decida el usuario ?) -> dependera de lo "extenso" que pudiera ser el texto que necesite el usuario -???-

por lo demas (exceptuando el punto del ajuste del tamano del cuadro del comentario)... lo que buscas es +/- lo siguiente:

Sub Insertar_Modificar_Comentario_CeldaActiva()
Dim Texto As String, Mostrar As Boolean
Texto = Trim(InputBox("Indica el texto para el comentario en " & _
ActiveCell.Address, "Paso 1/2"))
If Len(Texto) = 0 Then Exit Sub
Mostrar = MsgBox("Deseas que el comentario quede visible ?", _
vbYesNo + vbQuestion, "Paso 2/2") = vbYes


ActiveSheet.Unprotect
With ActiveCell
If .Comment Is Nothing Then .AddComment ""

.Comment.Shape.TextFrame.Characters.Text = Texto
.Comment.Visible = Mostrar


End With
ActiveSheet.Protect
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la propuesta anterior __

maxc

unread,
Oct 16, 2008, 3:15:01 PM10/16/08
to
Hola Héctor, gracias por tu ayuda.
He probado el código que has sugerido, pero no permite modificar el
comentario existente sino que tienes de volver a escribirlo; probablemente se
puede obtener este resultado con alguna modificación.
En todo caso siguiendo tus sugerencias sobre la instruccion SendKeys, he
probado otras opciones y finalmente he conseguido el objetivo.
Indico la lacro a continuación par quien la pueda necesitar:

Sub Inserta_Modifica_Comentario_con_hoja_protegida()


ActiveSheet.Unprotect
With ActiveCell.AddComment.Shape.OLEFormat.Object
.Text = ""

.AutoSize = True
.LockedText = True
.Height = 34.5
.Width = 52.5


End With
SendKeys "%IM~"
ActiveCell.Comment.Visible = True
ActiveCell.Comment.Shape.Select True
ActiveCell.Comment.Visible = False

ActiveSheet.Protect DrawingObjects:=False
End Sub

max

0 new messages