e come faccio a dirgli di andare nella pagina sucessiva quando è finito il foglio???
Desso mi ha fatto giusto il primo foglio ma dopo mi ha scritto un text alla volta in 143 fogli diversi...
come posso fare?![]()
grazie ancora
e come faccio a dirgli di andare nella pagina sucessiva quando è finito il foglio???
Desso mi ha fatto giusto il primo foglio ma dopo mi ha scritto un text alla volta in 143 fogli diversi...
come posso fare?![]()
grazie ancora
una parola è poca e due sono troppe
C'è il metodo NewPage... ricordati di azzerare CurrentX e CurrentY, altrimenti ti stampa diecimila fogli!
Chi non cerca trova.
l'ho messo ma non funziona benissimo...
Ho messo così:
mi fa bene la prima, dopo mi scrive una riga per foglio e l'ultimo foglio me lo fà bene...codice:if top >12000 then Top=400 print.Newpage End if if top >24000 then Top=400 print.Newpage End if
dove sbaglio-????????
grazie mille
una parola è poca e due sono troppe
codice:Printer.Top = 400
Chi non cerca trova.
buongiorno...
Ho provato a fare come hai detto ma non mi accetta il comando...
Printer.Top non è valido...
un'altra idea..![]()
![]()
grazie ancora
una parola è poca e due sono troppe
Oops, l'ultimo messaggio l'ho proprio cannato!
L'oggetto Printer si usa così:
codice:'stampa di 150 righe Dim i As Integer Printer.ScaleMode = vbMillimeters Printer.Font.Name = "Verdana" Printer.Font.Size = 12 For i = 1 To 150 'controllo limite pagina If Printer.CurrentY + Printer.TextHeight("|") > Printer.ScaleHeight Then Printer.NewPage End If 'stampa testo Printer.Print "Questa che vedi è la riga n. " & Format$(i, "000") Next 'fine documento Printer.EndDoc
Chi non cerca trova.
non funziona mi stampa 354 pagine...
la prima la fà giusta le altre no...
una parola è poca e due sono troppe
Posta il tuo codice... l'esempio che ti ho dato funziona da te?
Chi non cerca trova.
sì funziona ma quando gli inserisco il mio codice sballa tutto...
ora te lo posto:
grazie mille per l'aiutocodice:Private Sub Form_Load() Dim i As Integer Printer.ScaleMode = vbMillimeters Printer.Font.Name = "Verdana" Printer.Font.Size = 12 o = 1 Top = 400 v = 1 Topv = 400 Left = 6500 Left_descr = 2000 Left_umg_ass = 5800 Left_descr_comp = 8000 Left_umg_comp = 12000 Left_coeff = 12800 i = 20 Open "C:\dati.txt" For Output As #2 Open "c:\Documents and Settings\Beppe\Desktop\PRODB.txt" For Input As #1 While Not EOF(1) Line Input #1, stringa Ident_assieme = Mid(stringa, 4, 20) Descr_assieme = Mid(stringa, 45, 50) Umg_assieme = Mid(stringa, 95, 2) Ident_componente = Mid(stringa, 171, 20) Descr_componente = Mid(stringa, 191, 50) Umg_componente = Mid(stringa, 241, 2) Coeff_impiego = Mid(stringa, 243, 13) r = Form4.Text1.Text r = r - 1 Do While Not r = 0 Ident = Form4.MSFlexGrid1.TextMatrix((r), 0) If Ident_assieme = Ident Then If Not q = qv Then q = o - v If o < v Then v = v - 2 q = o - v End If End If If Not Ident_assieme = Text(q).Text Then Top = Topv Load Text(o) Text(o).Text = Ident Text(o).Top = Top Text(o).Visible = True Text(o).Width = 1300 Text(o).Height = 60 Printer.CurrentY = Top Printer.Print Text(o).Text & Format$(i, "000") Print #2, Text(o) q = o qv = o o = o + 1 Load Text(o) Text(o).Text = Descr_assieme Text(o).Top = Top Text(o).Visible = True Text(o).Left = Left_descr Text(o).Width = 3500 Text(o).Height = 60 Printer.CurrentY = i Printer.CurrentX = Left_descr Printer.Print Text(o).Text & Format$(i, "000") Print #2, Text(o) o = o + 1 Load Text(o) Text(o).Text = Umg_assieme Text(o).Top = Top Text(o).Left = Left_umg_ass Text(o).Visible = True Text(o).Width = 500 Text(o).Height = 60 Printer.CurrentY = i Printer.CurrentX = Left_umg_ass Printer.Print Text(o).Text & Format$(i, "000") Print #2, Text(o) o = o + 1 End If Load Text(o) Text(o).Text = Ident_componente Text(o).Top = Topv Text(o).Visible = True Text(o).Left = Left Text(o).Width = 1300 Text(o).Height = 60 Printer.CurrentY = i Printer.CurrentX = Left Printer.Print Form9.Text(o).Text & Format$(i, "000") Print #2, Text(o) o = o + 1 Load Text(o) Text(o).Text = Descr_componente Text(o).Top = Topv Text(o).Visible = True Text(o).Left = Left_descr_comp Text(o).Width = 3700 Text(o).Height = 60 Printer.CurrentY = i Printer.CurrentX = Left_descr_comp Printer.Print Text(o).Text & Format$(i, "000") Print #2, Text(o) o = o + 1 Load Text(o) Text(o).Text = Umg_componente Text(o).Top = Topv Text(o).Visible = True Text(o).Left = Left_umg_comp Text(o).Width = 500 Text(o).Height = 60 Printer.CurrentY = i Printer.CurrentX = Left_umg_comp Printer.Print Text(o).Text & Format$(i, "000") Print #2, Text(o) o = o + 1 Load Text(o) Text(o).Text = Coeff_impiego Text(o).Top = Topv Text(o).Visible = True Text(o).Left = Left_coeff Text(o).Width = 2300 Text(o).Height = 60 Printer.CurrentY = i Printer.CurrentX = Left_coeff Printer.Print Text(o).Text & Format$(i, "000") Print #2, Text(o) Topv = Topv + 260 If Printer.CurrentY + Printer.TextHeight("|") > Printer.ScaleHeight Then Printer.NewPage i = 10 End If v = v + 6 o = o + 1 End If i = i + 20 r = r - 1 Loop Wend Close (1) Printer.EndDoc Close #2 End Sub
una parola è poca e due sono troppe
Non te la prendere, ma il codice da te riportato è illeggibile, in quanto:
[list=1][*]non hai spiegato cosa dovrebbe fare il programma[*]non hai incluso nel codice nemmeno un commento per spiegare i vari blocchi[*]non usi correttamente il TAB per spostare i sottoblocchi, come nell'esempio che segue:[/list=1]
Nel tuo codice si vede dove inizia il While ma si fa una fatica terribile a trovare il Wend, i blocchi If sono tutti sulla stessa tabulazione e non si sa quando cominciano e quando finiscono. Mi chiedo cosa capirai tu stesso, riprendendo in mano il codice tra un mese! Guarda ora lo stesso codice risistemato:codice:'il tuo codice... Open "C:\dati.txt" For Output As #2 Open "c:\Documents and Settings\Beppe\Desktop\PRODB.txt" For Input As #1 While Not EOF(1) Line Input #1, stringa Ident_assieme = Mid(stringa, 4, 20) Descr_assieme = Mid(stringa, 45, 50) Umg_assieme = Mid(stringa, 95, 2) '... If Ident_assieme = Ident Then If Not q = qv Then q = o - v If o < v Then v = v - 2 q = o - v End If End If '... End If '... Wend Close (1) Printer.EndDoc
Se tu imparassi ad usare correttemente il tasto TAB (e a commentare il codice), usandolo ogni volta che crei un blocco di codice (per esempio subito sotto le istruzioni If, Wend, Do, For, Select eccetera) scopriresti più facile trovare gli errori da solo, in quanto il codice è più ordinato e leggibile. Inoltre hai più possibilità che qualcuno nel forum ti possa aiutare veramente!codice:'lo stesso codice ma un po' più leggibile... Open "C:\dati.txt" For Output As #2 Open "c:\Documents and Settings\Beppe\Desktop\PRODB.txt" For Input As #1 While Not EOF(1) Line Input #1, stringa Ident_assieme = Mid(stringa, 4, 20) Descr_assieme = Mid(stringa, 45, 50) Umg_assieme = Mid(stringa, 95, 2) '... If Ident_assieme = Ident Then If Not q = qv Then q = o - v If o < v Then v = v - 2 q = o - v End If End If '... End If '... Wend Close (1) Printer.EndDoc
Chi non cerca trova.