Condividi tramite

VBA Excel: stampare file

Anonimo
2017-07-24T21:04:10+00:00

Buonasera,

nell'ambito di un programma VBA Excel, vorrei poter stampare uno più files di una directory.

Praticamente, vorrei scorrere, ad esempio, la directory "C:\Prova" e reperire i files "C:\Prova\F1.txt", "C:\Prova\F2.doc" (usando, ad es., FileSystemObject) e poi stamparli direttamente.

Mi manca quest'ultimo pezzo, cioè quali istruzioni inserire per inviare i files individuati alla stampante corrente (ActivePrintero, eventualmente, modificarla prima della stampa e ripristinarla successivamente).

Visto che ci sono, se qualcuno mi suggerisce come fare anche in Access, non mi dispiacerebbe.

Grazie in anticipo

Ivo

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-07-25T07:34:13+00:00

Ciao Ivo,

nell'ambito di un programma VBA Excel, vorrei poter stampare uno più files di una directory.

Praticamente, vorrei scorrere, ad esempio, la directory "C:\Prova" e reperire i files "C:\Prova\F1.txt", "C:\Prova\F2.doc" (usando, ad es., FileSystemObject) e poi stamparli direttamente.

Mi manca quest'ultimo pezzo, cioè quali istruzioni inserire per inviare i files individuati alla stampante corrente (ActivePrintero, eventualmente, modificarla prima della stampa e ripristinarla successivamente).

Prova qualcosa del genere:

'=========>>

Option Explicit

'--------->>

Public Sub Tester()

    Dim oFSO As Object

    Dim oFolder As Object

    Dim arrFiles As Variant

    Dim sActivePrinter As String

    Dim i As Long

    Const sPercorso As String = "**C:\Prova**"

    Const sFiles As String = "F1.txt,F2.txt,F3.Doc"

    Const wdDoNotSaveChanges = 0

    Const sPrinter = "Microsoft XPS Document Writer on Ne02:"

    arrFiles = Split(sFiles, ",")

    Set oFSO = CreateObject("Scripting.FileSystemObject")

    Set oFolder = oFSO.getfolder(sPercorso)

    With CreateObject("Word.Application")

        .Visible = True  '\ oppure: False

        sActivePrinter = .ActivePrinter

        .ActivePrinter = sPrinter

        For i = LBound(arrFiles) To UBound(arrFiles)

            .Documents.Open (sPercorso & arrFiles(i))

            .Options.PrintBackground = False

            .ActiveDocument.PrintOut

            .ActiveDocument.Close

        Next i

        .ActivePrinter = sActivePrinter

        .Quit wdDoNotSaveChanges

    End With

End Sub

'<<=========

Visto che ci sono, se qualcuno mi suggerisce come fare anche in Access, non mi dispiacerebbe.

Forse, prova l'identico codice ... :-)

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

0 risposte aggiuntive

Ordina per: Più utili