Conectar Excel con Access





Conectar Excel con Access, te voy a mostrar una macro que enseña como conectar Excel con Access, es decir toma los datos de una hoja de Excel y los guarda en una Tabla de Access, este es la primer entrega de una zaga de varios artículos dedicados a la conexión Excel con Access, luego mostraré como modificar datos, eliminar datos, traer los datos a un formulario, suscribe al blog o YouTube para recibir las actualizaciones, en el post Excel y SQL expongo las principales sentencias SQL que son útiles cuando se conecta Excel con Access .

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Para poder conectar Excel con Access se debe habilitar una referencia que es "Microsoft ActiveX Data Objects 2.5 Library", no obstante como posteriormente vamos a seguir trabajando con este mismo ejemplo te recomiendo habilites todas las referencias que están en la figura siguiente:
.

Para habilitar las referencias debes ingresar a Excel, iniciar el editor de VBA con Alt + F11, luego debes ir al menú Herramientas y luego al sub menú Referencias, se abre el cuadro de diálogo igual al mostrado en la imagen anterior, debiendo hacer click en las casillas para activar las referencias, busca las que salen tildadas en la imagen y tilda en tu archivo, para que quede en forma idéntica, habilitadas las referencias ya no tendrás problemas con ellas ya que de lo contrario te daría erro ciertas lineas de código.

Sugiero descargar el archivo de ejemplo y ver la codificación para un mejor entendimiento, el archivo que se descargará es un fichero comprimido .rar; se debe descomprimir en cualquier dirección de la PC, la única condición para que el ejemplo funcione es que ambos archivos, es decir el Excel que contiene la macro y el de Base de Datos de Access, deben estar en el mismo directorio.

Lo primero que se va a realizar es declarar las variables para conectar Excel con Access estas son las variables necesarias:
Dim cn As ADODB.Connection, rs As ADODB.Recordset

Luego de ello se crea un objeto conexión y un objeto recordset de esta manera:
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

Posteriormente se abre la conexión de esta forma:
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & "data source=" & ThisWorkbook.Path & "\171 ProgramarExcel.accdb;"

Si estás usando una base de datos .mdb es decir 2003 o anterior se debe usar el siguiente proveedor de conexión, "microsoft.jet.oledb.4.0" en vez de "Microsoft.ACE.OLEDB.12.0" que es para la versión de Access 2007 o superior, esto es algo importante a tener en cuenta ya que de lo contrario daría un error.

Si leemos el código presentado y encargado de abrir la conexión con Access; se debe colocar la ruta exacta de donde está la base de datos, en este ejemplo se supone que la base de datos está en el mismo directorio que el archivo de Excel que contiene la macro por eso se usa "ThisWorkbook.Path" y el nombre del archivo, es decir estamos extrayendo la dirección o path del archivo de Excel y agregando el nombre de la base de datos al final, con ello obtenemos la ruta completa, es igualmente válido si se escribe directamente la ruta del archivo de base de datos.

Antes de continuar se debe dejar claro que es un objeto recorset, éste se puede definir como objetos que se usan para manipular datos de una base de datos en el nivel de registro; toos los objetos recorset se construyen con registros (filas) y campos (columnas).

 Luego debemos abrir el objeto recordset de la tabla que contiene va a contener los datos, esto se hace con el siguiente código:
rs.Open "Clientes", cn, adOpenKeyset, adLockOptimistic, adCmdTable

Posteriormente vamos a realizar un bucle recorriendo las filas hasta la última con datos, esto se hace con:
While a.Cells(fila,"A")<> empty
...
...
Wend

Luego haremos que cada campo del objeto recordset sea igual a la celda que contiene el registro respectivo, esto se hará con todos los campos de la tabla Clientes de la base de datos, estableciendo que se debe agregar un nuevo registro al campo (Fields), existe otra forma de agregar registros a través de sentencias SQL que la veremos en otra entrega; se utiliza el siguiente código:
With rs
 .AddNew
 .Fields("Id") = Cells(fila, "A")
 .Fields("Nombre") = Cells(fila, "B")
 .Fields("Telefono") = Cells(fila, "C")
 .Fields("Direccion") = Cells(fila, "D")
 .Fields("Mail") = Cells(fila, "E")
 .Fields("Credito") = Cells(fila, "F")
 .Update
