Imprimir un libro sin abrirlo

Que tal necesitaría una fórmula para poder imprimir un libro excel, por medio de una macro, sin abrir el libro y de ser posible imprimir ciertas hojas del libro. Es que estoy diseñando una macro en donde necesito abrir varios libros, seleccionar las hojas a imprimir y he grabado una macri simple, pero me abre los libros y me los muestra y quiero evitar que se vean, quizás me ayudarían las fórmulas de las macros, desde ya agradezco quien me ayude.
Saludos

1 Respuesta

Respuesta
1
Has probado a abrir minimizado para que no se vean y después de imprimir que lo cierre y ya esta el problema resuelto. El código es:
Workbooks.Open Filename:= _
"C:\Documents and Settings\AQUÍ PONES LA RUTA Y NOMBRE DE TU LIBRO"
ActiveWindow.WindowState = xlMinimized
Si de hecho así lo estoy utilizando, solo que he visto que un conocido en sistema ha realizado un programa que llama a imprimir sin mostrar el libro, el tema es que con el no tengo confianza, de igual manera agradezco tu tiempo y colaboración muchas gracias!
Toma este código a ver si te sirve
'
ChDir "Ruta donde esta el libro"
Workbooks.Open Filename:= _
"Ruta mas nombre del libro"
Visible = False
ActiveWorkbook.PrintOut From:=1, To:=1, copies:=1, collate:=True
ActiveWorkbook. Close
Esto ponlo dentro de tu macro, el libro se abrirá pero estará oculto se imprimirá y se cerrará.
Huy, disculpa que te vuelva a molestar, pero te muestro como funciona
Res = MsgBox(prompt:="A continuación se Actualizarán todas las planillas de juego del torneo challenguer, esto podrá demorar 5 minutos aproximadamente", Buttons:=vbYesNo, Title:="Actualizacion de Planillas de Juego Torneo challenguer")
If Res = vbYes Then
ChDir "D:\LAFI\LAFI 2009\BaseDatos2009.xls"
Workbooks.Open Filename:= _
"D:\LAFI\LAFI 2009\Planillas\Originales\juego2009.xls"
Visible = False
Windows("juego2009.xls").Activate
ActiveWorkbook.Save
ActiveWorkbook.Close
y despues de actualizar va la orden imprimir
Workbooks.Open Filename:="D:\LAFI\LAFI2008\Planillas\Zona A1\CLUBMAYO78.xls"
Visible = False
Sheets(Array("95", "00", "96", "01")).Select
Sheets("95").Activate
Visible = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Workbooks.Open Filename:="D:\LAFI\LAFI2008\Planillas\Zona A1\COCCORINO.xls"
Sheets(Array("95", "00", "96", "01")).Select
Sheets("95").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
SERÍA ALGO ASÍ, PORQUE LO HAGO Y CUANDO CORRO LA MACRO ME SALTA UN CARTEL QUE DICE
"error de compilación"
La función o la interfaz se marco como restringida o la función utiliza un tipo de automatización no adimitida en visual basic"
Y por las dudas aclare option explicit al comienzo y me marca "error de compilación" "no se ha definido variable" y me marca el comienzo como error "res= ...".
Valoraría de nuevo tu ayuda y desde ya vuelvo a agradecer tu tiempo y buena predisposición!
El directorio la primera opción que te puse no puede ser el propio archivo sino el directorio solo, donde tú pones:
ChDir "D:\LAFI\LAFI 2009\BaseDatos2009.xls"
Debería poner :
ChDir "D:\LAFI\LAFI 2009\"
Pruébalo y me cuentas
Lo intente del modo que me decís y de igual manera me figura ese cartel, trate de encontrar el error pero no lo decifro, de igual manera agradezco tu tiempo y ayuda y trataré de volver a realizar todo paso a paso con la orden visible=False hasta encontrar el modo correcto, una vez más agradezco tu ayuda
Bueno refrescando un poco la mente logre que funcionara sin errores, pero me lo muestra igual no se cual sera el problema, pero no lo oculta
te muestro el ejemplo
Private Sub CmdActualCha_Click()
Res = MsgBox(prompt:="A continuación se Actualizarán todas las planillas de juego del torneo challenguer, esto podrá demorar 5 minutos aproximadamente", Buttons:=vbYesNo, Title:="Actualizacion de Planillas de Juego Torneo challenguer")
If Res = vbYes Then
ChDir "D:\LAFI\LAFI 2009\"
Workbooks.Open Filename:= _
"D:\LAFI\LAFI 2009\BaseDatos2009.xls"
Visile = False
ChDir "D:\LAFI\LAFI 2009\Planillas\Originales\"
Workbooks.Open Filename:= _
"D:\LAFI\LAFI 2009\Planillas\Originales\juego2009.xls"
Visile = False
Windows("juego2009.xls").Activate
Visile = False
ActiveWorkbook.Sabe
ActiveWorkbook.Close
Windows("BaseDatos2009.xls").Activate
Visile = False
ActiveWorkbook.Close
MsgBox "Las planillas de juego del torneo challenguer fueron actualizadas satisfactoriamente", vbOKOnly, "ACTUALIZACIÓN COMPLETA"
Else
Exit Sub
TextBox1.SetFocus
End If
End Sub
A ver si descifras mi error porque no logro verlo, desdá ya muchas gracias
Querido amigo estas cometiendo un error de sintaxis, si has copiado la macro para pegarla aquí, veo que tu error es tonto estas poniendo "VISILE =FALSE" no es visile es
"VISIBLE =FALSE", anda corrige y comprueba si hace lo que pretendes.
OK, lo tenia frente a mis ojos y no lo veía, eso de refrescar la mente era verdad, bueno agradezco tu ayuda y espero no haberte vuelto loco, con mis dudas y falta de conocimiento, espero puedas ayudarme en un futuro vuelvo a agradecerte.
Muy buena solución, gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas