Condividi tramite

Per una applicazione distribuibile di Access come posso stampare una etichetta sulla etichettatrice specifica posseduta dall'utilizzatore?

Filiberto Battisti 20 Punti di reputazione
2026-01-07T12:17:44.61+00:00

Per una applicazione distribuibile di Access come posso stampare una etichetta sulla etichettatrice specifica posseduta dall'utilizzatore?

Microsoft 365 e Office | Accesso | Altro | Altro
0 commenti Nessun commento
{count} voti

Risposta accettata dall'autore della domanda
  1. Davide Bianchi 1,230 Punti di reputazione
    2026-01-07T13:14:08.5833333+00:00

    Ciao e benvenuto nella Community di Domande e Risposte.

    In un’applicazione Microsoft Access distribuibile, la stampa su un’etichettatrice non viene gestita direttamente da Access, ma dal sottosistema di stampa di Windows.

    In pratica:

    • l’etichettatrice deve essere installata correttamente come stampante di Windows, con i driver del produttore;
    • se Windows è in grado di stampare sull’etichettatrice, anche Access potrà farlo.

    Il metodo consigliato è:

    • creare un Report di Access con il formato dell’etichetta (dimensioni e margini corretti);
    • non vincolare la stampante nel codice o nel report, ma lasciare che sia l’utente a selezionare la propria etichettatrice (o impostarla come stampante predefinita).

    Questo approccio è il più adatto per applicazioni distribuite, dove ogni utente può avere:

    modelli di etichettatrici diversi,

    nomi di stampanti diversi,

    configurazioni di sistema differenti.

    Solo nel caso di etichettatrici che non espongono un driver di stampa standard Windows (ad esempio dispositivi che richiedono linguaggi proprietari come ZPL/EPL), Access non è lo strumento più adatto e può essere necessario usare software o componenti esterni.

    Access consente di salvare le impostazioni di stampa (inclusa la stampante) a livello di report; tuttavia, in applicazioni distribuibili, Microsoft consiglia di evitare il vincolo a una stampante specifica e demandare la configurazione al sistema operativo dell’utente. Documentazione di riferimento: https://support.microsoft.com/en-us/office/set-print-options-in-access-bc8a0421-c6b7-4a5a-a813-90273f692517


    Se la risposta è utile, fai clic su Accetta risposta e gentilmente votala positivamente. Se hai ulteriori domande su questa risposta, fai clic su Commenta.

    Nota: Segui i passaggi nella nostra documentazione per abilitare le notifiche e-mail se desideri ricevere la notifica e-mail relativa a questa discussione.

    0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Michelle-N 12,520 Punti di reputazione Personale Esterno Microsoft Moderatore
    2026-01-07T14:04:35.11+00:00

    Nota: Questa risposta è stata tradotta automaticamente. Di conseguenza, può contenere errori grammaticali o espressioni strane.

    Ciao @Filiberto Battisti

    Grazie per avermi contattato tramite il forum di domande e risposte di Microsoft.

    In base alle informazioni descritte, ho capito che desideri sapere come stampare un’etichetta sulla stampante di etichette personale di ciascun utente in un’applicazione Microsoft Access.

    In Microsoft Access, le etichette vengono normalmente create tramite un report di tipo etichetta. Per un’applicazione Access distribuibile (ad esempio un file ACCDE distribuito con Access Runtime), è possibile creare un report di etichette e utilizzare VBA per inviare la stampa alla stampante di etichette specifica dell’utente durante l’esecuzione. Un approccio consigliato è il seguente:

    Passo 1: Creare il report delle etichette

    Nel riquadro di spostamento, selezionare la tabella o la query contenente i dati delle etichette > .Andare alla scheda Crea > gruppo Report > Etichette > Seguire la procedura guidata: selezionare il produttore delle etichette e il numero di prodotto che corrisponde ai fogli o ai rotoli di etichette dell’utente > Aggiungere i campi al modello dell’etichetta e formattarli secondo necessità > Assegnare un nome al report (ad esempio “rptLabel”) e completare la procedura guidata.

    Nelle Impostazioni pagina del report (in visualizzazione Struttura, prima della distribuzione), impostare opzioni generali come margini e formato carta in modo compatibile con le stampanti di etichette più comuni, ma senza vincolare il report a una stampante specifica; questa scelta va gestita a runtime per garantire flessibilità agli utenti.

    Passo 2: Consentire all’utente di configurare la stampante di etichette

    Poiché la stampante di etichette è “di proprietà dell’utente”, il nome della stampante varia da un computer all’altro. È quindi opportuno fornire un modulo di impostazioni nell’applicazione per consentirne la selezione:

    Creare un modulo (ad esempio “frmSettings”) con una casella combinata (ad esempio “cboLabelPrinter”) > Popolare la casella combinata con l’elenco delle stampanti disponibili utilizzando VBA nell’evento Load del modulo:

    Private Sub Form_Load()
        Dim prt As Printer
        Dim strPrinters As String
        For Each prt In Application.Printers
            strPrinters = strPrinters & prt.DeviceName & ";"
        Next prt
        Me.cboLabelPrinter.RowSource = strPrinters
        Me.cboLabelPrinter.RowSourceType = "Value List"
        ' Load saved printer if exists (e.g., from a settings table)
        Me.cboLabelPrinter = GetSavedPrinter()  ' Custom function to retrieve from table/registry
    End Sub
    

    Aggiungere un pulsante Salva per memorizzare la selezione (ad esempio in una tabella locale come “tblSettings” con i campi “SettingName” e “SettingValue”):

    Private Sub cmdSave_Click()
        ' Save to table (example using DAO)
        CurrentDb.Execute "UPDATE tblSettings SET SettingValue = '" & Me.cboLabelPrinter & "' WHERE SettingName = 'LabelPrinter'"
        MsgBox "Printer saved."
    End Sub
    
    

    In questo modo l’applicazione rimane distribuibile e configurabile dall’utente senza richiedere l’accesso alla modalità progettazione.

    Passo 3: Stampare l’etichetta sulla stampante specifica tramite VBA

    Utilizzare VBA per aprire il report in anteprima nascosta (modalità in cui la proprietà Printer è modificabile), impostare la stampante, avviare la stampa e chiudere il report senza salvare le modifiche.

    Esempio di funzione di stampa (da richiamare tramite un pulsante o un evento, passando un filtro per l’etichetta o il record specifico):

    Sub PrintLabel(strReportName As String, strWhere As String, strPrinterName As String)
        On Error GoTo Error_Handler
        Dim rpt As Report
        ' Open report hidden in preview to access Printer property
        DoCmd.OpenReport strReportName, acViewPreview, , strWhere, acHidden
        ' Set report reference
        Set rpt = Reports(strReportName)
        ' Set to the user-specified printer (from settings)
        Set rpt.Printer = Application.Printers(strPrinterName)
        ' Optionally adjust other settings (e.g., orientation, copies)
        rpt.Printer.Orientation = acPRORPortrait  ' Or acPRORLandscape
        rpt.Printer.Copies = 1
        ' Print the report
        DoCmd.PrintOut acPrintAll
        ' Close without saving
        DoCmd.Close acReport, strReportName, acSaveNo
    Exit_Sub:
        Set rpt = Nothing
        Exit Sub
    Error_Handler:
        If Err.Number = 2501 Then Resume Exit_Sub  ' Ignore if open canceled
        MsgBox "Error " & Err.Number & ": " & Err.Description
        Resume Exit_Sub
    End Sub
    
    

    È importante considerare che il layout del report può variare se il report è stato progettato per una stampante specifica. Cambiando stampante a runtime, potrebbero verificarsi differenze di impaginazione, che richiedono test o aggiustamenti aggiuntivi.

    https://stackoverflow.com/questions/35631335/changing-printer-in-vba-for-access-also-change-page-layout

    Nota: Microsoft fornisce queste informazioni per vostra comodità. Questi siti non sono controllati da Microsoft e Microsoft non può rilasciare alcuna dichiarazione in merito alla qualità, alla sicurezza o all'idoneità di software o informazioni ivi presenti. Assicuratevi di comprendere appieno i rischi prima di utilizzare i suggerimenti contenuti nel link sopra indicato.

    Si prega di notare che la risorsa linkata in questa discussione è disponibile esclusivamente in inglese. Ci scusiamo sinceramente per qualsiasi inconveniente che questo possa causare a coloro che preferiscono o necessitano di contenuti in italiano. Purtroppo, una versione italiana di questo materiale non è attualmente fornita dalla fonte. Se avete bisogno di assistenza per comprendere il contenuto, vi consigliamo di utilizzare uno strumento o un servizio di traduzione affidabile.

    Spero che queste informazioni siano utili.


    Se la risposta è utile, clicca su ""Accetta risposta"" e vota favorevolmente la risposta positivamente. Se hai domande extra su questa risposta, clicca su ""Commento"".

    Nota: Segui i passaggi in la nostra documentazione per abilitare le notifiche via e-mail se desideri ricevere la notifica correlata per questa discussione.

    1 persona ha trovato utile questa risposta.

Risposta

Le risposte possono essere contrassegnate come "Accettata" dall'autore della domanda e "Consigliata" dai moderatori, in modo da consentire agli utenti di sapere che la risposta ha risolto il problema dell'autore.