Crear macros mediante comandos

13/06/2007 - 13:43 por Keyhelp | Informe spam
Hola a todos:

Necesitaría saber como puedo hacer una macro mediante un objeto OLE, me
explico:

Tenemos una aplicación que instancia un objeto de word, mediante llamadas a
objeto abrimos el documento, combinamos y grabamos.
Ahora le hemos añadido la posibilidad de proteger el documento para que sea
solo lectura mediante una clave aleatoria.

Dim oAplicacion As New Word.Application
Dim oDocumento As Document

oAplicacion.Documents.Open "c:\temp\documento.doc"
Set oDocumento = oAplicacion.ActiveDocument

oDocumento.Protect wdAllowOnlyReading, , "123"
oDocumento.Save

pero se puede saltar esta protección mediante seleccionar todo - copiar y
pegar en un nuevo documento

Queremos que la opción de copiar esté desactivada, para ello hemos echo una
prueba poniendo una macro que capture este evento y no haga nada

Sub EdiciónCopiar()
'
' EdiciónCopiar Macro
' Copia la selección y la coloca en el Portapapeles
'

End Sub

Pero como nuestro documentos se generan mediante una combinación de
correspondencia, genera un documento limpio, sin macros ni nada que se le
parezca ( como mucho, las propiedades de normal.dot )

¿Se puede añadir esta macro mediante alguna sentencia a nuestro documento?
Algo así como

oDocumento.addMacro = "sub EdiciónCopiar() End Sub"
oDocumento.save

Gracias por adelantado


Francisco López
Dpt. Desarrollo
Keyhelp, S.L.

http://www.keyhelp.net

Preguntas similare

Leer las respuestas

#1 Tux
13/06/2007 - 23:34 | Informe spam
Keyhelp escribió:
Hola a todos:


Pero como nuestro documentos se generan mediante una combinación de
correspondencia, genera un documento limpio, sin macros ni nada que se le
parezca ( como mucho, las propiedades de normal.dot )

¿Se puede añadir esta macro mediante alguna sentencia a nuestro documento?
Algo así como

oDocumento.addMacro = "sub EdiciónCopiar() End Sub"
oDocumento.save

Gracias por adelantado





Hola KeyHelp :)

Podeis añadir al codigo que os genera el nuevo documento o al boton que
empleis para generar un nuevo documento para el mailmerge algo asi :

por e.g:

'[]

Sub Mimacro()


Documents.Add

ActiveDocument.VBProject.VBComponents(1).CodeModule.InsertLines 10, _
"Sub EdiciónCopiar()" & Chr(10) & Chr(10) & "End Sub" _
& Chr(10) & "Sub EdiciónPegar()" & Chr(10) & Chr(10) _
& "End Sub" & Chr(10)


End Sub

'[]

Bien esta macro os copiara en ThisDocument del nuevo documento las dos
macros de [ EdicionCopiar y EdicionPegar ] probarla y me comentais
cualquier duda ok? :)

Saludos
Monica




Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com
Respuesta Responder a este mensaje
#2 Keyhelp
14/06/2007 - 10:37 | Informe spam
Gracias por la respuesta,
Lo he probado y parece que tiene buena pinta si no fuera por el
siguiente mensaje de error que me devuelve

Error '6068' en tiempo de ejecución

El acceso mediante programación al proyecto de Visual Basic no es de
confianza

... y se detiene el proceso.

¿Como puedo hacer que mi Word confíe en mi?
¿Le mando flores, bombones, etc.. ?
¿Lo he perdido para siempre o hay alguna posibilidad entre nosotros?
:-D


Francisco López
Dpt. Desarrollo
Keyhelp, S.L.

http://www.keyhelp.net

"Tux" escribió en el mensaje
news:
Keyhelp escribió:
Hola a todos:




Pero como nuestro documentos se generan mediante una combinación de
correspondencia, genera un documento limpio, sin macros ni nada que se le
parezca ( como mucho, las propiedades de normal.dot )

¿Se puede añadir esta macro mediante alguna sentencia a nuestro
documento?
Algo así como

oDocumento.addMacro = "sub EdiciónCopiar() End Sub"
oDocumento.save

Gracias por adelantado





Hola KeyHelp :)

Podeis añadir al codigo que os genera el nuevo documento o al boton que
empleis para generar un nuevo documento para el mailmerge algo asi :

por e.g:

'[]

Sub Mimacro()


Documents.Add

ActiveDocument.VBProject.VBComponents(1).CodeModule.InsertLines 10, _
"Sub EdiciónCopiar()" & Chr(10) & Chr(10) & "End Sub" _
& Chr(10) & "Sub EdiciónPegar()" & Chr(10) & Chr(10) _
& "End Sub" & Chr(10)


End Sub

'[]

Bien esta macro os copiara en ThisDocument del nuevo documento las dos
macros de [ EdicionCopiar y EdicionPegar ] probarla y me comentais
cualquier duda ok? :)

Saludos
Monica




Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com











Respuesta Responder a este mensaje
#3 Keyhelp
14/06/2007 - 12:16 | Informe spam
Yo me pregunto y yo me respondo
Para que confíe en mi, he de indicar en las propiedades de seguridad que
confíe en los accesos de proyectos de Visual Basic

Herramientas - macros - Seguridad - Editores de confianza - Confiar en el
acceso a proyectos de Visual basic

"Keyhelp" escribió en el mensaje
news:
Gracias por la respuesta,
Lo he probado y parece que tiene buena pinta si no fuera por el
siguiente mensaje de error que me devuelve

Error '6068' en tiempo de ejecución

El acceso mediante programación al proyecto de Visual Basic no es de
confianza

... y se detiene el proceso.

¿Como puedo hacer que mi Word confíe en mi?
¿Le mando flores, bombones, etc.. ?
¿Lo he perdido para siempre o hay alguna posibilidad entre nosotros?
:-D


Francisco López
Dpt. Desarrollo
Keyhelp, S.L.

http://www.keyhelp.net

"Tux" escribió en el mensaje
news:
Keyhelp escribió:
Hola a todos:




Pero como nuestro documentos se generan mediante una combinación de
correspondencia, genera un documento limpio, sin macros ni nada que se
le parezca ( como mucho, las propiedades de normal.dot )

¿Se puede añadir esta macro mediante alguna sentencia a nuestro
documento?
Algo así como

oDocumento.addMacro = "sub EdiciónCopiar() End Sub"
oDocumento.save

Gracias por adelantado





Hola KeyHelp :)

Podeis añadir al codigo que os genera el nuevo documento o al boton que
empleis para generar un nuevo documento para el mailmerge algo asi :

por e.g:

'[]

Sub Mimacro()


Documents.Add

ActiveDocument.VBProject.VBComponents(1).CodeModule.InsertLines 10, _
"Sub EdiciónCopiar()" & Chr(10) & Chr(10) & "End Sub" _
& Chr(10) & "Sub EdiciónPegar()" & Chr(10) & Chr(10) _
& "End Sub" & Chr(10)


End Sub

'[]

Bien esta macro os copiara en ThisDocument del nuevo documento las dos
macros de [ EdicionCopiar y EdicionPegar ] probarla y me comentais
cualquier duda ok? :)

Saludos
Monica




Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com















email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida