Herbers Excel-Forum - das Archiv

VBA führt Druckbefehl falsch aus!

Bild

Betrifft: VBA führt Druckbefehl falsch aus!
von: Johannis Paulix

Geschrieben am: 08.03.2005 15:27:03
Hey Leute!
Ich habe folgendes Problem! Ich habe ein Programm geschrieben, was mir Daten aus einer Tabelle liest, und sie dann in einer Anordnung als Etikett drucken soll! Nun habe ich das Programm fertig.
Wenn ich nun z.B. den Bereich A2:A3 markiere, dann soll er mir den Inhalt der beiden Zeilen auf ein Etikett drucken! Das Problem ist jetzt, das er mir auf beide Etiketten nur das Druckt was in Zelle A3 steht!
Wenn ich den Bereich A2:A10 markiere und den Befehl ausführe, dann druckt er mir 8 x das, was in Feld A10 steht aus!
Warum ist das so! Ich habe den Code angehängt, damit ihr mal nachschauen könnt! Danke schon im Vorraus
MfG Grevi
https://www.herber.de/bbs/user/19363.txt
Bild

Betrifft: AW: VBA führt Druckbefehl falsch aus!
von: Volker

Geschrieben am: 08.03.2005 16:51:10
Hallo Grevi,
ich bin's wieder.
Im Schreiben in Txt-files bin ich zwar nicht so fit, aber das kriegen wir schon hin.
Zuerst mal ein Tip: wenn Dein Code nicht das macht, was Du willst, kannst Du ihn mit F8 einzeln abarbeiten. Durch klick auf den linken Rand kannst Du Haltepunkte setzen.
Wenn Du mit dem Cursor auf eien Variable gehst, wird ihr Wert angezeigt.
Hab mal ein bisschen rumprobiert und ein paar bugs gefunden:
Wenn Du innerhalb der Schleife dein file löscht, ist natürlich alles futsch, was bis zum next i drin gestanden hat und öffnen mußt Du es auch nur einmal.
also:
If Dir("D:\BARCODE.TXT") <> "" Then
Kill "D:\BARCODE.TXT"
End If
FileNum = FreeFile
Open "D:\BARCODE.TXT" For Output As #FileNum
gehören vor die Schleife.
Und schließen solltest Du das file natürlich erst nach der Schleife:
Next i
Close #FileNum ' close the file

End Sub
Hier noch mal das Ganze komplett:

Private Sub cmb_Starten_Click()
Dim InventurNr As String
Dim LogischerName As String
Dim IP_Adresse As String
Dim Speicher As String
Dim System As String
Dim iMax As Integer
Dim i As Integer
Dim FileNum As String
Dim Bereich As String
Dim Zeile As Integer
Dim Spalte As Integer
Zeile = ActiveCell.Row
MsgBox "Die 1 Zeile im markierten Bereich ist: " & Zeile
Bereich = Selection.Address(0, 0)
Worksheets!Tabelle2.Cells(1, 1) = Bereich
Range(Bereich).Activate     'ist überflüssig, da schon selectiert
i = CInt(Mid(Bereich, 2, 1))
iMax = CInt(Mid(Bereich, 5, 1))
If Dir("D:\BARCODE.TXT") <> "" Then
Kill "D:\BARCODE.TXT"
End If
FileNum = FreeFile
Open "D:\BARCODE.TXT" For Output As #FileNum
For i = i To iMax
InventurNr = Worksheets!Tabelle1.Cells(Zeile, 1).Value
LogischerName = Worksheets!Tabelle1.Cells(Zeile, 2).Value
IP_Adresse = Worksheets!Tabelle1.Cells(Zeile, 3).Value
System = Worksheets!Tabelle1.Cells(Zeile, 4).Value
Speicher = Worksheets!Tabelle1.Cells(Zeile, 5).Value
Print #FileNum, Chr(2) & "m" & Chr(10) ' & Chr(13)
Print #FileNum, Chr(2) & "S2" & Chr(10) ' Chr(13)
Print #FileNum, Chr(2) & "L" & Chr(10) ' Chr(13)
Print #FileNum, Chr(2) & "L" & Chr(10) ' Chr(13)
Print #FileNum, "PC" & Chr(10) '  Chr(13)
'-- Allgemeine Groesse
Print #FileNum, "D11" & Chr(10) ' Chr(13)
'-- Druck Intednsitaet Druckkopf Temperatur
Print #FileNum, "H20" & Chr(10) ' Chr(13)
'-- Offset rechter Rand
Print #FileNum, "C0000" & Chr(10) ' Chr(13)
'-- on every row
'-- Druck von links-unten
'-- Druck id  |yyyyxxxx
Print #FileNum, "161100002400025" & Trim(InventurNr) & Chr(10)  ' Chr(13)
Print #FileNum, "141100002700270" & Trim(LogischerName) & Chr(10) ' Chr(13)
Print #FileNum, "131100001700025" & "IP_Adresse: " & Trim(IP_Adresse) & Chr(10) ' Chr(13)
Print #FileNum, "131100001300025" & "Speicher:   " & Trim(Speicher) & Chr(10)   ' Chr(13)
Print #FileNum, "131100000900025" & "System:     " & Trim(System) & Chr(10) ' Chr(13)
Print #FileNum, "1a6208000180025" & InventurNr & LogischerName & Chr(13) & Chr(10) ' Chr(13)
Print #FileNum, Chr(2) & "E" & Chr(10) ' Chr(13)
Print #FileNum, Chr(13) & Chr(10) ' Chr(13)
'Close #FileNum ' close the file    'siehe unten
'Shell (Environ$("COMSPEC") & " /c " & "Copy c:\temp\barcode.txt \\k100\tmp\barcode")
'Shell (Environ$("COMSPEC") & " /c " & "rsh k100 -l tbnw -n lp -dbar1 /tmp/barcode/barcode.txt")
Zeile = Zeile + 1
Next i
Close #FileNum ' close the file
End Sub

Bin gespannt, ob's jetzt geht
Gruß
Volker
 Bild
Excel-Beispiele zum Thema "VBA führt Druckbefehl falsch aus!"
Bei falscher Eingabe alten Wert wiederherstellen