Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

PDF öffnen über VBA geht nicht

Begonnen von accessy, Oktober 11, 2012, 18:13:28

⏪ vorheriges - nächstes ⏩

accessy

Ich habe im Formular den Doppelklick auf das Feld gelegt, welches das PDF öffnen soll.
Als Ereignis habe ich den Namen des Makros angegeben.

Im Makro habe ich
AusführenCode gewählt
Als Funktionsname habe ich "PDF_Show" eingetragen.

Im Modul1 habe ich folgenden Code geschrieben:


Option Compare Database
Private Sub PDF_show()
Dim Pfad As String
  Pfad = "C:\Kunden\Angebote\" & Me!Angebot
  Application.FollowHyperlink Pfad, , True
End Sub


Mache ich den Doppelklick erscheint der Fehler
"Das Objekt enthält nicht das Automatisierungsobjekt 'PDF_Show'

Kann mir da jemand helfen den Fehler zu vermeiden?
Gruß Achim

bahasu

Zitat von: accessy am Oktober 11, 2012, 18:13:28
Als Funktionsname habe ich "PDF_Show" eingetragen.

Hi,

Du schreibst von einem "Funktionsaufruf", verwendest aber eine sub.
Was passiert bei folgenden:

Public Function PDF_show() as boolean
  Dim Pfad As String   
  Pfad = "C:\Kunden\Angebote\" & Me!Angebot   
  Application.FollowHyperlink Pfad, , True
End Function

Harald
Servus

bahasu

Hi,

2. Frage:
Was passiert, wenn Du statt dem Umweg mit dem Makro eine Ereignisprocedure bei dem Button hinterlegst und dort als Code einträgst:

   Dim Pfad As String
   Pfad = "C:\Kunden\Angebote\" & Me!Angebot
   Application.FollowHyperlink Pfad, , True


oder noch kürzer:

   Application.FollowHyperlink "C:\Kunden\Angebote\" & Me!Angebot, , True

Harald
Servus

accessy

Hallo Harald,
geschrieben habe ich das mit dem Funktionsaufruf eher unbewußt.
Das Resultat ist das gleiche.

Schau mal hier, das ist die gesamte Meldung
http://www.pic-upload.de/view-16413362/PDF.jpg.html

Gruß Achim

accessy

Vielleicht sollte ich noch erwähnen,
dass ich den ADOBE Reader NICHT nutze, sondern den PDF-Xchange viewer.
Aber daran sollte es doch nicht liegen....

bahasu

Hi Achim,

funktioniert der Datei-Aufruf aus dem Betriebssystem (= Explorer) heraus?
Falls nein, musst Du diese Beziehung herstellen.

Was passiert, wenn Du einen Versuch mit einer Word oder Excel-Datei machst?

Anbei ein Beispiel, mit dem ich eine pdf-Datei in Adobe öffnen konnte.
Bitte im Formular ein eigenes Beispiel eingeben, sichern und danach per Doppelklick im Feld die Datei aufrufen.

Harald

[Anhang gelöscht durch Administrator]
Servus

accessy

Alle Verknüpfungen funktionieren.
Aus dem Explorer, oder auch aus meinem Speed-Commander heraus
kann ich sämtliche Dateien wie JPG, DOC, DOCX, XLS, XLSX, XLSM, PDF, usw...
problemlos öffnen.

Der Test mit einer DOC, oder XLS Datei brachte die gleiche Fehlermeldung.

Vielleicht gibt es da Schwierigkeiten mit dem Code, weil ich Access XP 2002 verwende.
Ich habe mal gegoogelt nach diesem Thema.
Da war auch was mit einer "ShellExecute" Sache, die wohl besser sein soll bei NICHT Verwendung von ADOBE ald Reader.

Ich habe in meinem Excel-Programm einen funktionsfähigen Code laufen.
Aber der ist in Access nicht zu gebrauchen. Der ging gar nicht.

Hast du einen funktionsfähigen Code im Einsatz, der eine PDF öffnet?


Private Sub CommandButton14_Click() 'Info für Gewindekernlöcher zeigen
Select Case LC
   Case 1
     strDateiName = "Gew_Kernloch_D.pdf"
   Case 2
     strDateiName = "Gew_Kernloch_F.pdf"
   Case 3
     strDateiName = "Gew_Kernloch_E.pdf"
   Case 4
     strDateiName = "Gew_Kernloch_I.pdf"
End Select
      StrPfad = ActiveWorkbook.Path & "\toolinfo\"
      Set MyShell = CreateObject("WScript.Shell")
      Set fs = CreateObject("Scripting.FileSystemObject")
      If fs.fileexists(StrPfad & strDateiName) = True Then
         MyShell.Run Chr(34) & StrPfad & strDateiName & Chr(34)
       Else
         Exit Sub
      End If
      Set MyShell = Nothing
End Sub

bahasu

Hi,

Zitat von: accessy am Oktober 11, 2012, 20:14:47
Hast du einen funktionsfähigen Code im Einsatz, der eine PDF öffnet?

ja, in obigem Anhang.

ja, in diesem Anhang (mit FollowHyperlink und ShellExecute).

shellexecute: http://social.msdn.microsoft.com/Forums/de-DE/accessde/thread/33cb1b2e-7515-41bc-8615-00d3c746eb61


Harald

[Anhang gelöscht durch Administrator]
Servus

accessy

Es muss irgendetwas anderes faul sein.
Ich habe den Code ins Modul gesetzt.


Option Compare Database
Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
  (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

Private Sub PDF_Show()
    Dim Pfad As String
    Pfad = "C:\Kunden\Angebote\"
    ShellExecute 0, "open", Pfad, "", "", 1
End Sub


Es kommt wieder zur gleichen Fehlermeldung.
Dann habe ich mal den Code über F8 im Einzelschritt gestartet.
Und siehe da, es gibt keinen Fehler und der Explorer öffnet sich.

Kann es sein, dass ich irgendein Modul nicht installiert habe, was Access benötigt?

DF6GL

Hallo,



es muss

Public Sub PDF_Show()

bzw.

Public Function PDF_Show()

im Modul heißen.

ebs17

Kleine Anmerkung:
- Die FollowHyperlink-Methode ist abhängig von IE-Einstellungen und daher nicht rechnerübergreifend anwendungssicher, aber schön kurz.
- Die ShellExecute-Methode ist anwendungssicher, weil Win-API. Hier kann man nur falsch aufrufen.

In beiden Fällen muss natürlich einem Dateityp (Dateiendung) ein entsprechendes Anwendungsprogramm zugeordnet sein.

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

bahasu

Hi Achim,

gibt es ein Problem beim Laden meiner Beispiele?

Wenn nein, dann wären die obigen Problem nicht aufgetreten, da die benötigten Schritte dort getestet und korrekt eingebaut sind.

Harald
Servus

accessy

Ich bin jetzt ein wenig überrascht, dass es PUBLIC statt Private heißen muss.
In meinem Excel VBA habe ich Public für die Dimensionierung der Variablen im gesamten Programm verwendet.
Na egal, ich habe es geändert, aber die Meldung bleibt die gleiche.


Harald,
du fragst mich nach Problemen mit den Beispielen von dir.
Wo sind die denn? Ich sehe da keinen Anhang, oder sichtbaren Code.
Hast du damit den Code gemeint aus diesem Link?
http://social.msdn.microsoft.com/Forums/de-DE/accessde/thread/33cb1b2e-7515-41bc-8615-00d3c746eb61


Ich habe mal eine Schaltfläche ins Formular gesetzt,
auf das Ereignis "Klicken" deine Kurzform eingetragen
Application.FollowHyperlink "C:\Kunden\Angebote\" & Me!Angebot, , True
Anschließend den Cursor im Formular in die Zelle eines der Angebote gesetzt.
Nach dem Klicken erscheint die Meldung
Microsoft Access kann das Makro 'Application' nicht finden.

Entweder ich mache hier alles falsch, oder es fehlt tatsächlich irgendeine Aktivierung / Verknüpfung.

accessy

Nachtrag:

Ich stoße über die Recherche in vielen Beiträgen anderer Foren und Workshops überall auf die
einfache Methode des FOLLOWHYPERLINK.....
Und bei allen scheint es zu funktionieren.

Kann es sein, dass dieses FollowHyperlink bei mir gar nicht installiert ist, oder deaktiv, oder oder keine Ahnung warum?
Kann ich das irgendwo sehen?

bahasu

Hi Achim,

wenn Du angemeldet bist, findest Du unterhalb von meinem Namen in blauer Schrift den Anhang.

Harald
Servus