Es fácil imprimir una sola etiqueta para uno o más registros, pero cuando necesite imprimir varias etiquetas para un mismo registro, necesitará VBA.

    Imprimir etiquetas es sencillo si sólo necesita una etiqueta para cada registro en una tabla o consulta; un asistente hace todo el trabajo. Pero si necesita imprimir más de una etiqueta para un solo registro o varios registros, el asistente es inadecuado. Para este tipo de tarea de impresión, necesitará algunos objetos adicionales y algo de código de Visual Basic for Applications (VBA. En este artículo, te mostraré cómo imprimir uno o más sellos para un solo disco. El mes que viene, te mostraré cómo imprimir una o más etiquetas para uno o más discos.

    Estoy usando Access 2019 en un sistema Windows 10 de 64 bits, pero los objetos y el código se ejecutarán en versiones anteriores hasta 2003. Para su comodidad, puede descargar el archivo de ejemplo.accdb o.mdb. Esta base de datos no es apropiada para Access Web Apps o Access Web Services. Este artículo asume que usted sabe cómo crear una tabla y usar asistentes para crear formularios e informes.

    En pocas palabras

    Empezaremos con la tabla que almacena los datos que se utilizarán en el informe de la etiqueta. En este caso, estamos utilizando la tabla Clientes de Northwind. (Puede utilizar cualquier tabla que desee.) Basará un sencillo formulario en esta tabla para que pueda elegir el registro y especificar el número de etiquetas que necesita. Por ejemplo, utilizando el formulario, puede imprimir cinco etiquetas para el cliente Around the Horn o 15 etiquetas para el cliente Familia Arquibaldo.

    Hará una copia de la tabla que almacena la información de la etiqueta para crear una tabla temporal y basar un informe de etiqueta en ella. El informe no necesita todos los registros de la tabla original; sólo necesita los registros que desea imprimir. Por último, necesitará un procedimiento de VBA que dirija el espectáculo.

    Más información sobre Office

    Crear la tabla temporal

    La tabla temporal se basa en Clientes (de Northwind. Debe compartir los campos comunes necesarios para las etiquetas, pero no los datos. El código VBA que añadiremos más adelante añadirá los registros utilizados en la ejecución de la etiqueta. Cree la tabla temporal manualmente o copie la tabla Clientes como se indica a continuación:

    1. Haga clic con el botón derecho en Clientes en el panel de navegación y seleccione Copiar.
    2. Haga clic con el botón derecho del ratón en el panel de navegación y seleccione Pegar.
    3. Introduzca el nombre Clientes temporales.
    4. Seleccione la opción Sólo estructura (.
    5. Haga clic en Aceptar.

    Cree una tabla temporal basada en la tabla que contiene los datos de la etiqueta.

    Si ha copiado la tabla Clientes, abra la copia en la vista Diseño y elimine la clave primaria. Además, asegúrese de que ninguno de los campos es obligatorio y ninguno tiene un índice. El código duplicará los registros, y estas propiedades de la tabla generarán errores. No se preocupe si la tabla temporal contiene campos que no necesita para el informe de etiquetas. Puedes borrarlos si quieres, pero son inofensivos.

    Crear el informe de etiquetas

    A continuación, utilice el asistente de informes de etiquetas para generar un informe en la tabla temporal, Clientes temporales. Añada los siguientes campos: CustomerID, CompanyName, Address, City, Region, PostalCode, and Country. Asigne un nombre al informe Informe de etiqueta de cliente (. En Access 2019, el asistente se encuentra en el grupo Informes en la ficha Crear. En Access 2003, utilice el Asistente de informes.

    Base un informe de etiqueta en la tabla temporal.

    Crear el formulario

    Utilice el Asistente de formularios para crear un formulario simple basado en la tabla Clientes (no en la tabla temporal. El formulario mostrará todos los registros de la tabla Clientes para que pueda elegir. Elimine los campos innecesarios o no, el código sólo hará referencia a los campos que desee incluir en el informe de la etiqueta. Para personalizar el formulario para que se ajuste a la tarea, agregue un cuadro de texto, un botón de comando y algo de código como se indica a continuación:

    1. Abra el formulario en la vista Diseño.
    2. Añada un control de cuadro de texto a la sección Encabezado de formulario y llámelo txtNumberofLabels

    .

    1. Introduzca el texto de subtítulo Número de etiquetas.
  • Agregue un botón de comando; llámelo cmdPrintLabels e ingrese una leyenda de Print Multiple Labels (Imprimir múltiples etiquetas.
  • Con el botón seleccionado, haga clic en la ficha Evento de la hoja de propiedades.
  • Seleccione[Event Procedure] de la lista desplegable On Click ) y haga clic en el botón Builder para abrir el módulo del formulario.
  • Ingrese el código en el Listado A. No copie ni pegue desde la página web. Copiarlo desde el archivo de base de datos descargable o importar el módulo.cls, también incluido en la descarga. Si está trabajando con sus propios datos, asegúrese de actualizar los nombres de los campos y las tablas, según corresponda.
  • Introduzca un procedimiento secundario para el evento Click del botón.

    Listado A

    Private Sub cmdPrintMultipleLabels_Click()'Print multiple labels for current record.Dim i As IntegerDim rst As ADODB.RecordsetSet rst = New ADODB.Recordset'Delete previous label data.DoCmd.SetWarnings FalseDoCmd.RunSQL "DELETE FROM[Temporary Customers]"DoCmd.SetWarnings TrueOn Error GoTo errHandler'Catch blank control.Si está en 0, el informe de etiquetas está en blanco pero se ejecuta. si está en blanco (Me!txtNumberOfLabels), entonces la casilla de verificación MsgBox "Please indicate the number of labels you want to print", _vbOKOnly, "Error"DoCmd.GoToControl "txtNumberOfLabels"Exit SubEnd Ifrst.Open "[Temporary Customers]", CurrentProject.

    C

    onexión, adOpenDynamic, _ adLockPessimistic'Agrega registros duplicados para la empresa seleccionada utilizando el valor de entrada. i = 1 To Me!txtNumberOfLabels.ValueWith rst.AddNew!CustomerID = Me.CustomerID!CompanyName = Me.CompanyName!Address = Me.Address!City = Me.City!Region = Me.Region = Me.Region!PostalCode = Me.PostalCode!

    C

    ountry = Me.Country.UpdateEnd WithNext i'opens report.DoCmd.OpenReport "Customer Label Report "Customer Label Report", acViewPreviewrst.CloseSet rst = NothingExit Sub'Error handling routine.errHandler:MsgBox Err.Number & ": " & Err.Description, vbOKOnly, "Error"DoCmd.SetWarnings Truerst.CloseSet rst = NothingEnd Sub

    Ejecutar el informe de etiquetas

    Volver a la base de datos y abrir el formulario en la vista Formulario para que podamos usarlo para generar un informe personalizado de etiquetas. Antes, te dije que usaríamos el filtro incorporado para seleccionar una compañía. Si lo desea, puede automatizar este proceso, pero para simplificar el ejemplo, haga lo siguiente:

    1. En el grupo Sort & Filter, seleccione Filter By Form (Filtro por formulario) ) en el menú desplegable Advanced (Avanzado.
    2. En el menú desplegable CustomerID, seleccione un cliente como BERGS . No se preocupe si el control CustomerID muestra un valor distinto al mostrado; la función recuerda el último filtro.
    3. Haga clic en Toggle Filter en el grupo Sort & Filter y Access rellena el formulario con los datos del cliente seleccionado.
    4. Introduzca el número de etiquetas que desea imprimir, digamos 5, en el cuadro de texto Número de etiquetas .
    5. Haga clic en el botón Imprimir varias etiquetas para generar el informe de etiquetas que se muestra en la .

    Utilice la opción Filtrar por formulario para elegir un cliente.


    Seleccione un cliente.

    Introduzca el número de etiquetas que desea imprimir.


    El informe de etiquetas imprime cinco etiquetas para Berglunds snabbköp.

    Cómo funciona el código

    Afortunadamente, el código que dirige el programa es simple. En primer lugar, una instrucción SQL DELETE elimina cualquier registro existente de la tabla temporal (de una sesión anterior. Si omite esta declaración, puede crear un informe personalizado utilizando más de un cliente, pero en algún momento tendrá que borrar la tabla para la siguiente tarea de impresión.

    La sentencia If comprueba el cuadro de texto txtNumberofLabels por un valor. Si el control está en blanco, el código muestra un mensaje de advertencia, selecciona el control y lo abandona. Si el control contiene 0, el código muestra un informe en blanco. Este comportamiento es algo que podría querer omitir añadiendo una segunda sentencia If o una sentencia OR a la condición If existente.

    Después de abrir un objeto Recordset basado en la tabla Temporary Customers, el bucle For utiliza el valor en txtNumberofLabels para añadir un registro para cada etiqueta.

    Por ejemplo, si introduce el valor 5, el bucle Para añade cinco registros.

    En este punto, la tabla Clientes temporales contiene un registro para cada etiqueta. Al abrir el informe se genera el informe de etiqueta apropiado. La rutina de manejo de errores es genérica; es posible que desee personalizarla un poco más para que se ajuste a sus necesidades.

    Imprimir varias etiquetas

    Puede añadir esta sencilla técnica para imprimir una o más etiquetas para un único registro en casi cualquier base de datos. El próximo mes, abordaremos la impresión de uno o más sellos para más de un disco.

    Envíenme sus preguntas sobre Office

    Respondo a las preguntas de los lectores cuando puedo, pero no hay garantía. Cuando se ponga en contacto conmigo, sea lo más específico posible. Por ejemplo, «Please troubleshoot my workbook and fix what’s wrong» probablemente no obtendrá respuesta, pero «Can you tell me why this formula is’ t returning the expected results? Por favor, menciona la aplicación y la versión que estás usando. No envíe archivos a menos que se le solicite; las solicitudes iniciales de ayuda que lleguen con archivos adjuntos se eliminarán sin leer. ConsejoTecnologico.com no me reembolsa por mi tiempo o experiencia en ayudar a los lectores, ni tampoco pido una cuota a los lectores a los que ayudo. Puede ponerse en contacto conmigo en susansalesharkins@gmail.com.

    Lea también….

    Boletín semanal de Microsoft

    Conviértase en un experto en Microsoft de su empresa con la ayuda de estos tutoriales de Windows y Office y de los análisis de nuestros expertos sobre los productos empresariales de Microsoft. Entregado Lunes y Miércoles

    mismo