codigo con sendkeys

07/03/2006 - 16:03 por Fabian | Informe spam
Hola a todos!
Escribi esto, funciona bien hasta que quiero grabar por segunda vez, ya lo
revise y no me doy cuenta como debo seguir, agradecido si alguien me puede
ayudar.

Sub CrearResguardo()
Ruta = ThisWorkbook.Path
If Dir("" & Ruta & "\Resguardo.xls") = "" Then
Set NewBook = Workbooks.Add: NewBook.SaveAs Filename:="" & Ruta &
"\Resguardo.xls"
Workbooks("Resguardo.xls").Close savechanges:=True
Workbooks.Open Filename:="" & Ruta & "\Resguardo.xls"
Application.SendKeys "%{f11}^{r}{end}~", True
Application.SendKeys "Private Sub Workbook_Open~", True
Application.SendKeys "Application.EnableEvents=False{tab}{down 2}", True
Application.SendKeys "Private Sub Workbook_BeforeClose{(}Cancel As
Boolean{)}~", True
Application.SendKeys "Application.EnableEvents=True{tab}{down 2}", True
Application.SendKeys "%{f4}" 'Hasta aqui funciona.
'Workbooks("Resguardo.xls").Close savechanges:=True
End If
End Sub

Preguntas similare

Leer las respuestas

#1 Fabian
08/03/2006 - 03:39 | Informe spam
Sub CrearResguardo()
Application.EnableEvents = False
Ruta = ThisWorkbook.Path
If Dir("" & Ruta & "\Resguardo.xls") = "" Then
Set NewBook = Workbooks.Add: NewBook.SaveAs Filename:="" & Ruta &
"\Resguardo.xls"
Application.SendKeys "%{f11}^{r}{end}~", True
Application.SendKeys "Private Sub Workbook_Open~", True
Application.SendKeys "Application.EnableEvents=False{tab}{down 2}", True
Application.SendKeys "Private Sub Workbook_BeforeClose{(}Cancel As
Boolean{)}~", True
Application.SendKeys "Application.EnableEvents=True{tab}{down 2}", True
Application.SendKeys "%{a}~", True
Application.SendKeys "+{f7}", True
Application.SendKeys "^w", True
End If
Application.EnableEvents = True
End Sub
Respuesta Responder a este mensaje
#2 Héctor Miguel
08/03/2006 - 04:53 | Informe spam
hola, Fabian !

solo unos comentarios [un tanto]... 'al margen' :D
1) no alcanzo a entender el sentido de 'agregar' codigo en los modulos de [eventos en] un libro 'vacio' para...
-> inhabilitar los eventos al abrir el libro 'vacio'...
-> 'mantenerlos' inactivos mientras dicho libro esta abierto...
-> y re-habilitarlos al cerrar 'el libro' -?-
2) [probablemente] seria mas 'conveniente' dejar 'activa' la ultima instruccion de tu mensaje anterior...
-> 'Workbooks("Resguardo.xls").Close savechanges:=True
[obviamente]... despues de hacer un: -> Application.SendKeys "%{f4}"
3) la 'nueva forma'... podria 'fallar' si el codigo de ejecuta en una version NO castellano [p.e.]
la instruccion: -> Application.SendKeys "%{a}~", True
=> 'activa' el menu Archivo [en castellano] y 'ejecuta' el primer comando de dicho menu
[pero...] la ventana del editor de vba... se queda 'abierta' -?-

[a menos que solo estes 'haciendo pruebas']... comentas algun otro detalle ?
saludos,
hector.

Sub CrearResguardo()
Application.EnableEvents = False
Ruta = ThisWorkbook.Path
If Dir("" & Ruta & "\Resguardo.xls") = "" Then
Set NewBook = Workbooks.Add: NewBook.SaveAs Filename:="" & Ruta & "\Resguardo.xls"
Application.SendKeys "%{f11}^{r}{end}~", True
Application.SendKeys "Private Sub Workbook_Open~", True
Application.SendKeys "Application.EnableEvents=False{tab}{down 2}", True
Application.SendKeys "Private Sub Workbook_BeforeClose{(}Cancel As Boolean{)}~", True
Application.SendKeys "Application.EnableEvents=True{tab}{down 2}", True
Application.SendKeys "%{a}~", True
Application.SendKeys "+{f7}", True
Application.SendKeys "^w", True
End If
Application.EnableEvents = True
End Sub
Respuesta Responder a este mensaje
#3 Manuel Romero
08/03/2006 - 15:29 | Informe spam
Porque mejor no usas las herramientas de extensibilidad, activa la
siguiente referencia en tu proyecto