End With

En la figura que sigue se muestra el libro de Excel que contiene los datos a exportar y en la siguiente los resultados obtenidos luego de haber exportado los datos, como se podrá observar, todos los datos de Excel se exportaron a la base de datos de Access.




Por último se debe cerrar las variables y vaciarlas, ya que de lo contrario consumiría muchos recursos, si no realiza esta operación, en el ejemplo no afecta en nada, porque son muy pocos registros, pero cuando se tiene 70.000, 100.000 registros o más, consume muchísimos recursos y se haría evidente en la ralentización de la PC; el vaciado de las variables se realiza con los códigos siguientes;
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

Desde el link final podrás descargar el ejemplo totalmente GRATUITO denominado Conectar Excel con Access, recordando que si este o alguno de los cientos de ejemplos publicados te fueron de utilidad y puedes invitarme un café (desde final del post) y de esta manera aportar a seguir manteniendo esta página

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.






Código que se inserta en un módulo




Sub CopiaDatos()
Dim fila As Long, uf As Long, conta As Long
Dim cn As ADODB.Connection, rs As ADODB.Recordset
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set a = ActiveSheet
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & "data source=" & ThisWorkbook.Path & "\171 ProgramarExcel.accdb;"
rs.Open "Clientes", cn, adOpenKeyset, adLockOptimistic, adCmdTable
fila = 2
conta = 0
While a.Cells(fila, "A") <> Empty
With rs
 .AddNew
 .Fields("Id") = Cells(fila, "A")
 .Fields("Nombre") = Cells(fila, "B")
 .Fields("Telefono") = Cells(fila, "C")
 .Fields("Direccion") = Cells(fila, "D")
 .Fields("Mail") = Cells(fila, "E")
 .Fields("Credito") = Cells(fila, "F")
 .Update
End With
conta = conta + 1
fila = fila + 1
Wend
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
MsgBox ("Se procesaron " & conta & " registros con éxito, se omitieron duplicados"), vbInformation, "AVISO"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Macro selecciona impresora mediante cuadro diálogo





En este post te voy mostrar una macro que permite seleccionar impresora desde un cuadro de diálogo previo a la impresión, es decir sirve para el caso que se requiera imprimir en otra impresora distinta a la activa y se desee seleccionar previamente la impresora manualmente.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  

El ejemplo de macro tiene como fin poder seleccionar la impresora que deseamos previo a la impresión, existen varios post relacionados con toda esta saga de artículos relacionados con macros para imprimir en Excel como son: imprimir una hoja del libro de Excelcomo configurar una hoja de Excel mediante macro, imprimir en una impresora distinta a la que se encuentra por defecto.

La macro de ejemplo permite imprimir la hojas del libro de Excel, previo a ello da la opción al operador de seleccionar la impresora en la que desea se imprima el trabajo, el ejemplo específicamente primero, solicita se elija la impresor donde se imprimirá el trabajo, luego configura la página para imprimir y por último emite la orden para imprimir.

Al seleccionar la impresora en el cuadro de diálogo se modifica la impresora activa, es por ello que para dejar todo en el orden que estaba, se carga en una variable el nombre de la impresora activa, luego con el siguiente comando se presenta el cuadro de diálogo para elegir la impresora:
Application.Dialogs(xlDialogPrinterSetup).Show

Seleccionada la impresora se procede a configurar página con los margenes necesarios, pie de página, encabezado de página, disposición u orientación de la página, etc.; posterior se imprime la hoja del libro activo con el siguiente código, solicitando en los argumentos se impriman dos hojas, se intercale y no se ignore área de impresión.

ActiveSheet.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False

