| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | 3DEXPERIENCE SOLIDWORKS: Ihre Konstruktionslösung der nächsten Generation |
Autor
|
Thema: Api Drucken mit Windows Systemdrucker (1389 mal gelesen)
|
Ernieundbert Mitglied Konstrukteur
Beiträge: 99 Registriert: 25.10.2011 Solid Works 2013 SP5 PDM Workgroup Win 7 64bit Fujitsu Celsius M460 Quadro FX 3800 Intel Core2Quad CPU 9330 2,5GHz 8GB RAM
|
erstellt am: 27. Mrz. 2014 13:13 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte mit einem Makro Zeichnungen auf meinem im PC eingestellten Windows Standarddrucker ausdrucken. Mit meiner Zeile swModel.Extension.PrintOut2 vPageArray, copies, collate, "", "" nimmt er aber immer den in der Zeichnung eingestellten Drucker . Wie kann man das ändern? ------------------ Einen schönen Gruß, Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 27. Mrz. 2014 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für Ernieundbert
|
Ernieundbert Mitglied Konstrukteur
Beiträge: 99 Registriert: 25.10.2011 Solid Works 2013 SP5 PDM Workgroup Win 7 64bit Fujitsu Celsius M460 Quadro FX 3800 Intel Core2Quad CPU 9330 2,5GHz 8GB RAM
|
erstellt am: 28. Mrz. 2014 07:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Andi, Print.Direct bedient sich auch am in der Zeichnung vorgewählten Drucker. Anhand deines Makros habe ich mir aber mein Makro so einstellen können das ich den Drucker zumindest vorwählen kann. Danke dir! ------------------ Einen schönen Gruß, Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
Beiträge: 1358 Registriert: 24.07.2002 AutoCAD ACA 2019 Solidworks 2021 Sp5.1 Enterprise PDM 2021 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell T3620 Intel Core i7-7700K 16 GB Arbeitsspeicher 2x Dell Ultrasharp U2415 Dell M4800
|
erstellt am: 28. Mrz. 2014 08:50 <-- editieren / zitieren --> Unities abgeben: Nur für Ernieundbert
Hi Thomas, Hier mal ein Code um den Standard Windows Drucker zu ermitteln: Code:
Public Sub GetStdPrinterName(strPrinterName As String, strDriver As String, strPort As String) Dim Buffer As String Dim lngReturn1 As Long, lngReturn2 As Long, lngReturn3 As Long Buffer = Space(8192) lngReturn1 = GetProfileString("windows", "Device", "", Buffer, Len(Buffer)) If lngReturn1 Then Buffer = Mid$(Buffer, 1, lngReturn1) lngReturn2 = InStr(Buffer, ",") strPrinterName = Mid$(Buffer, 1, lngReturn2 - 1) lngReturn3 = InStr(lngReturn2 + 1, Buffer, ",") strDriver = Mid$(Buffer, lngReturn2 + 1, lngReturn3 - lngReturn2 - 1) strPort = Mid$(Buffer, lngReturn3 + 1) Else strPrinterName = "" strDriver = "" strPort = "" End If End Sub
Aufrufen und zuweisen mit:
Code: 'Standard-Drucker ermitteln und setzen. Dim strPrinterName As String, strDriver As String, strPort As String Call GetStdPrinterName(strPrinterName, strDriver, strPort) oDrw.Printer = strPrinterName
Vielleicht kann es ja noch jemand brauchen. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 28. Mrz. 2014 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für Ernieundbert
Hallo Thomas Hier noch eine weitere Variante zum ermitteln des Standarddruckerbnamens. Code: #If VBA7 Then ' VBA7 Public Declare PtrSafe Function GetProfileString Lib "kernel32" _ Alias "GetProfileStringA" _ (ByVal lpAppName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long) As Long #Else ' Downlevel when using previous version of VBA7 Public Declare Function GetProfileString Lib "kernel32" _ Alias "GetProfileStringA" _ (ByVal lpAppName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, ByVal nSize As Long) As Long #End IfPublic Function DefaultPrinter() As String Dim strReturn As String Dim intReturn As Integer strReturn = Space(255) intReturn = GetProfileString("Windows", ByVal "device", "", _ strReturn, Len(strReturn)) If intReturn Then strReturn = UCase(Left(strReturn, InStr(strReturn, ",") - 1)) End If DefaultPrinter = strReturn End Function
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ernieundbert Mitglied Konstrukteur
Beiträge: 99 Registriert: 25.10.2011 Solid Works 2013 SP5 PDM Workgroup Win 7 64bit Fujitsu Celsius M460 Quadro FX 3800 Intel Core2Quad CPU 9330 2,5GHz 8GB RAM
|
erstellt am: 03. Apr. 2014 09:46 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Carsten1210: Hi Thomas,Hier mal ein Code um den Standard Windows Drucker zu ermitteln: Code:
Public Sub GetStdPrinterName(strPrinterName As String, strDriver As String, strPort As String) Dim Buffer As String Dim lngReturn1 As Long, lngReturn2 As Long, lngReturn3 As Long Buffer = Space(8192) lngReturn1 = GetProfileString("windows", "Device", "", Buffer, Len(Buffer)) If lngReturn1 Then Buffer = Mid$(Buffer, 1, lngReturn1) lngReturn2 = InStr(Buffer, ",") strPrinterName = Mid$(Buffer, 1, lngReturn2 - 1) lngReturn3 = InStr(lngReturn2 + 1, Buffer, ",") strDriver = Mid$(Buffer, lngReturn2 + 1, lngReturn3 - lngReturn2 - 1) strPort = Mid$(Buffer, lngReturn3 + 1) Else strPrinterName = "" strDriver = "" strPort = "" End If End Sub
Aufrufen und zuweisen mit:
Code: 'Standard-Drucker ermitteln und setzen. Dim strPrinterName As String, strDriver As String, strPort As String Call GetStdPrinterName(strPrinterName, strDriver, strPort) oDrw.Printer = strPrinterName
Vielleicht kann es ja noch jemand brauchen. Gruß, Carsten
Hallo Carsten, wenn ich den Code so laufen lasse bekomme ich an der Stelle GetProfileString immer die Fehlermeldung das die Sub oder function nicht definiert ist. Muss ich das noch irgendwie anders einbinden? ------------------ Einen schönen Gruß, Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|