Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   άνοιγμα αρχείου pdf με εντολή (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/1907-anoigma-arxeioy-pdf-me-entoli.html)

ΤΑΣΟΣ 30-05-12 08:06

άνοιγμα αρχείου pdf με εντολή
 
καλημέρα σε όλους τους φίλους
θα ήθελα αν γνωρίζει κάποιος τον τρόπο (vba) έτσι ώστε σε ένα κουμπί να προσθέσω τον κώδικα που θα μου ανοίγει συγκεκριμένο αρχείο σε .pdf που βρίσκεται όχι στον c: αλλά στον G:\inv
ευχαριστώ εκ των προτέρων

φιλικά
Τάσος Κ.

Tasos 30-05-12 10:10

Καλημέρα σε όλους!

Συνονόματε δοκίμασε:

Κώδικας:

Option Compare Database
Option Explicit

Private Const SW_SHOWNORMAL = 1

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 cmdOpenPDF_Click()

  Dim OpenFile As Long
 
'===Εναλλακτική μέθοδος=======================================================
'  Dim MyFile As String
'  MyFile = Me.txtFilePath 'η διαδρομή του αρχείου σε πεδίο της φόρμας
'  OpenFile = ShellExecute(0, "open", MyFile, "", "C:\", SW_SHOWNORMAL)
'==============================================================================


  OpenFile = ShellExecute(0, "open", "G:\inv\Mypdf.pdf", "", "C:\", SW_SHOWNORMAL)
 
End Sub


Καλή συνέχεια!

Τάσος

ΤΑΣΟΣ 30-05-12 15:46

Φίλε Τάσο
ευχαριστώ πάρα πολύ, δούλεψε με την πρώτη περίπτωση δηλαδή με

Private Sub cmdOpenPDF_Click()

Dim OpenFile As Long
OpenFile = ShellExecute(0, "open", "G:\inv\Mypdf.pdf", "", "C:\", SW_SHOWNORMAL)

End Sub

προσπάθησα όμως αντί του Mypdf.pdf στο Mypdf να παίρνει το όνομα (τιμή) από τη φόρμα μου
FORMS! ΤΙΜΟΛΟΓΙΑ ΠΩΛΗΣΗΣ ! inv_No
μήπως πρέπει να κάνω διαφορετική σύνταξη ή ορθογραφία?

ευχαριστώ και πάλι για την πολύτιμη βοήθεια σου
Τάσος

Meteora 30-05-12 16:32

Καλησπέρα

Η σύνταξη καλή είναι, αλλά εκείνο το κενό που έχεις στο όνομα της φόρμας σου μπορεί να σταθεί εμπόδιο στη λύση που ζητάς τώρα ή αργότερα. Δοκίμασε βάζοντάς το ανάμεσα σε [ ] ή άλλαξε όνομα στη φόρμα σου.
Καλού -κακού ανέβασε ΟΛΗ τη γραμμή της ShellExecute(...)
Με εκτίμηση
Νίκος Δ.

Tasos 30-05-12 16:36

Δοκίμασε:

MyFile = Forms![ΤΙΜΟΛΟΓΙΑ ΠΩΛΗΣΗΣ]![inv_No]

Αν το κουμπί που τρέχει τον κώδικα και το πεδίο [inv_No] βρίσκονται στην ίδια φόρμα τότε:

MyFile = Me![inv_No]

Σε κάθε περίπτωση φρόντισε να μην υπάρχουν κενά στην αρχή και στο τέλος των ονομάτων.

Καλή συνέχεια!

Τάσος

ΤΑΣΟΣ 30-05-12 17:05

δυστυχώς φίλοι μου αν και άλλαξα το όνομα της φόρμας είτε με

Private Sub ÅíôïëÞ40_Click()
Dim OpenFile As String
OpenFile = ShellExecute(0, "open", "G:\inv\forms![invoices]![inv_No].pdf", "", "C:\", SW_SHOWNORMAL)
End Sub

είτε με Private Sub ÅíôïëÞ40_Click()
Dim OpenFile As String
OpenFile = ShellExecute(0, "open", "G:\inv\Me![inv_No].pdf", "", "C:\", SW_SHOWNORMAL)
End Sub

δεν δουλεύει. Μόνο αν βάλω συγκεκριμένη τιμή μέσα από την vba δουλεύει

Meteora 30-05-12 17:34

Δοκίμασε αυτό :
Κώδικας:

OpenFile = ShellExecute(0, "open", "G:\inv\" & forms![invoices]![inv_No]
& ".pdf", "", "C:\", SW_SHOWNORMAL)

ή καλύτερα φρόντισε να κάνεις χρήση της τεχνικής που με τα πράσινα γράμματα παρουσίασε ο Τάσος στο πρώτο μήνυμά του.

περιμένουμε την εξέλιξη...

Νίκος Δ

Υστερολόγιο : το πεδίο [inv_no] τι περιέχει ; τι θα γίνει αν η εφαρμογή τρέξει σε υπολογιστή που δεν έχει G;

ΤΑΣΟΣ 30-05-12 17:44

κύριοι σας ευχαριστώ πολύ δουλεύει τέλεια μετά τη τελευταία προσθήκη
φιλικά
Τάσος

ΤΑΣΟΣ 30-05-12 17:48

Νίκο
το πεδίο inv_No είναι αριθμός ο οποίος παραπέμπει στο G: ( που είναι flash memory) όπου έχω αποθηκευμένα τα αντίστοιχα τιμολόγια σε μορφή pdf. Μπήκα σε αυτή τη διαδικασία γιατί πολλές φορές μέσα από τη βάση χρειάζεται να ανοίξω και το τιμολόγιο στην κανονική του μορφή έτσι όπως έχει αποθηκευτεί.
Σε ευχαριστώ και πάλι για τη βοήθεια σου
Τάσος

Dangel82 03-06-12 12:24

1 Συνημμένο(α)
Καλησπέρα...

επισυνάπτω μια λύση που χρησιμοποιώ αρκετά σε ότι αφορά συνδεδεμένα αρχεία μέσα στην access...

Νομίζω είναι αυτό που ψάχνεις...

SPHLIOS 28-03-16 17:06

Ευχαριστώ και εγώ, ήθελα κάτι τέτοιο

manto 22-09-16 13:24

Γεια χαρά σε όλους!Είμαι καινούργια στο forum αλλά και στην access, προσπαθώ να δημιουργήσω ένα button στη φόρμα μου και να προσθέσω τον κώδικα που θα μου ανοίγει συγκεκριμένο αρχείο σε .pdf που βρίσκεται στον c: (το ποιό αρχείο θα είναι αυτό είναι τιμή ενός πεδίου της φόρμας). Αρχικά, αρχάρια γαρ, ήθελα να πειραματιστώ και να ανοίξω ένα συγκεκριμένο pdf που έχω στο c: (το 750.pdf) χρησιμοποιώντας τον παρακάτω κώδικα που έχετε παραθέσει και εσείς.....Δυστυχώς δεν....Τι μπορεί να κάνω λάθος???

Option Compare Database
Option Explicit

Private Const SW_SHOWNORMAL = 1

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 Εντολή43_Click()

Dim OpenFile As Long
OpenFile = ShellExecute(0, "open", "C:\750.pdf", "", "C:\", SW_SHOWNORMAL)

End Sub

Ευχαριστώ εκ των προτέρων,
Μαρία

kapetang 22-09-16 16:41

Καλησπέρα

Μαρία, καλωσόρισες στην παρέα μας.

Σε μένα ο κώδικας, που ανέβασες, δουλεύει.

Θα σου πρότεινα όμως τον απλούστερο (μόνο μία γραμμή) :
Κώδικας:

Private Sub Command3_Click()
    Application.FollowHyperlink "C:\Users\Admin\Desktop\PDF\rwservlet.pdf", , True
End Sub

Επίσης μπορείς να απαλλαγείς τελείως από τον κώδικα, αν ορίσεις, στη σχεδίαση του πίνακα, τον τύπο του πεδίου με τα στοιχεία των αρχείων, ως Hyperlink

Γιώργος

manto 23-09-16 09:11

Γιώργο καλημέρα, σε ευχαριστώ πολύ για το χρόνο σου! Δοκίμασα την προτασή σου και πάλι δεν έπαιξε, οπότε κατέληξα πως κάτι άλλο φταίει και όχι ο κώδικας. Μετά από διάφορες δοκιμές διεπίστωσα πως για να ανοίξω το αρχείο πρέπει να ενεργοποιήσω το περιεχόμενο στην προειδοποίηση ασφαλείας! Θα μπορούσε κάποιος να μου εξηγήσει τι σημαίνει πρακτικά αυτο? Επίσης μπορώ να απενεργοποιήσω καθολικά αυτή την προειδοποίηση ή δημιουργώ πρόβλημα στη βάση μου? Ακόμη σε σχέση με τους 2 τρόπους ανοίγματος αρχείου τι είναι προτιμότερο να χρησιμοποιήσει κάποιος? Hyperlink ή ShellExecute? Τέλος, να σημειώσω, για όποιον άλλο ενδιαφέρεται, ότι παίζουν και οι δυο τρόποι!

Ευχαριστώ πολύ!

kapetang 23-09-16 15:05

1 Συνημμένο(α)
Καλησπέρα

Σχετικά με τα ερωτήματα:

1) Όταν υπάρχει λύση χωρίς κώδικα, ειδικά από κάποιον με περιορισμένη εμπειρία, θα πρέπει να προτιμηθεί.

Αν, σε προβολή σχεδίασης πίνακα, αλλάξουμε το πεδίο, που περιέχει τα ονόματα των αρχείων, σε Hyperlink, δε χρειαζόμαστε κώδικα.

2) Από τους δύο κώδικες προτίμησε το συντομότερο, που είναι και πιο κατανοητός.

3) Ο κώδικας μπορεί να περιλαμβάνει και τμήματα (κακόβουλο λογισμικό) που θα μπορούσαν να προκαλέσουν βλάβες (πχ διαγραφή των αρχείων του δίσκου).

Για λόγους προστασίας, όταν ανοίγουμε μία ΒΔ, η access ελέγχει, αν περιέχει κώδικα και ενεργεί αναλόγως (απενεργοποιεί ή όχι τον κώδικα, κλπ).

Το τι ακριβώς θα κάνει εξαρτάται από τις ρυθμίσεις του κέντρου προστασίας (βλ. συνημμένο).

Το ανοίγουμε ακολουθώντας τα βήματα:

File=>Options=>Trust Center=>κλικ στο Trust Center Settings


Η ώρα είναι 06:09.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2