Microsoft Visual Basic for Applications Extensibility 5.3

Hola a todos!
Escribi esto, funciona bien hasta que quiero grabar por segunda vez, ya lo
revise y no me doy cuenta como debo seguir, agradecido si alguien me puede
ayudar.

Sub CrearResguardo()
Ruta = ThisWorkbook.Path
If Dir("" & Ruta & "\Resguardo.xls") = "" Then
Set NewBook = Workbooks.Add: NewBook.SaveAs Filename:="" & Ruta &
"\Resguardo.xls"
Workbooks("Resguardo.xls").Close savechanges:=True
Workbooks.Open Filename:="" & Ruta & "\Resguardo.xls"
Application.SendKeys "%{f11}^{r}{end}~", True
Application.SendKeys "Private Sub Workbook_Open~", True
Application.SendKeys "Application.EnableEvents=False{tab}{down 2}", True
Application.SendKeys "Private Sub Workbook_BeforeClose{(}Cancel As
Boolean{)}~", True
Application.SendKeys "Application.EnableEvents=True{tab}{down 2}", True
Application.SendKeys "%{f4}" 'Hasta aqui funciona.
'Workbooks("Resguardo.xls").Close savechanges:=True
End If
End Sub
Respuesta Responder a este mensaje
#4 Fabian
09/03/2006 - 00:25 | Informe spam
Hola Héctor, gracias por contestar, en realidad si cometi un horror, la
linea de codigo que habilita los eventos al cerrar, por supuesto no va a
funcionar porque los eventos estan en falso, pero no es necesaria esa linea
de codigo.
La funcion del archivo es como lo dice su nombre "respaldar" una base de
datos. Primero te cuento que la base tambien tiene varias estadisticas y
procesos automaticos que cargan datos en la misma, formulas que se cargan
con macros mientras se cargan los datos, etc. El archivo tiene ya unos 7
megas, lo que dificulta grabar con cada nueva linea de datos, entonces, con
cada linea nueva el archivo de resguardo se abre, copia la nueva linea,
graba y se cierra en un abrir y cerrar de ojos, funcionó a la perfeccion con
cuelgues y/o accidentes varios, pero con la salvedad que, solo yo, puedo
desactivar los eventos de la hoja donde hay que reponer los datos, esos
eventos no te dejan hacer un simple copiar y pegar, entonces se me ocurrió
lo del codigo para desactivar los eventos cuando se abre el resguardo, y que
cualquier persona pueda reponer los datos perdidos, después para reactivar
los eventos solo tiene que grabar, cerrar y abrir la base, te paso unos
detalles mas. Esta base solo contiene datos del 2006, por lo que tambien
guarda en una base de datos de Access por medio de dao, (ahi estan 2004 2005
y 2006), tambien por medio de dao hago consultas - estadisticas listados con
listbox e impresiones, comparaciones, etc desde Excel, ¡y todo esto funciona
! por supuesto gracias a la lista y a tu ayuda invaluable.
Con respecto a Microsoft Visual Basic for Applications Extensibility 5.3 ,
hace no se cuanto tiempo hicieron una consulta y la respondió Héctor, tengo
el codigo guardado desde esa fecha, y tiene mezclado sendkeys con 5.3.
Si tienen algun ejemplo de como agregar codigo en vez de borrarlo
agradecido. Siempre es bueno tener mas de una forma de que excel haga lo que
necesito.
Saludos Manuel y Héctor!!!

Ahi va el ejemplo.

Sub borrarcodigos()
Dim Hoja As Worksheet
Dim VBCodeMod As codemodule
Dim Inicio As Long
Dim Final As Long
Application.SendKeys "%{h}{m}{s}{f}{tab 2}{v}{n}~", True
For Each Hoja In ThisWorkbook.Worksheets
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents _
(Hoja.Name).codemodule
With VBCodeMod
Inicio = 1
Final = .CountOfLines
.DeleteLines Inicio, Final
End With
Next

For x = 1 To 8
n = n + 1
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents _
("Módulo" & n).codemodule
With VBCodeMod
Inicio = 1
Final = .CountOfLines
.DeleteLines Inicio, Final
End With
Next x
End Sub


