Lic. informatica
A veces vale la pena incluir una función para que el usuario del libro pueda imprimir cómodamente (y
seguro), por ejemplo desde un botón. De esta manera mantenemos el control sobre lo que se va a
imprimir, y de los parámetros que se mandarán a la impresora.
Abajo encontrarás sencillos ejemplos de la aplicación de cómo imprimir desde Excel VBA:
Selección
Hojas seleccionadas
Todas las hojas
Primero ajustamos los parámetros de la impresión, el apartado PageSetup. Luego se imprime con el
método PrintOut.
Marcado VBA para imprimir las celdas seleccionadas
Sub Imprimir_seleccion()
'preparar la hoja para la impresión
With ActiveSheet.PageSetup
.PrintArea = ""
.Orientation = xlPortrait 'xlLandscape
.PaperSize =xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False 'centrar verticalmente
End With
'imprimir las celdas seleccionadas (1 copia)
ActiveWindow.Selection.PrintOut copies:=1, collate:=TrueEnd Sub
Código VBA para imprimir las hojas seleccionadas
Sub Imprimir_seleccion()
'preparar la hoja para la impresión
With ActiveSheet.PageSetup
.PrintArea = ""
.Orientation = xlPortrait 'xlLandscape
.PaperSize = xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja(alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False 'centrar verticalmente
End With
'imprimir las celdas seleccionadas (1 copia)
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True
End Sub
Código VBA para imprimir todas las hojas del libro
Sub Imprimir_seleccion()
'preparar la hoja para la impresión
'bucle que repasa todas las hojas
For EachWorksheet In ActiveWorkbook.Sheets
With ActiveSheet.PageSetup
.PrintArea = ""
.Orientation = xlPortrait 'xlLandscape
.PaperSize = xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False'centrar verticalmente
End With
Next Worksheet 'fin del bucle
'imprimir las celdas seleccionadas (1 copia)
ActiveWorkbook.PrintOut From:=1, To:=1, copies:=1, collate:=True
End Sub
Crear una barra de progreso en Excel
Un ejemplo de una macro VBA de como crear una barra de progreso (progress bar) para incluir en
nuestras aplicaciones y plantillas Excel.
Crear una barra de progreso en ExcelVBA.
Option Explicit
Sub BarraDeProgreso()
Dim R As Integer
Dim MT As Double
For R = 1 To 180
MT = Timer
Do
Loop While Timer - MT < 0.05
Application.StatusBar = "Progress: " & R & " de 180: " & _
Format(R / 180, "Percent") & " --- " & "Cumplimiento"
DoEvents
Next R
Application.StatusBar = False
End Sub
Messagebox y Excel VBA
Las messagebox son muy útiles (y fáciles de usar), ycrea una interfaz entre el usuario y el programa.
Sirven para
Mostrar información al usuario
Recibir información del usuario
Devolver información del usuario
Construcción sintáctica de la messagebox
Msgbox "Mensaje", Botones/íconos, "Título"
o en el caso de devolver información
Respuesta = Msgbox("Mensaje", Botones/íconos, "Título")
Nota las paréntesis en lasegunda construcción.
Mensaje
Cualquier tipo de texto. Para crear un salto de línea empleamos el carácter vbCrLf.
Actualización terminada:" & vbCrLf & "- Importación de datos de venta.
Botones
Si quieres puedes añadir cualquier de estos cuatro botones (si no pones nada Excel te pondrá vbOk Only
por defecto).
vbOkOnly
vbOkCancel
vbYesNoCancel
vbAbortRetryIgnore
Iconos
Puedes elegir...
Regístrate para leer el documento completo.