Por último con este código volvemos a seleccionar la impresora activa que estaba originalmente:
Application.ActivePrinter = def

Desde el link final podrás descargar el ejemplo totalmente GRATUITO denominado Macro selecciona impresora mediante cuadro de diálogo, recordando que si este o alguno de los cientos de ejemplos publicados te fueron de utilidad y puedes, aporta a seguir manteniendo esta página.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.




Código que se inserta en un módulo




Sub PrintSelection()
Dim def As String
def = Application.ActivePrinter
Application.Dialogs(xlDialogPrinterSetup).Show
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 0
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False
    Application.ActivePrinter = def
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Macro que imprime rango seleccionado





Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Anteriormente se han presentado una serie de artículos relacionados con la impresión en Excel, como por ejemplo como configurar una hoja de Excel mediante macroimprimir una hoja del libro de Excel y imprimir en impresora distinta a la que se encuentra por defecto a ello se suma este nuevo post que tiene por objeto mostrar una macro para imprimir un rango de datos o selección de una hoja de Excel.

El ejemplo presentado, en primero lugar procede a configurar la hoja acomodando margenes, encabezados y pie de páginas, orientación hoja, etc., luego procede a imprimir la selección o rango seleccionado a través del siguiente código:

No es necesario al configurar la página poner todos los códigos, acá se agregan a los fines didácticos, pero con solo agregar los códigos que se necesita, se configura la página y luego se imprime, es decir, tal vez solo requerimos que la página se configure con ciertos márgenes superior, inferior, derecho e izquierdo; con orientación horizontal de la hoja, ajustando a una página de ancho; entonces para ello solo debemos tener el siguiente código, el resto de la codificación no interesa a tales fines:

    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .Orientation = xlPortrait
        .FitToPagesWide = 1
    End With

Una vez configurada la página se emite la orden de impresión de todo el libro de Excel con el siguiente código:
 Selection.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False

La primer parte del código es lo que establece o da la orden de imprimir es decir
 Selection.PrintOut

El resto de argumentos que acompañan al código anterior no son necesarios, pero sirven para determinar la cantidad de copias que necesitamos imprimir como así también si estas deben estar intercaladas y en este caso no ignora el área de impresión que pudiera estar establecido.

Desde el link final podrás descargar el ejemplo totalmente GRATUITO denominado Macro que imprime todo el libro de Excel, recordando que si este o alguno de los cientos de ejemplos publicados te fueron de utilidad y puedes, aporta a seguir manteniendo esta página.


El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.




Código que se inserta en un módulo




Sub PrintSelection()
Application.Dialogs(xlDialogPrinterSetup).Show
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 0
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    Selection.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Macro imprime todo el libro Excel





En esta oportunidad voy a mostrar una macro que imprimir todo el libro de Excel, pero antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Como lo mencionara anteriormente el ejemplo de macro que acá se presenta tiene por objeto imprimir todo el libro de Excel y no solamente imprimir una hoja del libro de Excel como se mostrara anteriormente, si no sabes como configurar una hoja de Excel mediante macro, sugiero veas el link anterior al igual que si requieres imprimir en una impresora distinta a la que se encuentra por defecto.

La macro de ejemplo permite imprimir todas las hojas del libro de Excel, sin más trabajo que apretar un botón, para logar esto la macro primero configura la hoja, en cuento a margenes, pie y encabezado de página, resolución de la impresión, filas y columnas que se deben repetir en todas las hojas, etc.; realizado este paso procede a ejecutar el código que realiza la impresión de todas las hojas de Excel o lo que es lo mismo todo el libro.

No es necesario al configurar la página poner todos los códigos, acá se agregan a los fines didácticos, pero con solo agregar los códigos que se necesita, se configura la página y luego se imprime, es decir, tal vez solo requerimos que la página se configure con ciertos márgenes superior, inferior, derecho e izquierdo; con orientación horizontal de la hoja, ajustando a una página de ancho; entonces para ello solo debemos tener el siguiente código, el resto de la codificación no interesa a tales fines:

    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .Orientation = xlPortrait
        .FitToPagesWide = 1
    End With

