Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBA Papierschacht mit Makro wählen

Mitglied: Hatl

Hatl (Level 1) - Jetzt verbinden

01.08.2006, aktualisiert 03.08.2006, 9272 Aufrufe, 4 Kommentare

Hallo!

Ich möchte eine Wordvorlage (*.dot) erstellen welche später von einem Programm mit Daten gefüllt wird. In dieser Wordvorlage muss definiert werden, dass die erste Seite immer aus der 2 Lade gedruckt wird und der Rest immer aus der ersten Lade.
Über Datei -> Seite einrichten -> Format funktioniert es nicht da es auf unterschiedlichen Druckern (zwar alles Kyocera aber unterschiedliche Modelle) und somit mit unterschiedlichen Ladenbezeichnungen funktionieren muss.
Also wird mir nichts anderes überbleiben als ein Makro zu schreiben, welches die Ladenbezeichnung und die interne Ladennummer ermittelt.
Hab im Netzt gesucht und folgendes relativ kompliziertes Makro gefunden:

Public Const DC_BINNAMES = 12
Public Const DC_BINS = 6
Declare Function DeviceCapabilities Lib "winspool.drv" Alias _
"DeviceCapabilitiesA" (ByVal lpDeviceName As String, _
ByVal lpPort As String, ByVal iIndex As Long, _
ByVal lpOutput As Long, ByVal lpDevMode As Long) As Long
Public Type Zufuhr
Nummer As Integer
Name As String * 24
End Type
Public Function HolePapierfaecher(drucker As Printer, _
faecher() As Zufuhr) as Long
Dim devicename As String, portname As String
Dim rc As Long, i As Long
Dim bins() As Integer
Dim binnames As String
If drucker Is Nothing Then
devicename = ""
portname = ""
Else
devicename = drucker.devicename
portname = drucker.port
End If
If devicename = "" Or portname = "" Then
MsgBox "Ausgewaehlter Drucker nicht gefunden!", _
vbCritical + vbOKOnly, App.ProductName
HolePapierfaecher = 0
Exit Function
End If
rc = DeviceCapabilities(devicename, portname, DC_BINS, 0, 0)
If rc = 0 Then
MsgBox "Ausgewaehlter Drucker nicht gefunden!", _
vbCritical + vbOKOnly, App.ProductName
HolePapierfaecher = 0
Exit Function
End If
ReDim bins(1 To rc)
rc = DeviceCapabilities(devicename, portname, DC_BINS, VarPtr(bins(1)), 0)
binnames = String(24 * rc, Chr(0))
rc = DeviceCapabilities(devicename, portname, DC_BINNAMES,
StrPtr(binnames), 0)
binnames = StrConv(binnames, vbUnicode)
ReDim faecher(1 To rc)
HolePapierfaecher = rc
For i = 1 To rc
faecher(i).Nummer = bins(i)
faecher(i).Name = Mid(binnames, ((i - 1) * 24) + 1, 24)
If InStr(1, faecher(i).Name, Chr(0)) > 0 Then
faecher(i).Name = Left(faecher(i).Name, _
InStr(1, faecher(i).Name, Chr(0)) - 1)
End If
Next
End Function

Meinen Frage jetzt dazu, wo im VB-Editor gehört das hin? Ich hab es in ein Modul geschrieben, aber jetzt muss ich die Funktion im "ThisDocument" aufrufen, wie macht man das? Bzw. hat jemand eine Idee wie man das einfacher machen könnte?
Ich steh da auf "der Leitung"

Vielen Dank!!

mfg
Mitglied: AndreasHoster
01.08.2006 um 16:54 Uhr
Prinzipiell kommt es ins Document_Open Ereignis rein, damit beim Öffnen des Dokuments die Daten gesetzt werden (im VBA Editor auf ThisDocument, dann beim Code-Editor Teil einfach
Private Sub Document_Open()
REM Hier Funktion aus Modul aufrufen
End Sub
eingeben

Ich sehe nur ein Problem, Du setzt beim Öffnen dann die Werte ein. Wenn jetzt jemand über Datei -> Drucken einen anderen Drucker auswählt, stehen falsche Werte drin. Oder hat jeder User nur einen Drucker zugeordnet?
Bitte warten ..
Mitglied: Hatl
01.08.2006 um 17:06 Uhr
Hallo!

Erstmal Danke für die Antwort!

Also die Funktion selbst kommt also in ein Modul.
Der Aufruf kommt ins Document open.
Ist das soweit richtig?

Aber wie schaut der Aufruf aus? Was muss ich effektiv hinschreiben damit die Funktion aufgerufen wird. Vorallem wie werden die Paramter angegeben?

Die Funktion ist so definiert:
Public Function HolePapierfaecher(drucker As Printer, faecher() As Zufuhr) as Long

Den Aktuellen Drucker könnte ich ermitteln und als Paramter übergeben aber "faecher" soll in der Funktion ja ermittelt werden.


Stimmt es passt dann nur für den Drucker der beim öffnen eingestellt war, aber das genügt den das Dokument soll eh immer am Standarddrucker ausgedruckt werden, bei den anderen gibts keine Laden.

Danke!

mfg
Bitte warten ..
Mitglied: Hatl
02.08.2006 um 11:10 Uhr
Hab es hin bekommen, der Aufruf schaut natürlich so aus:

Dim var() As Zufuhr
Dim drucker As String
Dim out As Variant
drucker = ActivePrinter

out = HolePapierfaecher(drucker, var())

Da stand ich wohl wirklich auf der Leitung.

Vielen Dank!
Bitte warten ..
Mitglied: Hatl
03.08.2006 um 15:17 Uhr
Hallo nochmal!

Nachdem die Auswahl der Papierschächte nun wunderbar funktioniert, wäre es ja doch einen gute Verbesserung wenn die Schächte auch stimmen wenn ein User den Drucker ändert.
Es könnte ja eigentlich doch vorkommen das ein user mal auf einen anderen Drucker als seinen Standard drucken möchte.

Also müste ich irgendwie mitbekommen wenn der User den Drucker ändert und dann das Makro nochmal ausführen, geht das?

Momentan hab ich den Funktionsaufruf (HolePapierfaecher) im Document_New() hier werden dann auch die ermittelten Daten aus der Funktion verarbeitet und die entsprechenden Werte für die Papierschächte gesetzt. Das ganze Dokument ist einen *.dot.
Somit wird das Makro immer dann ausgeführt wenn ein neues auf dieser Vorlage basierendes Dokument erzeugt wird.
Aber wie kann ich das Makro bzw. die Sub Document_New() ausführen wenn der User einen anderen Drucker einstellt?

Vielen Dank!

mfg
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBA-Makro verschwindet nach Speichern
gelöst Frage von lupi1989VB for Applications5 Kommentare

Liebe Leute, bei mir verschwindet der Makro für den Scrollbereich in Excel(abgespeichert in xlsm) immer wieder nach dem Speichern. ...

Microsoft Office

Passwortgeschützte Excel Dateien bearbeiten VBA Makro

Frage von schwalbepilotMicrosoft Office2 Kommentare

Ich möchte Fußzeilen in alle Excel Dateien eines Ordners einfügen. Das klappt alles soweit, leider sind alle Dateien passwortgeschützt. ...

VB for Applications

VBA-Makro - ersetzen eines Textes durch Kleinbuchstaben

gelöst Frage von imebroVB for Applications19 Kommentare

Hallo, es geht nochmal um die gleichen Makros, wie im bereits gelösten Thread. Ich habe folgende 2 VBA-Makros erstellt: ...

Datenbanken

Wahl der richtigen Datenbank

Frage von STRUBartacusDatenbanken6 Kommentare

Hallo zusammen Ich stehe aktuell vor dem Problem, dass ich mich für eine Datenbank entscheiden muss, aber jetzt nicht ...

Neue Wissensbeiträge
Humor (lol)

Wie verhindere ich, dass Websitebesucher die Werbecookies abschalten?

Information von DerWoWusste vor 10 StundenHumor (lol)4 Kommentare

Ich habe gerade auf die Antwort gefunden: ich täusche einen langwierigen Änderungsprozess vor und biete nebenbei einen Cancelbutton, den ...

Sicherheit

Windows Setup erlaubt elevation of privilege plus DC Updates

Information von DerWoWusste vor 17 StundenSicherheit2 Kommentare

Eine interessante neue Sicherheitslücke. Details gibt es wenig, aber die klare Empfehlung: If you are using WSUS or MEM ...

Exchange Server

Exchange Server 2016 and the End of Mainstream Support

Information von Dani vor 1 TagExchange Server

As hopefully many of you already know Exchange Server 2016 enters the Extended Support phase of its product lifecycle ...

Viren und Trojaner

Schwachstelle in Teamviewer oder aufgeflogene Backdoor?

Information von magicteddy vor 2 TagenViren und Trojaner

Moin, die Interpretation überlasse ich jedem selber, ich habe eine deutliche Abneigung dagegen. Wer es nutzen muss sollte schleunigst ...

Heiß diskutierte Inhalte
Internet
VPN und Fritzbox
Frage von jensgebkenInternet29 Kommentare

Hallo Gemeinschaft, da der Support von AVM mir keine Antwort gibt, versuche ich es hier einmal HArdware 7490 zwei ...

Windows Server
Windows Server "mit" oder "ohne" Antivirensoftware
Frage von Dr.MabuseWindows Server19 Kommentare

Antiviren-Software: Fluch oder Segen? Die Frage der Sinnhaftigkeit von Antiviren-Software ist nicht neu Die Software kostet Performance, sorgt oft ...

Sicherheit
Verschlüsseln anstatt löschen ?
Frage von TastuserSicherheit19 Kommentare

Hallo, ist es möglich ganze Ordner auf Windows 10 zu verschlüsseln? Aber keine Kopien zu verschlüsseln (wie mit WinRAR) ...

Switche und Hubs
Neue Switches für Schule
Frage von Freak-On-SiliconSwitche und Hubs15 Kommentare

Servus; Eins Vorweg, bin leider in vielen Sachen noch nicht so erfahren. Und nein, ich kann LEIDER keinen Dienstleister ...

Administrator Magazin
08 | 2020 Cloud-First-Strategien sind inzwischen die Regel und nicht mehr die Ausnahme und Workloads verlagern sich damit in die Cloud – auch Datenbanken. Dort geht es aber nicht nur um die Frage, wie die Datenbestände in die Wolke zu migrieren sind, sondern auch darum, welche Datenbank ...