Impresión con macros

Tengo 10 hojas excel que se encuentran en un determinado directorio ejemplo: c:\misdocumentos\fichas y mediante una macro hago que imprima en una sola página tamaño A4 y con cabeceras uniformes para cada una de ellas claro no necesito grabarlos luego tan solo imprimirlo y soltarlo para luego recuperar el otro archivo claro que lo hago una por una.
¿Cómo recupero cada hoja (ojo que no esta en un mismo libro) ya que cada archivo excel esta algo así: vcv001.xls, acv022.xls, dcv003.xls, gcv004.xls ... Zcv010.xls y mediante una macro haga este proceso para la primera hoja y de inmediato recupere la 2da hoja corra la macro e imprima y así a la 3ra. Hoja y así sucesivamente hasta la 10ma hoja y termine de imprimir todas?
Gracias por su ayuda

1 Respuesta

Respuesta
1
Tendría que ver tu código para ver qué se le puede adaptar ya que se me lleva tiempo.
[email protected]
Amigo experto:
Gracias por la atención, no soy programador en macros pero ahí voy dando mis primeros pasos este es la macro que me permite acomodar la hoja electrónica y luego imprimirlo pero no que añadirle para que me permita escoger un conjunto de hojas para hacer con c/u esta macro e imprimirla uno por uno sin necesidad de grabarlos. De antemano gracias por tu ayuda.
Sub BOLETAS()
'
' OTRO Macro
' Macro grabada el 06/11/2008 por VCV
'
'
Range("A1:G96").Select
Selection.Copy
Range("I1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Columns("B:B").ColumnWidth = 15.14
Columns("J:J").ColumnWidth = 14.71
Range("A1").Select
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.3)
.RightMargin = Application.InchesToPoints(0.399)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
End With
Columns("H:H").Select
Selection.ColumnWidth = 21
Range("A1").Select
'LINEA QUE ACTIVA LA IMPRESION A LA IMPRESORA POR DEFECTO
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
' Application.ActivePrinter = "\\HOTELVID\Printer Driver Type 101 en Ne04:"
End Sub
Tendrías que crear una rutina con el For-Next para que se ejecute en las hojas que quieres.
Sub HojasLibro()
Dim SheetNames() As String
Dim SheetHidden() As Boolean
Dim i As Integer
Dim SheetCount As Integer
Dim VisibleWins As Integer
Dim Item As Object
Dim OldActive As Object
For i = 1 To SheetCount
       If SheetHidden(i) Then ActiveWorkbook.Sheets(i).Visible = False
       Call Boletas
Next i
End Sub
[email protected]
Gracias Amigo experto, he ejecutado la rutina que me enviaste en la primera hoja que quiero imprimir pero solo imprime la que escogí, ¿ahora cómo hago para que la macro me pida la siguiente o siguientes hojas que quiero imprimirlas? En mi caso lo tengo las hojas en un solo subdirectorio Ejm: c:\trabajo
Gracias
Prueba con esto:
For Each xSheet In ActiveWorkbook.Sheets
  Tu_Código
Next xSheet
[email protected]
Amigo Experto:
Gracias por la atencion; puse el código que me indicaste pero solo hace la operación indefinidamente a la hoja que yo recupero y no lo suelta indefinidamente. Lo ideal seria que una vez enviado a la impresión pida el otro archivo xls y ejecute la macro mía lo imprima y lo suelte y así sucesivamente.
Gracias y disculpa la molestia nuevamente.
Aquí tienes otra:
Sub Imprimir_seleccion()
'preparar la hoja para la impresión
bucle que repasa todas las hojas
For Each Worksheet 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
Gracias por la tu atención amigo experto, pero continuo con mi problema de no poder imprimir todas las hojas que quiero imprimir, el código que me enviaste solo funciona para una sola hoja electrónica. Al terminar de imprimir lo hace una sola página pero ahí queda ... no me pide la siguiente hoja electrónica.
Ojala pudieras encontrarme alguna otra solución GRACIAS
Me extraña porque a mí me funciona de maravilla sin importar la cantidad de Hojas que tenga. Trata de ejecutarlo paso a paso.
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas