19/11/2010, 15:47
|
| | Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses Puntos: 39 | |
programar 2 macros (codigos) en uno solo para un solo Amigo, mis saludos. Dos macros (codigos) en un formulario VBA en excel
Este código en un boton del form que me funciona muy bien
Sub Printe_NombreHoja()
On Error GoTo controlError 'Si sucede un error irá a la línea "controlError" (abajo de todo)
Dim estaHoja 'Creo un variable
estaHoja = ActiveSheet.Name 'La variable toma el nombre de la hoja activa, para
'despúes volver; porque para imprimir una hoja primero la debo activar.
'------------
'El nombre de la hoja a imprimir lo ingreso en un cuadro (InputBox) que se abrirá al ejecutar la macro.
'
Dim ImprimirHoja 'Creo una variable (aquí se almacenará el nombre de la hoja ingresada en el InputBox).
Dim Mensaje, Titulo 'Dos variables para los textos del InputBox
'Establezco los dos textos que aparecerán en el InputBox y que lógicamente tú puedes cambiar.
Mensaje = "Ingrese el nombre de la hoja."
Titulo = " Hoja a imprimir"
'La variable toma desde el InputBox el nombre de la hoja a imprimir.
ImprimirHoja = InputBox(Mensaje, Titulo)
If ImprimirHoja = Empty Then Exit Sub 'Si no escribo nada la variables está vacía y salgo.
'ATENCION: Para imprimir la hoja activa escribe, "Esta" sin las comillas y presiona enter o Aceptar.
If ImprimirHoja = "Activa" Then ImprimirHoja = estaHoja 'Al dejar "Esta", se toma el nombre de la hoja activa.
'Puedes cambiar = "Esta" por otra palabra.
'------------
'Mensaje de confirmación por si te arrepientes
If MsgBox("Se imprimirá la hoja: " & ImprimirHoja & Chr(13) _
& Chr(13) _
& "¿Desea continuar?", vbExclamation + vbDefaultButton1 + vbYesNo, "Por favor confirme la acción") = vbNo Then
Exit Sub
Else
Application.ScreenUpdating = False 'Desactivo la actualización de la pantalla para que no muestre la hoja activa.
Worksheets(ImprimirHoja).Activate 'Activo la hoja a imprimir
ActiveSheet.PrintOut 'Imprimo
Worksheets(estaHoja).Activate 'Vuelvo a la hoja desde donde comencé
Application.ScreenUpdating = True 'Activo la actualización de la pantalla para ver la hoja activa.
End If
Exit Sub
controlError:
'En este caso el único error podría ser un nombre mal escrito, entoces mostramos este mensaje...
MsgBox "El nombre de hoja ingresado no existe.", vbExclamation, "Acción cancelada"
Exit Sub '...y salimos
End Sub
-----------------------------------------------------
y este que tambien me funciona a perfección
Private Sub cmdPrintHoja_Click() 'Ponerle la rutina para Vista Previa sin que se tranque la aplicacion
Application.PrintCommunication = False
Sheets(6).Select
Application.Dialogs(xlDialogPrinterSetup).Show 'Selección y configuración de impresora
Dim Copias As Integer
Solicitar_Copias:
Copias = Val(InputBox("Indica el número de copias a imprimir...", "Copias para imprimir", 1))
If Copias = 0 Then
MsgBox "Usted canceló la acción.", vbInformation, " Impresion cancelada"
Exit Sub
ElseIf Not Copias > 0 Then
MsgBox "Indica un número mayor que cero."
GoTo Solicitar_Copias
End If
'ActiveWindow.SelectedSheets.PrintOut From:=2, To:=3, Copies:=1 'imprimir solo la hoja selecionada(activa) Hay que probar si funciona
'ActiveWindow.SelectedSheets.PrintOut Copies:=Copias 'Imprime la(s) copia(s) selecionadas de la hoja6
ActiveSheet.PrintOut Copies:=Copias
Application.PrintCommunication = True
End Sub
--------------------------------------
Quiero integrar los dos en uno solo pero que no deje de terner las opciones del primero ni las del segundo, es decir, que pueda colocar el nombre de la hoja ademas de los mensages y luego me lleve a la Setup de la impresora, imputbox para cantidad de copias y mensages.
Con muchas ganas pero muy poca experiencia y con ayuda de las WEBs he ido acomodando los codigos pero no se como ni donde colocar lineas entre las lineas para hacer l oque estoy deseando y pidiendo.
Gracias
un solo codigo para usar un solo boton |