mypipe ha scritto:
....
Grazie Alex, non sapevo dell'esistenza di questo comando (me ne ricordavo un'altro in VBA a cui bisognava però passare il file da aprire nella riga di comando... o era nel buon caro vecchio GWbasic???? )..... però..... a questo punto lui lancia da access una applicazione esterna indipendente che non interagisce con access. Sbaglio? Oppure con Hyperlink si crea un qualche tipo di associazione che permette una interpolazione con access? (Stasera dopo qualche ora di sonno, mi vado a documentare)
Da quello che ho capito, lui ha bisogno di poter usare il documento all'interno di access, come farebbe con un documento di excell o del pacchetto office.
Credo tu ti stessi riferendo a SHELL, che tuttavia pur funzionando da VBA, necessita del PATH completo dell'EXE...(e questo è il problema)... in quanto serve recuperare l'EXE associato all'estensione per poi mandare in esecuzione la SHELL
Dim RetVal
RetVal = Shell(C:\Programmi\Adobe\Reader 9.0\Reader\AcroRd32.exe C:\directory\file.pdf")
End Sub
Ora ho semplificato l'esempio, in quanto ho dato per scontato che l'EXE associato sia il Reader di Adobe... ma potrebbe non essere, quindi si usa una chiamata API per recuperare il vero EXE con la chiamata [FindExecutable] ecc...
Personalmente lo trovo inutile...! Meglio il FollowHyperlink.
Ora la tua osservazione è corretta, ma non completa, nel senso che in questo modo viene aperta un'istanza di Adobe con il file definito... ed il tutto è indipendente da Access...
Tuttavia è possibile recuperarne l'istanza ed addirittura gestirla.
Il tutto assolutamente senza OCX che peraltro contenevano BackDoor pericolose, ma usando COM(quindi OLE) si recupera con GETOBJECT l'istanza del Server di Automazione di ADOBE e lo si tratta come lo si farebbe con WORD o EXCEL
Dim PDFApp As Object
Dim PDFDoc As Object
PDFPath = "C:\PDF Sample.pdf"
'Initialize Acrobat by creating App object
Set PDFApp = CreateObject("AcroExch.App")
Set PDFDoc = CreateObject("AcroExch.AVDoc")
'Open the PDF
If PDFDoc.Open(PDFPath, "") = True Then
MsgBox "Numero Pagine " & PDFDoc .GetNumPages()
End If
Ora ho usato il Create... ma il senso è per esporre la tecnica LateBinding di accesso al modello Oggetti via COM.
Set PDFApp = GetObject("", "AcroExch.App")