Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[vba access 2003]: stampare file di testo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[vba access 2003]: stampare file di testo

Postdi karug64 » 28/01/13 22:58

Salve a tutti.
Alle prese col mio programmino mi sono imbattuto in questo problema che non risco a risolvere.

Ho dei file di testo in formato TXT che per varie elaborazioni leggo in sequenza con "line input #4, rigatesto"

Avrei la necessita' di stampare questi file "cosi' come sono" ...

cioe' dovrei leggere riga x riga e stamparla (o al limite con un unico comando ...).

P.S.
Se poi riuscissi a settare il carattere a 17cpi e la pagina in orizzontale sarebbe il massimo !!!!

Grazie.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: [vba access 2003]: stampare file di testo

Postdi Flash30005 » 29/01/13 22:33

Potresti pubblicare la macro ed eventualmente il file.txt (con le righe interessate)?

Penso ci sia la possibilità di realizzare ciò che desideri ma vorrei impegnarmi con i dati reali
Indica anche se occorre un font particolare perché 17 cpi non significano nulla a meno che non sia il font "Courier" che ogni lettere occupa spazi identici

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 29/01/13 23:53

Ok. Ecco un file di esempio:

http://rapidshare.com/files/3443276836/TEST_PRINT.txt

ed il codice con cui leggo il tabulato e definisco le righe di inizio e fine su cui lavorare.


Codice: Seleziona tutto
' CONTROLLA L'ESISTENZA DEL TABULATO
    TabCtl100.Value = 4
    If comp6.Value = -1 Then
        If Len(Trim(tab6.Value & "")) <> 0 Then
            filedacercare = ""
            filedacercare = (Trim(Testo99.Value & "")) + "\" + (Trim(tab6.Value & ""))
            If FileEsiste3(filedacercare) Then
                ' cerca la stringa che mi fa capire che inzia la parte di tabulato che mi interessa
                ' se la trova ne definisce riga iniziale e finale
                rig6in = 0
                rig6fi = 0
                xc = 0
                Close #4
                Open Trim(filedacercare) For Input As #4
               
                Do While Not EOF(4)
                    xc = xc + 1
                    Line Input #4, RigaTesto
                        If rig6in = 0 Then
                            ctrrig = "STRINGA :  "
                            If (InStr(RigaTesto, ctrrig) <> 0) Then
                                rig6in = xc
                            End If
                        Else
                            ctrrig = "STRINGA FINALE"
                            If (InStr(RigaTesto, ctrrig) <> 0) Then
                                rig6fi = xc + 4
                                Exit Do
                            End If
                        End If
                Loop

            Else
                If MsgBox("Errore critico !! Il tabulato " & Trim(tab6.Value & "") & " non è presente nella cartella specificata !! , vbCritical + vbYesNo, "Tabulato non presente") = vbYes Then
                    ctrl_bloc = -1
                Else
                    ctrl_bloc = 1
                End If
            End If
        End If
    End If


con questa routine, controllo l'esistenza del file e se e' presnete lo leggo fino a definire la riga di inizio e di fine che servono per la mia elaborazione.

La routine di stampa, dovrebbe, una volta eseguita questa, stampare le righe comprese tra rig6in e rig6fi.
Qualcosa del tipo:

Codice: Seleziona tutto
Close #4
Open Trim(filedacercare) For Input As #4
                ri6 = 0
                    Do While Not EOF(4)
                    ri6 = ri6 + 1
                    Line Input #4, RigaTesto
                        ' se compreso nell'intervallo
                        If ri6 >= rig6in And ri6 <= rig6fi Then
                                STAMPA LA RIGA <<====================
                         endif
                loop


Il font non mi interessa. Dicevo 17cpi perchè pensavo che una stampa compressa permettesse la scrittura in verticale e non richiedesse particolari passaggi per impostare il foglio in orizzontale.

Finisco col dirti che non mi interessa la maschera per selezionare la stampante in quanto l'output dovrebbe essere indirizzato alla stampante predefinita del sistema.

P.S.
L'esempio allegato, essendo di poche righe, puo' essere stampato per intero.

questo codice gira su access 2003.

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: [vba access 2003]: stampare file di testo

Postdi Flash30005 » 30/01/13 00:00

Il file non è scaricabile
per favore usa questo server host

Inoltre vedo che la macro è più complessa di una semplice apertura file.txt e stampa riga 4
pertanto dovresti pubblicare l'intera macro (se possibile)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 30/01/13 00:16

http://www.filedropper.com/testprint

la macro pubblicata e' intera. Gli unici riferiment che mancano sono i path del file memoprizzati nelle variabili testo99 e tab6.

In ogni caso queste righe possono essere rese autonome

Codice: Seleziona tutto
Close #4
                Open Trim(filedacercare) For Input As #4
               
                Do While Not EOF(4)
                    xc = xc + 1
                    Line Input #4, RigaTesto
                        If rig6in = 0 Then
                            ctrrig = "STRINGA :  "
                            If (InStr(RigaTesto, ctrrig) <> 0) Then
                                rig6in = xc
                            End If
                        Else
                            ctrrig = "STRINGA FINALE"
                            If (InStr(RigaTesto, ctrrig) <> 0) Then
                                rig6fi = xc + 4
                                Exit Do
                            End If
                        End If
                Loop


Fammi sapere se cosi' va bene.
Grazie.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 30/01/13 07:42

Ciao Flash.
Ho pensato questo:

se è piu' facile stampare un file intero, con un comando tipo

STAMPA tabulato.txt

posso modificare il codice e cosi' mentre leggo le righe che mi interessano posso riscriverle in un nuovo file di appoggio pronto da stampare.

Attendo tue notizie.
Grazie.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: [vba access 2003]: stampare file di testo

Postdi Flash30005 » 30/01/13 08:18

Ci sono diversi modi per stampare una riga testo
il più semplice mi sembra questo (senza uso di Api):
'Dichiarazioni inizio macro
Codice: Seleziona tutto
   
 Dim strPrtCmd As String
Perc = "C:\TuoPercorso\Karug64\"
    NFile = "TEST_PRINT.txt"  'Nome del file


In corrispondenza della stampa voluta inserisci questo codice
Codice: Seleziona tutto
                                'STAMPA LA RIGA <<====================
Open Perc & "TempF.Txt" For Output As #5
Print #5, Rigatesto
 Close 5#
strPrtCmd = Environ("WINDIR") & "\system32\NOTEPAD.EXE /p " & Perc & "TempF.Txt"
Shell strPrtCmd

Dopo il loop inserisci questo codice
Codice: Seleziona tutto
                Loop  '<<<< esistente

    Close #4   '<<<< esistente
    Kill Perc & "TempF.Txt"   '<<< aggiungere


Purtroppo ancora non sono riuscito a trovare la maniera di orientare la stampa per i file testo mentre è possibile ottenerla per gli oggetti del database (report, maschere etc)

Ciao

EDIT: ho letto solo ora il tuo ultimo messaggio, se vuoi stampare l'intero file devi sostituire il nome del file "TempF.Txt" (riga di comando strPrtCmd) con il nome del file originale
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 30/01/13 10:09

Ok. Grazie lo stesso.

Ma, mi viene una nuova soluzione (che io non saprei praticare e quindi la propongo al forum)....

Se si potesse aprire una istanza di word, impostare da codice pagina orizzontale e carattere courier new 8 cpi e man mano che leggo le righe le scrivo su questo file, alla fine mi troverei dei file .doc pronti per essere stampati con il comando che mi hai suggerito ....

Secondo voi è possibile seguire questa via ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: [vba access 2003]: stampare file di testo

Postdi Flash30005 » 30/01/13 20:09

Non ho capito se vuoi l'intero file, se così
allora usa questa macro che trascrive tutto in un foglio di excel
inserisce il carattere "Courier New"
Misura 8
Orienta la pagina orizzontale e stampa il file
se ti occorre solo una riga allora potrai inserirla come ho fatto nella macro precedente (creando un file temporaneo)
Codice: Seleziona tutto
Private Sub Comando1_Click()
    Set XL = CreateObject("Excel.Application")
    XL.Visible = False
    Perc = "C:\TuoPercorso\Karug64\"
    NFile = "TEST_PRINT.txt"
MyFile = Perc & NFile
XL.Workbooks.OpenText MyFile
Set WB = XL.ActiveWorkbook
Set WS = WB.Worksheets(1)
WS.Columns("A:Z").select
For r = 1 To WS.UsedRange.Rows.Count
    If InStr(WS.cells(r, 1), Chr(12)) Then
        WS.cells(r, 1).select
        XL.ActiveWindow.SelectedSheets.HPageBreaks.Add XL.ActiveCell
    End If
Next r
XL.Selection.Columns.AutoFit
XL.Selection.Font.Name = "Courier New"
XL.Selection.Font.Size = 8
XL.Selection.RowHeight = 12.5
Set PageSetup = WS.PageSetup
    PageSetup.Orientation = 2
WB.PrintOut
WB.Close False
XL.Quit
Set XL = Nothing
End Sub


Inseriscila nel giusto pulsante comando
Fai sapere
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 30/01/13 21:56

Mi hai preceduto di pochissimo ....
Ho trovato questa soluzione :

Codice: Seleziona tutto
Dim MyWord As New Word.Application

        MyWord.Visible = True
        MyWord.Documents.Add
        MyWord.Selection.Font.Name = "Courier New"
        MyWord.Selection.Font.Size = 8
        MyWord.Selection.PageSetup.Orientation = wdOrientLandscape
       
       If Len(Trim(Tab3.Value & "")) <> 0 Then
            filedacercare = ""
            filedacercare = (Trim(Testo99.Value & "")) + "\" + (Trim(Tab3.Value & ""))
                Close #4
                Open Trim(filedacercare) For Input As #4
                ri3 = 0
                riga = 10
                    Do While Not EOF(4)
                    ri3 = ri3 + 1
                    Line Input #4, RigaTesto
                        ' se compreso nell'intervallo è OK
                        If ri3 >= rig3in And ri3 <= rig3fi Then
                           MyWord.Selection.TypeText Text:=RigaTesto
                           MyWord.Selection.TypeParagraph
                        End If
                Loop
       End If
     
     MyWord.ActiveDocument.SaveAs "C:\test11.doc"
     MyWord.PrintOut
     MyWord.Quit
     


che funziona perfettamente.

Ho provato la tua con il file di testo che ho linkato, pero' la stampa non e' perfetta, nel senso che mi mette tre spazi bianchi dopo la lettera Ccc, due spazi dopo il primo 800,00 e cinque spazi bianchi dopo Coo dividendo cosi' le parole e sfalsando le righe ....
Ma e' piu' veloce della mia ...




Ciao.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: [vba access 2003]: stampare file di testo

Postdi Flash30005 » 30/01/13 22:19

Penso che gli spazi si possano togliere
ma si notano sul foglio di excel oppure in stampa?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 30/01/13 22:30

Flash30005 ha scritto:Penso che gli spazi si possano togliere
ma si notano sul foglio di excel oppure in stampa?


il foglio excel non lo vedo neppure !!!
Si vedono in stampa.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: [vba access 2003]: stampare file di testo

Postdi Flash30005 » 30/01/13 22:51

Non so come devono essere incolonnati i dati
potresti inviare un'immagine di come dovrebbero essere stampati?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba access 2003]: stampare file di testo

Postdi Flash30005 » 31/01/13 00:07

Aggiungo questa macro modificata perché mi sono reso conto che il problema è dovuto ad un "campo" con una stringa più lunga delle altre infatti sostituendo i caratteri "iii E.S.B." con degli spazi e utilizzando questa macro si ottiene una stampa in colonna
Codice: Seleziona tutto
Private Sub Comando1_Click()
    Set XL = CreateObject("Excel.Application")
    XL.Visible = True
    Perc = "C:\Users\Flash\Documents\A_Armando\XARMANDO\MacroExcel\HIJK\Karug64\"
    NFile = "TEST_PRINT.txt"
MyFile = Perc & NFile
XL.Workbooks.OpenText MyFile
Set WB = XL.ActiveWorkbook
Set WS = WB.Worksheets(1)
'XL.Selection.Columns.AutoFit
    WS.Columns("A").ColumnWidth = 54.57
    WS.Columns("B").ColumnWidth = 7.29
    WS.Columns("C").ColumnWidth = 24.57
    WS.Columns("D").ColumnWidth = 10.57
    WS.Columns("E").ColumnWidth = 10.57
    WS.Columns("F").ColumnWidth = 21
WS.Columns("A:Z").Select
XL.Selection.Font.Name = "Courier New"
XL.Selection.Font.Size = 8
XL.Selection.RowHeight = 12.5
Set PageSetup = WS.PageSetup
PageSetup.Orientation = 2
PageSetup.FitToPagesWide = 1
PageSetup.FitToPagesTall = 1
WB.PrintOut
WB.Close False
XL.Quit
Set XL = Nothing
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 31/01/13 00:49

Continua a non andare ...

II soluzione excel

http://www.filedropper.com/secondasoluzionexls

nella prima gli spazi bianchi erano piu' ridotti ed il tabulato rientrava in una pagina.

soluzione word

http://www.filedropper.com/soluzioneword

P.S.
I tabulati da stampare sono tutti diversi nella loro composizione.
Ciao
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: [vba access 2003]: stampare file di testo

Postdi Anthony47 » 31/01/13 14:30

Con Word mi pare che hai risolto; comunque nella soluzione Excel io eviterei qualsiasi trasposizione in colonna, esplicita o implicita, usando invece del semplice ma imprevedibile XL.Workbooks.OpenText MyFile
un piu' articolato
Codice: Seleziona tutto
    Workbooks.OpenText Filename:=myFile, Origin:=xlMSDOS, StartRow:=1, _
        DataType:=xlDelimited, TextQualifier:= xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
        , Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
        TrailingMinusNumbers:=True

Questo dovrebbe importare il txt come e', che ho capito e' quello che ti serve.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 31/01/13 18:22

si. Infatti con word ho risolto.
Ma ho voluto provare a sostituire la linea di codice precedentemente proposta con quella postata da te.In effetti l'effetto ottoenuto è pressocchè analogo a quello di word. L'unico problema e' che nonostante il foglio sia in orizzontale, occorrerebbe settare il margine dx e sx a 0 per poter fare entrare tutto il testo in una pagina ....

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

[vba word 2003]: inserire testata e pie di pagina

Postdi karug64 » 31/01/13 19:16

Salve a ttti.

Come detto nel mio post ([vba access 2003]: stampare file di testo) sono riuscito ad importare un file txt su doc.

Mi occorrerebbe, ora, poter inserire una intestazione ed un piè di pagina (sempre da codice).

Sapreste darmi qualche dritta ?

Grazie


EDIT Flash: Ho unito i due topic perché tratta lo stesso argomento
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: [vba access 2003]: stampare file di testo

Postdi Flash30005 » 31/01/13 22:21

Insisto con excel (più familiare e veloce) ;)
Codice: Seleziona tutto
Sub Importa()
    Set XL = CreateObject("Excel.Application")
    XL.Visible = False
    Perc = "C:\Tuopercorso\Karug64\"
    NFile = "TEST_PRINT.txt"
    MyFile = Perc & NFile
    XL.Workbooks.OpenText MyFile
    Set WB = XL.ActiveWorkbook
    Set WS = WB.Worksheets(1)
    WS.cells.Clear
    Close #1
    Riga = 0
    Open MyFile For Input As #1
    Do While Not EOF(1)
        Riga = Riga + 1
        Line Input #1, Rigatesto
        WS.Range("A" & Riga).Value = Rigatesto
    Loop
    Close #1
    WS.Columns("A").Font.Name = "Courier New"
    WS.Columns("A").Font.Size = 8
    WS.Columns("A").EntireColumn.AutoFit
    Set PageSetup = WS.PageSetup
    PageSetup.Orientation = 2
    PageSetup.LeftMargin = XL.InchesToPoints(0.25)
    PageSetup.RightMargin = XL.Application.InchesToPoints(0.25)
    WB.PrintOut
    WB.Close False
    XL.Quit
Set XL = Nothing
End Sub

E penso che si riesca ad inserire anche la Testata e il Pie' di pagina
Mi dedicherò solo dopo tua conferma che questa soluzione vada bene

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba access 2003]: stampare file di testo

Postdi karug64 » 01/02/13 00:39

Ti confermo che la soluzione da te proposta va bene.

Grazie.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[vba access 2003]: stampare file di testo":


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

cron