hola, pepe !

... codigo que elimina las macros de un libro de una sola hoja, aqui esta:


[...]
... funciona muy bien... pero... protejí el proyecto VBA y... no me borra


las macros
... faltara añadir unas lineas de desproteccion para poder borrar las


macros [...]

[hasta donde se] quitar contrseñas a proyectos de macros [vba]... por
macros...
1° requiere 'enviar' una secuencia de teclas sendkeys al proyecto de
macros...
[por omision] se esta 'afectando' ->al libro 'activo'<- [en la interfase
de hojas de calculo]
2° [ademas] para estar 'en condiciones' de quitar passwords al vba de 'X'
libro [en especifico]...
nos 'tendremos que' asegurar de...
- abrir el editor vba...
- cerrar TODA 'instancia' de modulo abierto...
- cerrar el editor de vba
- 'activar' el libro 'apropiado'
- 'repetir' la secuencia de teclas, pero ahora incluyendo la clave de
proteccion del proyecto
3° NO 'olvidar' que, una vez 'desprotegido' un proyecto vba... ->seguira SIN
password<- [en la sesion]
aun [re]protegiendolo, sera indispensable cerrarlo y abrirlo de nuevo
para que 'se active' la [re]proteccion
4° [solo comentarte que] el codigo que estas usando 'elimina' TODOS los
codigos [no solo el de la hoja 'activa']
[ademas de que 'le sobra' la instruccion 'ActiveSheet.Select'... estas
usando ->ActiveWorkbook<-]

te pongo unos ejemplos en seguida...
saludos,
hector.
en un modulo de codigo 'normal' ==Sub Quitar_PassWord_VBA()
Application.SendKeys "%{f11}{l 4}%q", True
Workbooks("Libro X").Activate
Application.SendKeys "%{f11}^r{down}AquiTuPassWoRd~%q", True
End Sub
Sub Poner_PassWord_VBA()
Workbooks("Libro X").Activate
Application.SendKeys
"%{f11}^r%hp^{pgdn}{+}{tab}AquiTuPassWoRd{tab}AquiTuPassWoRd~%q"
' la siguiente linea es ->opcional<-, puedes NO cerrarlo, pero... seguira
SIN password :(
Workbooks("Libro X").Close True
End Sub





"Héctor Miguel" escribió en el mensaje
news:
hola, Fabian !

solo unos comentarios [un tanto]... 'al margen' :D
1) no alcanzo a entender el sentido de 'agregar' codigo en los modulos de


[eventos en] un libro 'vacio' para...
-> inhabilitar los eventos al abrir el libro 'vacio'...
-> 'mantenerlos' inactivos mientras dicho libro esta abierto...
-> y re-habilitarlos al cerrar 'el libro' -?-
2) [probablemente] seria mas 'conveniente' dejar 'activa' la ultima


instruccion de tu mensaje anterior...
-> 'Workbooks("Resguardo.xls").Close savechanges:=True
[obviamente]... despues de hacer un: -> Application.SendKeys "%{f4}"
3) la 'nueva forma'... podria 'fallar' si el codigo de ejecuta en una


version NO castellano [p.e.]
la instruccion: -> Application.SendKeys "%{a}~", True
=> 'activa' el menu Archivo [en castellano] y 'ejecuta' el primer


comando de dicho menu
[pero...] la ventana del editor de vba... se queda


ierta' -?-

[a menos que solo estes 'haciendo pruebas']... comentas algun otro detalle


?
saludos,
hector.

> Sub CrearResguardo()
> Application.EnableEvents = False
> Ruta = ThisWorkbook.Path
> If Dir("" & Ruta & "\Resguardo.xls") = "" Then
> Set NewBook = Workbooks.Add: NewBook.SaveAs Filename:="" & Ruta &


"\Resguardo.xls"
> Application.SendKeys "%{f11}^{r}{end}~", True
> Application.SendKeys "Private Sub Workbook_Open~", True
> Application.SendKeys "Application.EnableEvents=False{tab}{down 2}",


True
> Application.SendKeys "Private Sub Workbook_BeforeClose{(}Cancel As


Boolean{)}~", True
> Application.SendKeys "Application.EnableEvents=True{tab}{down 2}",


True
> Application.SendKeys "%{a}~", True
> Application.SendKeys "+{f7}", True
> Application.SendKeys "^w", True
> End If
> Application.EnableEvents = True
> End Sub


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