Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Notepad/Editor Datei öffnen u. drucken

Notepad/Editor Datei öffnen u. drucken
29.12.2021 17:16:33
Mr.Right
Hallo zusammen,
ich möchte mit Excel VBA eine Editor-/ Notepad-Datei also .txt Datei öffnen und diese an einen vorher bereits definierten Drucker automatisch ausdrucken lassen.
Der Inhalt der Text-Datei wird bereits in meinem Ablauf vorgeschrieben und dann gespeichert. Würde am liebsten die Datei direkt nachdem ich sie geschrieben habe drucken, aber das funktioniert was ich so recherschiert habe leider nicht. Meine Excel/ VBA-Kenntnisse sind bescheiden. Habe im Internet bereits mehrfach gelesen das man es mit dem Shell-Befehl machen kann, nur habe ich keine Ahnung wie ich das umsetze. Als Anmerkung noch, der Name der jeweiligen Textdatei ändert sich und wird in die Variable strDateiname geschrieben.
Bisheriger Code sieht wie folgt aus:

Function Txt_datei(x As Integer)
Dim sht As Worksheet
Set sht = ThisWorkbook.Worksheets("Tabelle1")
'Speicherpfad der Txt-Datei
strPath = "C:...Pfad"
'Dateiname = Name .txt
strDateiname = sht.Range("G" & x) & ".txt"
'Code wird in Txt-Datei geschrieben
Open strPath & strDateiname For Output As #x
Print #x, "^XA" _
& vbCrLf & "^CFP,12" _
& vbCrLf & "^FO65,20^FD---^FS" _
& vbCrLf & "^FO85,40^FD " & sht.Range("G" & x) & " ^FS" _
& vbCrLf & "^FO7^BQN,2,2^FDQA," & "ANR " & sht.Range("C" & x) & " D " & sht.Range("D" & x) & " SN " & sht.Range("G" & x) & " ^FS" _
& vbCrLf & "^XZ"
Close #x
End Function
Habe bereits das hier probiert:
Dim RetVal
strPath = "C:...81910-21002.txt"
RetVal = Shell("C:\WINDOWS\NOTEPAD.EXE" & strPath, 1)
aber er findet hier schon die Datei nicht diese ich öffnen möchte, obwohl die Schreibweise beachtet wurde und auch richtig geschrieben ist. Wenn ich nur das Notepad mir öffnen lasse funktioniert es.
Wäre schön wenn mir jemand helfen könnte :)
Vielen Dank

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
vielleicht so über SendKeys ?
29.12.2021 20:29:29
Udo.D
... oder so ähnlich ...

Sub Editor_öffnen_drucken()
' Mal angenommen dein Inhalt steht in A1 oder ...
[A1].Copy ' oder [A1:K25] usw
' ChDrive Left(Sheets(1).]Range("A1").Text, 2) ' wenn der Pfad mal auf eine Datei gemünzt wird auf einem anderen Laufwerk
' und du nach Notepad.exe" noch ... & " /Dateiname etc. , ", vbNormalFocus) angibst
Dim appID As Integer
appID = Shell("C:\WINDOWS\NOTEPAD.EXE", vbNormalFocus)
With Application
.Wait (Now + TimeValue("0:00:02"))
' .SendKeys "^N", True ' neues Sheet
.SendKeys "^v", True ' Einfügen
' .SendKeys ("{tab}")  ' Tabulatoren Sprung ( im Menü des zweiten Programmes ( in dem Fall Notepad.exe )
' .SendKeys ("{tab}")  ' so oft bis du eben an die gewünschte Stelle gesprungen bist, dann z.B.
' .SendKeys "^a" ' Alles markieren
' .SendKeys "{DELETE}" ' Auswahl löschen
' .SendKeys "{ENTER}" ' Auswahl bestätigen
End With
SendKeys "^p", True
'  oder hier noch weitere Stufen mit TAB ; Enter usw ... um quasi im Menü des Druckerfensters herum zu hüpfen
'  und da dann entspr. Einstellungen vorzunehmen , weitere SendKeys Befehle findest du über google hierzu
SendKeys "{ENTER}" ' zum Schluss dann auf die Drucken Taste springen und Auswahl bestätigen
End Sub
LG Udo
Anzeige
AW: Notepad/Editor Datei öffnen u. drucken
29.12.2021 21:44:09
volti
Hallo,
Du hast beim Shell-Befehl ein Leerzeichen vergessen. Parameter werden im DOS über Leerzeichen abgetrennt.
Bitte aber auch beachten, dass übergebende Dateinamen kein Leerzeichen enthalten dürfen oder diese in Gänsefüßchen zu setzen sind.
Alternativ kannst Du auch die Shellexecute-Funktion verwenden. Entweder die API-Version oder, wie im Beispiel, die Shell-Version.
Bei Verwendung der SendKeys Print-Funktion Strg-P die Ausführungen von Udo beachten.
Code:

[Cc]

Declare PtrSafe Sub Sleep Lib "kernel32" ( _ ByVal dwMilliseconds As Long) Sub Test1() strPath = "C:...81910-21002.txt" RetVal = Shell("C:\WINDOWS\NOTEPAD.EXE " & """" & strPath & """", 1) Sleep 500 SendKeys "^p", True End Sub Sub Test2() strPath = "C:...81910-21002.txt" With CreateObject("Shell.Application") .ShellExecute strPath, "", "", "open", 4 Sleep 500 SendKeys "^p", True End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Notepad/Editor Datei öffnen u. drucken
30.12.2021 10:04:17
ChrisL
Hi
Hier noch eine Variante, welche ohne SendKeys auskommt. 64-bit Version.

Private Declare PtrSafe Function ShellExecuteA Lib "shell32.dll" ( _
ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long _
) As Long


Sub t()
ShellExecuteA 0&, "Print", "C:\Pfad\Testdatei.txt", vbNullString, vbNullString, 0
End Sub
cu
Chris
AW: Notepad/Editor Datei öffnen u. drucken
30.12.2021 10:14:11
Nepumuk
Hallo,
Drucken ohne vorher öffnen geht so:

Option Explicit
Private Declare PtrSafe Function ShellExecuteA Lib "shell32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As LongPtr
Private Const SW_HIDE As Long = 0
Public Sub Test()
Dim strPrintername As String
strPrintername = Chr$(34) & "Microsoft Print to PDF" & Chr$(34)
Call ShellExecuteA(0, "PRINTTO", "H:\ROM\TeamViewer.txt", strPrintername, vbNullString, SW_HIDE)
End Sub
Gruß
Nepumuk
Anzeige
wow, tolle Lösungen eurerseits ! Die ...
30.12.2021 16:07:21
Udo.D
nehm ich mir ebenfalls gerne zum Vorbild , prima
Lieben Dank auch meinerseits !
Udo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige