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.-
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 __
> 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...
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Private Sub CommandButton2_Click()
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
End Sub
Private Sub CommandButton3_Click()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Solo existen dos modulos: modulo1 para imprimir y moduloparaarchivar datos
Finalmente, es cierto que los controles activex tienen algunas propiedades,
pero al parecer no permiten caracteristicas como biselado, sombra, color
metalico, degradado, etc. Ahora, si se pudiera "usar" la "imagen" del boton
creado y pegarla en el control activex, sería la solución, pero ¿como se
hace?. Gracias y disculpa la lata. Saludos
"Héctor Miguel" escribió:
> .
>
__ 1 __
> ... si guardo el archivo en Excel 2007 con Habilitado para macros, deja de funcionar la conversion de numeros a letras
> ... lo que no sucede con archivo para Excel en modo compatibilidad
1) esto sucede porque la version 2007 tiene mas filas y columnas que las versiones anteriores y (de algun modo)...
las celdas a las que se hace referencia en los nombres definidos tambien (de algun modo) resultan desplazadas :-((
y es facil de corregir siguiendo este procedimiento "al pie de la letra" (luego de abrir la version 2007 y habilitar las macros)
a) selecciona la celda [D10] de la hoja "Estado Diario"
b) de la cinta de opciones / (ficha) formulas / (boton) administrador de nombres... -> selecciona el nombre "_A" (sin las comillas)
c) (RE)define en la formula la referencia, que debe quedar "apuntando" a la misma fila de una columna anterior, o sea a: [C10]
d) toma buena nota de que la referencia debe ser RELATIVA e iniciando con el signo ' ! '
la formula debiera quedar +/- asi: -> =texto(!c10,"000000000000000.00")&repetir("",0*hoy())
__ 2 __
> ... a su vez al guardar en este ultimo formato, me arroja un mensaje indicando que existen datos fuera de los limites de celdas
> y columas, marcando de amarillo, las celdas donde supuestamente existe el error.
> Estas marcas solo ocurren a partir de mi "hoja" 2, y alternadas, es decir, filas 52, 54, 56, etc.
> Estoy absolutamente seguro de que no existen datos que excedan el numero de columnas ni filas.-
2) a tu archivo "original", convertido primero a la version 2007, le corri algunas pruebas y note comportamientos "bizarros" (p.e.)
a) NO permite la modificacion de los nombres desde la hoja "EnLetraSINMacrosV2"
b) la navegacion funciona como si estuviera habilitada la compatibilidad de teclas para lotus-123
c) tambien "avanza" despues del enter a la celda de abajo (aun cuando NO esta habilitada esta caracteristica)
-> es probable que (por alguna razon) "ese" archivo hubiera alcanzado un "cierto grado de corrupcion" (???)
__ 3 __
> ... en cuanto al tipo de modulo e instrucciones exactas... voy a la ficha Programador... modo diseno... click en Ver Codigo
> me muestra "todos" los codigos que tengo en mis tres botones, es decir, para imprimir y guardar; solo imprimir y solo guardar
> mas el codigo del boton que cree y que en realidad es el que trato de reemplazar, copiando el de imprimir y guardar.
> Para mas claridad, los copio todos a continuacion: (...)
3) en cuanto a las macros, aun convertido a la version 2007 (tu archivo "original"), la macro sugerida funciona como se espera
__ 4 __
> ... es cierto que los controles activex tienen algunas propiedades, pero al parecer no permiten caracteristicas
> como biselado, sombra, color metalico, degradado, etc.
> Ahora, si se pudiera "usar" la "imagen" del boton creado y pegarla en el control activex, seria la solucion
> pero como se hace?...
4) puedes asignar imagenes a tus botones de comando (activex) con el siguiente procedimiento:
a) primero incrusta la imagen en alguna hoja de calculo (*.jpg, *.png, *.bmp, etc.)
b) copia la imagen incrustada en la hoja de calculo (ctrl + C)
c) cambia al editor de vba, activa el modo de diseno y selecciona la hoja y el commandbutton correspondiente
d) en la ventana de propiedades (del commandbutton), selecciona la propiedad "Picture" y haces un pegado norma: ctrl + V
-> despues puedes eliminar la imagen de la hoja y modificar otras propiedades del boton como PicturePosition, BackStyle, etc.
saludos,
hector.
Funciona como se espera, siempre que no "salga" de la columna C, pero si le
doy click a cualquiera de los controles Private Sub CommandButton1_Click();
Private Sub CommandButton2_Click() y Private Sub CommandButton3_Click() y
luego Ctrl+s, no funciona. Para solucionarlo, intente agregando al Código de
ComandButton 1, despues de ....FALSE) " y antes de END SUB, lo siguiente
Range("C10").Select con la intención de volver el cursor a la celda c10 o
seleccionar la celda C10. Lo mismo hice en ComandButton2, pero entre las
expresiones END WITH y END SUB. Evidentemente, algo esta mal ¿Como se logra
volver a la celda C10, despues de dar la instrucción de imprimir y guardar
para poder usar la macro suprimir? Gracias
"Héctor Miguel" escribió:
> .
>
op1: asegurate (en tiempo de diseno) que la propiedad "TakeFocusOnClick" de los commandbuttons este en => False
op2: no es necesario "Select(ionar)" objetos para administrar sus propiedades
prueba cambiando las instruciones en la macro Suprimir()
a una sola linea (p.e.) => Range("datos").ClearContents
saludos,
hector.
__ OP __
> Tengo una duda con las macros de los controles Private Sub CommandButton1_Click()
> Private Sub CommandButton2_Click() y Private Sub CommandButton3_Click()
>... que consiste en lo siguiente: defini un nombre (Datos)
> que selecciona los ya sabidos rangos C10:C37;C52:C79; etc de la Hoja Estado Diario.
> Luego cree una macro que consiste en seleccionar "Datos"; luego suprimir
> y finalmente, ubica el cursor o selecciona como celda activa C10. Esta es la macro creada:
> Sub Suprimir()
> ' Acceso directo: CTRL+s
> Application.Goto Reference:="Datos"
> Selection.ClearContents
> Range("C10").Select
> End Sub
> Funciona como se espera, siempre que no "salga" de la columna C
> pero si le doy click a cualquiera de los controles Private Sub CommandButton1_Click()
> Private Sub CommandButton2_Click() y Private Sub CommandButton3_Click() y luego Ctrl+s, no funciona.
> Para solucionarlo, intente agregando al Codigo de ComandButton 1, despues de ....FALSE) " y antes de END SUB, lo siguiente
> Range("C10").Select con la intencion de volver el cursor a la celda c10 o seleccionar la celda C10.
> Lo mismo hice en ComandButton2, pero entre las expresiones END WITH y END SUB.
> Evidentemente, algo esta mal Como se logra volver a la celda C10
> despues de dar la instruccion de imprimir y guardar para poder usar la macro suprimir?
"Jorge" escribió: