Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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 IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel macro wie datei nach druck automatisch schliessen ?

Frage Entwicklung VB for Applications

Mitglied: john-carter

john-carter (Level 1) - Jetzt verbinden

22.03.2012 um 11:26 Uhr, 5591 Aufrufe, 8 Kommentare

hallo zusammen,
stehe mal wieder aufm schlauch.

ich habe eine xls, die beim öffnen automatisch vb ausführt.
wenn genau diese xls ausgedruckt wird,muss duplex gedruckt werden, bei anderen xls KEIN duplex.
dazu hab ich mir was geschrieben,was auch funktioniert.
habe 2 drucker definiert, "normal" und "duplex"
beim öffnen der xls wird "duplex" einfach als standdarddrucker definiert,vor dem schliessen zurück auf "normal"

das funktioniert auch.

nun möchte ich aber,dass nach dem drucken (ich benutzte auschliesslich den druck-button in excel und gehe NICHT über datei/drucken) die datei automatisch geschlossen wird,ohne nachfrage des speicherns.
datei soll auch nicht gespeichert werden.

nun hatte ich hier im forum gesucht und was von bastl gefunden >> Sub FilePrintDefault()
das scheint sich aber nur auf world zu beziehen bzw geht bei mir nicht.

wie bekomme ich das hin,dass nach klick auf den standard druck button die xls ohne nachfrage autoschliesst.
wo muss da der close befehl hin?

hier mal mein code zum wechseln der printer:


Sub ListAllPrinters()
Dim strComputer$, objWMI As Object, colPrinters As Object, objPrinter As Object

strComputer = "."
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMI.ExecQuery("Select * from Win32_Printer")

For Each objPrinter In colPrinters
Debug.Print objPrinter.Name
Next
End Sub

Function ChangePrinter(ByVal strPrinter As String) As Boolean
Dim strComputer$, objWMI As Object, colPrinters As Object, objPrinter As Object

ChangePrinter = False
strComputer = "."
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMI.ExecQuery("Select * from Win32_Printer")

For Each objPrinter In colPrinters
If objPrinter.Name Like strPrinter Then
objPrinter.SetDefaultPrinter
ChangePrinter = True
Exit For
End If
Next
End Function

Sub Switch_to_DUPLEX()
Debug.Print Application.ActivePrinter
ChangePrinter "DUPLEX_DRUCK"
Debug.Print Application.ActivePrinter
End Sub

Sub Switch_to_NORMAL()
Debug.Print Application.ActivePrinter
ChangePrinter "NORMAL_DRUCK"
Debug.Print Application.ActivePrinter
End Sub


Private Sub Workbook_open()
Switch_to_DUPLEX

End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Switch_to_NORMAL
End Sub



gruss/j
Mitglied: mak-xxl
22.03.2012 um 12:06 Uhr
Moin john-carter,

auf die Schnelle: Hast Du die Chance, auf dem Sheet eine Schaltfläche oder eine 'aktive' Zelle unterzubringen, die das '.PrintOut' auslöst und danach schließt?
Die Befehle für 'Schließen ohne Speichern' sind Dir, denke ich, bekannt und können alle in das Sub reingesetzt werden.

Beispiel:
01.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
02.
     
03.
    If Target.Address = "$B$2" Then        ' (nur) Zelle "B2" reagiert auf Klick 
04.
         
05.
'        Call DuplexEin_Makro 
06.
'        ActiveSheet.PrintOut 
07.
'        Call DuplexAus_Makro 
08.
'        ThisWorkbook.Saved = True 
09.
'        ThisWorkbook.Close 
10.
 
11.
    End If 
12.
 
13.
End Sub
Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: john-carter
22.03.2012 um 12:15 Uhr
eigene schaltfläche wäre möglich,ja

schliessen ohne speichern kenne ich leider nicht.

und "'.PrintOut' auslöst und danach schließt" ist mir leider auch ein rätsel. genau das brauche ich ja eigentlich.primtout und schliessen.


gruss/j

edit;deinen code gerade erst gesehn, ich versuchs mal...
Bitte warten ..
Mitglied: mak-xxl
22.03.2012 um 12:25 Uhr
Moin john-carter,

ein Quelltext steht oben, wenn Du eine Schaltfläche bevorzugst, schreibst du den Code ohne die If-Abfrage in das zugehörige Sub. SF oder 'aktive Zelle' ist nur Geschmackssache, Funktion ist (in Deinem Falle) gleich.

Eventuell weist Du Benutzer mit einer MsgBox (in Zeile 4) darauf hin, dass jetzt die aktuelle Seite gedruckt und danach die Mappe geschlossen wird.

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: john-carter
22.03.2012 um 12:34 Uhr
ok,habe nun einen button,
geht soweit auch alles.die xls wird sogar geschlossen,cool.

code:

Private Sub CommandButton1_Click()
ActiveSheet.PrintOut
ThisWorkbook.Saved = True
ThisWorkbook.Close
End Sub


leider bleibt excel selber geöffnet,excel müsste aber komplett beendet werden.

gruss/


edit:
hintergrund: ich hab ein webfrontend(apex) ,dort rufe ich mittels klick aus oracle blob table eine xls vorlage auf,sobald die volage automatisch geöffnet ist holt excel daten zum befüllen aus der db.gleichzeitig wird der passende printer eingestellt.
bin mittlerweile soweit ,dass ich ich wirklich nur einmal klicken muss im browser,der rest geht vollautomatisch.auch excel öffnet sich ohne nachfrage usw.
nur leider öffne ich über das frontend auch andere excel dateien. und jede excel datei ist in einem eigenen excel process geöffnet.wenn ich dann so 20 dinger auf hab,bekomm ich die kaum wieder zu,dauert ewig .wäre also gut,nach dem ausdrucken nicht nur die excel datei zu schliessen,sondern den jeweiligen excel process direkt mit.
Bitte warten ..
Mitglied: mak-xxl
22.03.2012 um 12:45 Uhr
Moin john-carter,

bitte um Milde, ich habe ein
01.
Application.Quit
vergessen. Als letztes in den Sub eintragen.

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: john-carter
22.03.2012 um 12:50 Uhr
gerade selber ergoogelt,geht leider nicht.

excel bleibt geöffnet,leer ohne offene xls.


g/j

code:

Private Sub CommandButton1_Click()

ActiveSheet.PrintOut
ThisWorkbook.Saved = True
ThisWorkbook.Close
Application.Quit
End Sub
Bitte warten ..
Mitglied: john-carter
22.03.2012 um 12:56 Uhr
fehler gefunden:
ich darf NICHT ThisWorkbook.Close und dann Application.Quit ,sonst bleibt excel geöffnet.

einfach so:

rivate Sub CommandButton1_Click()

ActiveSheet.PrintOut
ThisWorkbook.Saved = True
Application.Quit
End Sub


klappt ebstens jetzt,vielen dank für deine schnelle hilfe,auch für die idee.manchmal holz vorm kopf....
Bitte warten ..
Mitglied: mak-xxl
22.03.2012 um 13:00 Uhr
Moin john-carter,

wenn keine weitere Tabelle in der Excel-Instanz geöffnet ist, dann 'ThisWorkbook.Close' durch 'Application.Quit' ersetzen.


Freundliche Grüße von der Insel - Mario
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
gelöst Excel Pdf Datei als Icon Symbol in Word einfügen per Drag and drop? (4)

Frage von Geforce zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel: Matirx mit Formel automatisch befüllen (5)

Frage von sims zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel oder google Sheets automatisch aktualisieren bei neuen Werten? (14)

Frage von Stoffn zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...