Problema con boton de formulario y control ActiveX

23/10/2009 - 22:55 por Jorge | Informe spam
Hola. Quisiera ayuda con el siguiente problema: tengo dos macros: una me
imprime determinadas partes de una hoja y otra me archiva determinados
rangos. Ambas fueron creadas por Hector Miguel, según hilos de fecha 1/9/09
"Macro para imprimir rangos" y 18/8/09 "Archivar solo ciertos registros". Lo
que hice fue crear un boton de comando ActiveX y junte las dos macros
quedando asi:
Private Sub CommandButton1_Click()

ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"

Dim Fila As Integer, Salto As Byte, Grupo As Byte, Registros As Byte, _
Datos, Fecha, modCalc
Salto = 42
Grupo = 28
With Application
.ScreenUpdating = False
modCalc = .Calculation
.Calculation = xlCalculationManual
With Worksheets("estado diario")
Fecha = .Range("f4")
For Fila = 10 To .Range("c65536").End(xlUp).Row Step Salto
With .Range("c" & Fila).Resize(Grupo)
Registros = Evaluate("count('" & .Parent.Name & "'!" & .Address &
")")
If Registros > 0 Then
Datos = .Resize(Registros).Value
With Worksheets("historico").Range("a65536").End(xlUp).Offset(1)
.Resize(Registros).Value = Fecha
.Offset(, 1).Resize(Registros).Value = Datos
End With
End If
End With
Next
End With
.Calculation = modCalc
End With
End Sub

Al hacer click en el comando, funciona perfectamente, es decir, me imprime
solo las "hojas" que contienen datos y guarda los datos existentes, pero el
problema que es que el comando ActiveX tiene pocas posibilidades de diseñarlo
en cuanto a su imagen, razón por la cual, cree un boton con la Ficha
Insertar, rectangulo, cuadro de texto y le di colores, etc. Luego, en la
ficha Programador, Modo Diseño, click sobre el boton, Ver Código, copie esa
macro, pero solo me imprime y no guarda los datos. ¿Como lo soluciono o debo
quedarme con el Boton ActiveX?
Otra cosa ¿como se hace para que se habilite esta macro, sin necesidad que
me pregunte cada vez que inicio el Libro respectivo? Probe con archivar como
libro habilitado para macros, pero me crea otros problemas. Gracias de
antemano.-
 

Leer las respuestas

#1 Héctor Miguel
24/10/2009 - 03:07 | Informe spam
hola, Jorge !

1) si el codigo que expones, NO es (exactamente) tal y como queda despues de "copiado" al nuevo objeto incrustado...
(probablemente) "algo" de lo que no esta funcionando, tampoco ha quedado expuesto en esta consulta (?)
(en que tipo de modulo ?, cuales son las instrucciones exactas ?, ???)

2) al control activex (commandbutton1) le puedes establecer diversas propiedades (imagenes, colores, etc.)
(probablemente no sea necesario buscar alternativas por otro tipo de objetos ?)

3) en la version 2007, si quieres que el libro tenga macros, deberas guardarlo como "libro habilitado para macros" (*.xlsm)
o guardarlo con compatibilidad para versiones 97-2003 (pierdes las caracteristicas nuevas a 2007)

4) y no... (hasta donde se) no hay forma de evitar que excel "pregunte" si habilitas las macros (son opciones de cada usuario)

saludos,
hector.

__ OP __
Lo que hice fue crear un boton de comando ActiveX y junte las dos macros quedando asi:
Private Sub CommandButton1_Click()
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Dim Fila As Integer, Salto As Byte, Grupo As Byte, Registros As Byte, _
Datos, Fecha, modCalc
Salto = 42
Grupo = 28
With Application
.ScreenUpdating = False
modCalc = .Calculation
.Calculation = xlCalculationManual
With Worksheets("estado diario")
Fecha = .Range("f4")
For Fila = 10 To .Range("c65536").End(xlUp).Row Step Salto
With .Range("c" & Fila).Resize(Grupo)
Registros = Evaluate("count('" & .Parent.Name & "'!" & .Address & ")")
If Registros > 0 Then
Datos = .Resize(Registros).Value
With Worksheets("historico").Range("a65536").End(xlUp).Offset(1)
.Resize(Registros).Value = Fecha
.Offset(, 1).Resize(Registros).Value = Datos
End With
End If
End With
Next
End With
.Calculation = modCalc
End With
End Sub

Al hacer click en el comando... me imprime solo las "hojas" que contienen datos y guarda los datos existentes
pero el problema que es que el comando ActiveX tiene pocas posibilidades de disenarlo en cuanto a su imagen
razon por la cual, cree un boton con la Ficha Insertar, rectangulo, cuadro de texto y le di colores, etc.
Luego, en la ficha Programador, Modo Diseno, click sobre el boton, Ver Codigo, copie esa macro
pero solo me imprime y no guarda los datos. Como lo soluciono o debo quedarme con el Boton ActiveX?
Otra cosa como se hace para que se habilite esta macro, sin necesidad que me pregunte cada vez que inicio el Libro respectivo?
Probe con archivar como libro habilitado para macros, pero me crea otros problemas...

Preguntas similares