Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Άνοιγμα συγκεκριμένου αρχείου Pdf

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #11  
Παλιά 25-09-13, 18:42
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Χρήστο, βάλε τον παρακάτω κώδικα σε μια λειτουργική μονάδα (αντικατέστησε τον προηγούμενο αν χρειαστεί):

Κώδικας:
'Πηγή: Microsoft (με κάποιες τροποποιήσεις)

Option Compare Database
Option Explicit

Public Enum SWConstants
    SW_HIDE = 0
    SW_MAXIMIZE = 3
    SW_MINIMIZE = 6
    SW_SHOWMAXIMIZED = 3
    SW_SHOWMINIMIZED = 2
    SW_SHOWNORMAL = 1
    SW_SHOWNOACTIVATE = 4
    SW_SHOWNA = 8
    SW_SHOWMINNOACTIVE = 7
    SW_SHOWDEFAULT = 10
    SW_RESTORE = 9
    SW_SHOW = 5
End Enum

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 Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
Private Const SE_ERR_ACCESSDENIED = 5&
Private Const SE_ERR_ASSOCINCOMPLETE = 27&
Private Const SE_ERR_DDEBUSY = 30&
Private Const SE_ERR_DDEFAIL = 29&
Private Const SE_ERR_DDETIMEOUT = 28&
Private Const SE_ERR_DLLNOTFOUND = 32&
Private Const SE_ERR_FNF = 2&
Private Const SE_ERR_NOASSOC = 31&
Private Const SE_ERR_PNF = 3&
Private Const SE_ERR_OOM = 8&
Private Const SE_ERR_SHARE = 26&


Public Function ShellExec( _
       ByVal sFile As String, _
       Optional ByVal eShowCmd As SWConstants = SW_SHOWDEFAULT, _
       Optional ByVal sParameters As String = "", _
       Optional ByVal sDefaultDir As String = "", _
       Optional sOperation As String = "open", _
       Optional Owner As Long = 0 _
       ) As Integer
    Dim result As Long
    Dim lngError As Long
    Dim sError As String
    
    If Right(UCase(sFile), 4) = ".EXE" Then eShowCmd = 0
    
    On Error Resume Next
        result = ShellExecute(Owner, sOperation, sFile, sParameters, sDefaultDir, eShowCmd)
    If result < 0 Or result > 32 Then
        ShellExec = True
    Else
        lngError = 1048 + result + vbObjectError

        Select Case result
            Case 0
                lngError = 7: sError = "Δεν υπάρχει διαθέσιμη μνήμη."
            Case ERROR_FILE_NOT_FOUND
                lngError = 53
                sError = "Το αρχείο δεν βρέθηκε."
            Case ERROR_PATH_NOT_FOUND
                lngError = 76
                sError = "Η διαδρομή δεν βρέθηκε."
            Case ERROR_BAD_FORMAT
                lngError = 11
                sError = "Το εκτελέσιμο αρχείο δεν είναι έγκυρο ή είναι κατεστραμμένο."
            Case SE_ERR_ACCESSDENIED
                lngError = 75
                sError = "Σφάλμα πρόσβασης στη διαδρομή ή στο αρχείο."
            Case SE_ERR_ASSOCINCOMPLETE
                lngError = 27
                sError = "Αυτός ο τύπος αρχείου δεν έχει έγκυρη συσχέτιση αρχείου."
            Case SE_ERR_DDEBUSY
                lngError = 285
                sError = "Το αρχείο δεν θα μπορούσε να ανοίξει, διότι η εφαρμογή είναι απασχολημένη. Παρακαλώ δοκιμάστε ξανά σε λίγο."
            Case SE_ERR_DDEFAIL
                lngError = 285
                sError = "Το αρχείο δεν μπορεί να ανοίξει, διότι η συναλλαγή DDE απέτυχε. Παρακαλώ δοκιμάστε ξανά σε λίγο."
            Case SE_ERR_DDETIMEOUT
                lngError = 286
                sError = "Το αρχείο δεν μπορεί να ανοίξει, διότι η συναλλαγή DDE απέτυχε. Παρακαλώ δοκιμάστε ξανά σε λίγο."
            Case SE_ERR_DLLNOTFOUND
                lngError = 48
                sError = "Η συγκεκριμένη βιβλιοθήκη δυναμικής σύνδεσης δεν βρέθηκε."
            Case SE_ERR_FNF
                lngError = 53
                sError = "Το αρχείο δεν βρέθηκε."
            Case SE_ERR_NOASSOC
                sError = "Καμία εφαρμογή δεν σχετίζεται με αυτόν τον τύπο αρχείου."
            Case SE_ERR_OOM
                lngError = 7
                sError = "Δεν υπάρχει διαθέσιμη μνήμη."
            Case SE_ERR_PNF
                lngError = 76
                sError = "Η διαδρομή δεν βρέθηκε."
            Case SE_ERR_SHARE
                lngError = 75
                sError = "Σφάλμα πρόσβασης στη διαδρομή ή στο αρχείο."
            Case Else
                sError = "Προκλήθηκε σφάλμα κατά το άνοιγμα ή την εκτύπωση του επιλεγμένου αρχείου."
        End Select

        Err.Raise lngError, , sError

    End If