Una vez configurada la página se emite la orden de impresión de todo el libro de Excel con el siguiente código:
ActiveWorkbook.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False

Como se puede observar, el código ordena imprimir todo el libro al establecer:
ActiveWorkbook.PrintOut

El resto de argumentos que acompañan al código anterior no son necesarios, pero sirven para determinar la cantidad de copias que necesitamos imprimir como así también si estas deben estar intercaladas y en este caso no ignora el área de impresión que pudiera estar establecido.

Desde el link final podrás descargar el ejemplo totalmente GRATUITO denominado Macro que imprime todo el libro de Excel, recordando que si este o alguno de los cientos de ejemplos publicados te fueron de utilidad y puedes, aporta a seguir manteniendo esta página.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.




Código que se inserta en un módulo




Sub PrintWorkbook()
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 0
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveWorkbook.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False
End Sub

Application.ActivePrinter = def Application.ActivePrinter = def

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Macro selecciona impresora distinta a la activa





Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

En este post voy a mostrar como seleccionar una impresora distinta a la que está por defecto o macro para seleccionar impresora distinta a  la impresora activa, anteriormente te mostré como configurar una hoja de Excel previo a la impresión. Muchas veces se requiere imprimir en una impresora, pero que es distinta a la que se encuentra configurada por defecto, con esta macro lo que se hace es seleccionar una impresora distinta a la activa y luego imprimir, cabe aclarar que se realiza todo por macro, ya que hay una variante que mostraré más adelante que es que aparezca un cuadro de diálogo con el listado de impresoras para elegir la que queramos y luego imprimir.

Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

En primer lugar definimos las variables que van a contener los nombres de la impresora activa y el de la impresora en la que deseamos imprimir, este ejemplo contiene previo a imprimir una configuración de la hoja de Excel, código que no es necesario para el fin que se intenta mostrar, que es como seleccionar o imprimir en una impresora distinta a la predeterminada, estas variables se denominan en el ejemplo def y NewPint respectivamente.

Posterior a la definición de variables, se encuentra la configuración de la página u hoja de Excel, en el definimos lo necesario, margenes, encabezados, pie de página, orientación de la hoja etc.; una vez realizado esto, se encuentra el código propiamente dicho para seleccionar la impresora que deseamos; lo primero es asignar a la variable def el nombre de la impresora activa o actual con este código:
def = Application.ActivePrinter

Luego se asigna a la otra variable definida el nombre de la impresora en la que deseamos imprimir con este código:

NewPrin = "PDF Creator en Ne00:"

Ahora establecemos como impresora actual, la impresora en la que deseamos imprimir y lanzamos el comando para imprimir, en este caso se define que se imprima dos copias, que las copias se intercalen y que no se ignore el área de impresión, todo ello con los códigos siguientes:
Application.ActivePrinter = NewPrin
ActiveWorkbook.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False

Por último volvemos a dejar como impresora activa la que se encontraba por defecto al principio de iniciar la macro, se puede dejar cualquier impresora o de dejar la impresora en la que imprimimos si omitimos este paso, el código es:

Application.ActivePrinter = def

Al final hay un link del cual podrás descargar el ejemplo y adaptarlo a tus necesidades, el código se encuentra abierto y sin ningún tipo de restricción, te recomiendo descargar el ejemplo y ver su codificación y funcionamiento, con la codificación que se encuentra más abajo y que es la misma que encontrarás en el ejemplo descargado podrás seleccionar e imprimir en una impresora distinta a la actual, predeterminada o por defecto..

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.





Código que se inserta en un userform






Sub PrintSheet()
Dim def As String, NewPrint As String
 Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 0
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True

def = Application.ActivePrinter
NewPrin = "PDF Creator en Ne00:"
Application.ActivePrinter = NewPrin
'ActiveSheet.PrintOut
ActiveWorkbook.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False
Application.ActivePrinter = def
End Sub




Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends