| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#11
| ||||
| ||||
|
Χρήστο, βάλε τον παρακάτω κώδικα σε μια λειτουργική μονάδα (αντικατέστησε τον προηγούμενο αν χρειαστεί): Κώδικας:
'Πηγή: 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
Κώδικας: 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
| |||
| |||
|
Καλά στην αρχή που είδα αυτό το κατεβατό τρόμαξα και δεν έβγαζα (βγάζω) τίποτα.... Τελικά όμως πέταξα το προηγούμενο κώδικα που είχα βάλει στην Λειτουργική μονάδα και έβαλα αυτόν, στη συνέχεια άλλαξα και τον κώδικα του πλήκτρου και δούλεψε κατευθείαν χωρίς κανένα πρόβλημα... Από ότι κατάλαβα με αυτήν την μέθοδο μπορείς να βάλεις και τρίτη διαδρομή και πάνω.... Εγώ πάντως με τον τρόπο που προσπαθούσα (και χωρίς όλα αυτά στην Λειτουργική μονάδα) δεν θα το κατάφερνα ποτέ, απέχω πάρα πολύ... Δεν ξέρω εάν μπορούμε να πετύχουμε και κάποια ένδειξη για το αν υπάρχει η όχι αρχείο, αλλά δεν με ενοχλεί ιδιαίτερα διότι είναι δευτερεύων... Τώρα τη να ξαναπώ πλέον Τάσο, δεν ξέρω πια πώς να σε Ευχαριστήσω εσένα και τα παιδιά του forum.. |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| Άνοιγμα αρχείου word και προσάρτηση δεδομένων | γιώργοςΚ | Access - Ερωτήσεις / Απαντήσεις | 8 | 23-09-16 20:23 |
| άνοιγμα αρχείου pdf με εντολή | ΤΑΣΟΣ | Access - Ερωτήσεις / Απαντήσεις | 14 | 23-09-16 15:05 |
| Άνοιγμα αρχείου εικόνας από Treeview | alex | Access - Ερωτήσεις / Απαντήσεις | 0 | 22-01-14 11:15 |
| [Γενικά] βοήθεια με άνοιγμα αρχείου excel | koumpana | Excel - Ερωτήσεις / Απαντήσεις | 1 | 20-06-12 11:49 |
| Άνοιγμα Αρχείου 'Εξερεύνηση των Windows' με δημιουργία Φακέλου | john-john | Access - Ερωτήσεις / Απαντήσεις | 3 | 14-03-12 08:20 |
Η ώρα είναι 23:02.


Αλλαγή σε γραμμικό τρόπο