End Function
Κατόπιν μετονόμασε το κουμπί της φόρμας "Εντολή152" σε "CmdOpenPdf" και πέρασε του τον παρακάτω κώδικα και δοκίμασε:

Κώδικας:
Private Sub CmdOpenPdf_Click()
    Dim ret As Integer, pdfPath As String

    If Not IsNull(Me.Protokollo) Then
        ' Προσάρμοσε τη διαδρομή φακέλου του αρχείου.
        pdfPath = "D:\files\" & Me.Protokollo & ".pdf"

        If Dir(pdfPath, vbDirectory) = vbNullString Then
            'εναλλακτική διαδρομή φακέλου.
            pdfPath = "E:\files\" & Me.Protokollo & ".pdf"
        End If

        ' Άνοιγμα φακέλου και επιλογή ενός αρχείου
        ' ret = ShellExec("explorer", SW_SHOWNORMAL, "/select, pdfPath)

        ' Εκτέλεση ενός αρχείου
        ret = ShellExec(pdfPath)

        If Not ret Then
            Beep
            MsgBox "Σφάλμα: " & Err & vbLf & Err.Description, , "Ms-Office.gr"
        End If
    Else
        MsgBox "Το πεδίο είναι κενό"
    End If
End Sub
Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #12  
Παλιά 25-09-13, 20:29
Όνομα: Χρήστος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 24-01-2010
Περιοχή: Φλώρινα
Μηνύματα: 164
Προεπιλογή

Καλά στην αρχή που είδα αυτό το κατεβατό τρόμαξα και δεν έβγαζα (βγάζω) τίποτα....

Τελικά όμως πέταξα το προηγούμενο κώδικα που είχα βάλει στην Λειτουργική μονάδα και έβαλα αυτόν, στη συνέχεια άλλαξα και τον κώδικα του πλήκτρου και δούλεψε κατευθείαν χωρίς κανένα πρόβλημα...

Από ότι κατάλαβα με αυτήν την μέθοδο μπορείς να βάλεις και τρίτη διαδρομή και πάνω....

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

Δεν ξέρω εάν μπορούμε να πετύχουμε και κάποια ένδειξη για το αν υπάρχει η όχι αρχείο, αλλά δεν με ενοχλεί ιδιαίτερα διότι είναι δευτερεύων...

Τώρα τη να ξαναπώ πλέον Τάσο, δεν ξέρω πια πώς να σε Ευχαριστήσω εσένα και τα παιδιά του forum..

Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Άνοιγμα αρχείου word και προσάρτηση δεδομένων γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 8 23-09-16 21:23
άνοιγμα αρχείου pdf με εντολή ΤΑΣΟΣ Access - Ερωτήσεις / Απαντήσεις 14 23-09-16 16:05
Άνοιγμα αρχείου εικόνας από Treeview alex Access - Ερωτήσεις / Απαντήσεις 0 22-01-14 12:15
[Γενικά] βοήθεια με άνοιγμα αρχείου excel koumpana Excel - Ερωτήσεις / Απαντήσεις 1 20-06-12 12:49
Άνοιγμα Αρχείου 'Εξερεύνηση των Windows' με δημιουργία Φακέλου john-john Access - Ερωτήσεις / Απαντήσεις 3 14-03-12 09:20


Η ώρα είναι 08:13.