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

Frage Entwicklung VB for Applications

PDF per Shellexecute drucken

Mitglied: Samu653

Samu653 (Level 1) - Jetzt verbinden

17.11.2010, aktualisiert 11:09 Uhr, 7062 Aufrufe, 4 Kommentare

Ich brauche Hilfe beim erstellen eines Scriptes um mehrere PDF's per Shellexecute auszudrucken.
Ich habe bereits ein script geschriben, jedoch war dieser Hart-codiert (mit Pfad )
Es funktioniert auf meinem Rechner , doch auf einem 64bit system nicht.
Das Problem ist, dass mehrere versionen des acrobat readers vorhanden sind .
Ich möchte deshalb das gleiche Script umschreiben damit ich es auf allen Rechnern funktioniert. (64 und 32 bit systeme und Verschiedene versionen des Readers)

Hier ist mein bisheriges Script.
Bitte berücksichtigt das ich gar keine Erfahrung habe wenn es um VBA Scripts geht.

Private Sub CommandButton1_Click()

End If
If CheckBox34 = True Then
print_mypdf ("F:\Datenaustausch\PDF\34_Handles_conflict_well_EN.pdf")
End If
If CheckBox35 = True Then
print_mypdf ("F:\Datenaustausch\PDF\35_Can_deal_with_criticism_and_setbacks_EN.pdf")
End If

End Sub


Sub print_mypdf(MyFile As String)
DoEvents

AdobePath = Environ("ProgramFiles") & "\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe"
Shell AdobePath & " /p /h " & MyFile, vbHide




End Sub

Ich wäre sehr Dankbar wenn mir jemand Helfen könnte.

Freundliche Grüsse

Samuel
Mitglied: micneu
18.11.2010 um 11:25 Uhr
muss das in vb gelöst werden?
warum machst du es nicht mit batch oder powershell script?

versuch es doch so:
1. abfrage windows version, ergebnis in variable
2. abfrage des systems: 32bit/64bit, ergebnis in variable
3. mit den oberen ergebnissen entsprechend variablen setzen für die
pfade der programme
4. das system (programme) nach adobe acrobat suchen lassen und das ergebnis in einer varibale speichern.

ich kkann ein wenig vb-script, nur mache ich nichts mehr damit, löse alles in powershell

gruß michael
Bitte warten ..
Mitglied: micneu
18.11.2010 um 11:48 Uhr
hier habe mal einen ansatz in powershell gemacht

01.
function is64bit() { 
02.
  return ([IntPtr]::Size -eq 8) 
03.
04.
 
05.
function get-programfilesdir() { 
06.
  if (is64bit -eq $true) { 
07.
    (Get-Item "Env:ProgramFiles(x86)").Value 
08.
09.
  else { 
10.
    (Get-Item "Env:ProgramFiles").Value 
11.
12.
13.
$PROGRAMME = get-programfilesdir 
14.
Get-ChildItem $PROGRAMME -recurs -filter 'Acrobat'
gruß michael
Bitte warten ..
Mitglied: micneu
18.11.2010 um 12:52 Uhr
habe es jetzt soweit angepasst das es nur nach dem eigentlichen programm sucht:

01.
#   ************************************************************** 
02.
#    einmal auf der powershell ausgeführt werden 
03.
#     "Set-ExecutionPolicy Unrestricted" 
04.
#   ************************************************************** 
05.
#     
06.
#   ************************************************************** 
07.
#   * Erstellt M.N. - POWERSHELL / Entwicklung   18.11.2010      * 
08.
#   ************************************************************** 
09.
 
10.
function is64bit() { 
11.
  return ([IntPtr]::Size -eq 8) 
12.
13.
 
14.
function get-programfilesdir() { 
15.
  if (is64bit -eq $true) { 
16.
    (Get-Item "Env:ProgramFiles(x86)").Value 
17.
18.
  else { 
19.
    (Get-Item "Env:ProgramFiles").Value 
20.
21.
22.
$PROGRAMME = get-programfilesdir 
23.
# sucht die acrobat reader .exe 
24.
Get-ChildItem $PROGRAMMEAdobe -recurs -filter 'AcroRd32.exe'
muss leider wech... sobald ich zeithabe versuche ich den wert aus der registry auszulesen welche version installiert ist
und den genauen pfad.

gruß michael
Bitte warten ..
Mitglied: 76109
19.11.2010 um 21:05 Uhr
Hallo Samuel!

Dieser VBA-Code sollte funktionieren:
01.
Const HKCU = &H80000001 
02.
 
03.
Const sComputer = "." 
04.
Const sWINMGMTS = "winmgmts:{impersonationLevel=impersonate}!\\" 
05.
 
06.
Const sRegKey0 = "Software\Adobe\Acrobat Reader\" 
07.
Const sRegKey1 = "\InstallPath" 
08.
 
09.
Const sCmdLine = """%1"" /p /h ""%2"""  'Pfadangaben mit Leerzeichen 
10.
 
11.
Private Sub PrintPdfFile(ByRef MyFile) 
12.
    Dim oReg As Object, aValue As Variant, sValue As String, sAcrobatReader As String 
13.
     
14.
    Set oReg = GetObject(sWINMGMTS & sComputer & "\root\default:StdRegProv") 
15.
     
16.
    oReg.EnumKey HKCU, sRegKey0, aValue 
17.
         
18.
    If IsArray(aValue) Then 
19.
        oReg.GetStringValue HKCU, sRegKey0 & aValue(0) & sRegKey1, "", sValue 
20.
        sAcrobatReader = sValue & "\" & "AcroRd32.Exe" 
21.
        Shell Replace(Replace(sCmdLine, "%1", sAcrobatReader), "%2", MyFile), vbHide 
22.
    Else 
23.
        MsgBox "AcrobatReader nicht gefunden!", vbExclamation, "Fehler" 
24.
    End If 
25.
End Sub
Wobei in der Registry erst der Versions-Key und danach der Install-Path ermittelt wird.
Und die CmdLine habe ich aufgrund der Leerzeichen in den Pfadangaben auch etwas vereinfacht.

Wäre noch interessant zu wissen, in welcher App der VBA-Code verwendet wird und ob es sich um eine UserForm oder um eingebettete OLE-Objecte handelt?

Gruß Dieter

PS. Muss man jetzt neuerdings die Backslashes verdoppeln, damit sie angezeigt werden???
Bitte warten ..
Ähnliche Inhalte
Windows Tools
PDF-Drucker
gelöst Frage von malikaWindows Tools25 Kommentare

Hallo, ich bräuchte einen guten PDF-Drucker (für Windows 7 Pro 64 Bit-BS) zum Verschicken der Daten per E-Mail. Ich ...

Batch & Shell
Powershell PDF drucken auf verschiedene Drucker
gelöst Frage von ChrissssiBatch & Shell2 Kommentare

Hallo zusammen, Mein Problem ist das ich PDF Dateien habe die ich auf unterschiedliche Drucker automatisch drucken muss. Das ...

Entwicklung
Automatischer PDF Druck auf spezifischen Drucker
Frage von Orvqb99d5E2UEntwicklung4 Kommentare

Hi. Ich benötige für einen Windows Server ein Script mit folgenden Eigenschaften: Order1 soll überprüft werden, wenn dort neue ...

Windows Server
PDF Drucker für die Domäne
Frage von AlternativendeWindows Server7 Kommentare

Hallo zusammen, ich bin auf der Suche nach einem systemweiten PDF-Drucker der mir im wesentlichen folgendes in einer vornehmlich ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall9 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen7 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...