| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Καλημέρα σε όλους! Το ερωτημά μου νομίζω αφορά api Στο συνημμένο παράδειγμα όταν από τη φόρμα Test πατάω προσθήκη θέλω το παράθυρο των Windows για αναζήτηση αρχείου να ανοίγει μεγιστοποιημένο και προβολή λεπτομέρειες. Αν κάποιος μπορεί ας βοηθήσει. Ευχαριστώ εκ των προτέρων. Φιλικά Δημήτρης |
|
#2
| |||
| |||
|
καλημέρα αυτό γίνεται μάλλον μόνο με VBA |
|
#3
| ||||
| ||||
|
Καλησπέρα! Δημήτρη, δοκίμασε τον παρακάτω κώδικα στη φόρμα σου (test). Ο κώδικας αυτός λειτουργεί αυτόνομα (δεν εξαρτάται από τις συναρτήσεις των άλλων λειτουργικών μονάδων της εφαρμογής): Πρόσθεσε πρώτα την αναφορά Microsoft Scripting Runtime (Tools > References) Κώδικας: Option Compare Database
Option Explicit
Private Const strOpenTitle = "Εισαγωγή"
Private Const strDlgTitle = "Επιλογή αρχείου..."
Private Const DlgClass = "#32770"
Private Const SW_MAXIMIZE = 3&
Private Const SW_SHOWNORMAL = 1&
Private hw As Long
Private Const strFilter = "Όλα τα αρχεία (*.*)|Αρχεία Word (*.doc)|Αρχεία Excel (*.xls)|Αρχεία Pdf (*.pdf)|Αρχεία (*.rtf)"
Private Declare Function ShowWindow Lib "user32" (ByVal _
hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
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 fso As New Scripting.FileSystemObject
Private Function GetFilePath() As String
Dim strFile As String, strInitialDir As String
strInitialDir = CurrentProject.Path 'ή πχ. "C:\"
WizHook.Key = 51488399
Me.TimerInterval = 1000
WizHook.GetFileName 0, "", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, 0, 0, 64, True
GetFilePath = strFile
End Function
Private Sub Form_Timer()
If hw Then Me.TimerInterval = 0: hw = 0: Exit Sub
hw = FindWindow(DlgClass, strDlgTitle)
ShowWindow hw, SW_MAXIMIZE
End Sub
Private Sub cmdAddSmall_Click()
On Error GoTo cmdAddSmall_Err
Dim strFilename As String
strFilename = GetFilePath
If Len(strFilename) Then
Me![FilePath] = strFilename
Me.DocumentTitle = fso.GetFileName(strFilename)
Me.FolderName = fso.GetParentFolderName(strFilename)
End If
cmdAddSmall_End:
Exit Sub
cmdAddSmall_Err:
MsgBox Err & vbLf & Err.Description
Resume cmdAddSmall_End
End Sub
Private Sub cmdOpenWordDoc_Click()
Dim strFilename As String, lp_Directory As String
strFilename = Nz(Me.FilePath, "")
If Len(Trim(strFilename)) = 0 Then
MsgBox "Παρακαλώ βεβαιωθείτε ότι η διαδρομή για αυτό το έγγραφο είναι σωστή.", vbInformation, "Προσοχή!"
ElseIf Not fso.FileExists(strFilename) Then
MsgBox "Το έγγραφο δεν βρέθηκε." & vbCrLf & "Παρακαλώ αναζητήστετο ξανά.", vbExclamation, "Λυπάμαι!"
Else
lp_Directory = Nz(Me.FolderName, "")
If Not fso.FolderExists(lp_Directory) Then lp_Directory = "C:\"
ShellExecute 0, "open", strFilename, "", lp_Directory, SW_SHOWNORMAL
End If
End Sub
Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 17-07-12 στις 13:28. |
|
#4
| |||
| |||
|
Καλημέρα σε όλους τους φίλους. Τάσο είδα την απαντησή σου και σε ευχαριστώ για το χρόνο σου. Δουλεύει, το παράθυρο ανοίγει σε προβολή λεπτομέρειες, δεν γίνεται maximize αλλά δεν πειράζει. Όμως δεν πάει στον φάκελο από όπου πρόσθεσα το τελευταίο αρχείο. Ανοίγει πάντα στο φάκελο που έχω τη βάση πράγμα που δεν εξυπηρετεί. Προσπαθώ να βάλω σε τάξη εκατοντάδες αρχεία ( ερωτήματα - αποφάσεις-κλπ) σκορπισμένα σε διάφορους φακέλους και ήθελα να κάνω ευκολότερη την αναζήτηση. Μια ερώτηση μόνο στο strFilter ποιά είναι η σύνταξη για το OR ώστε να προβάλλει δύο τύπους αρχείων ταυτόχρονα πχ (*.doc) και (*.xls) Και πάλι ευχαριστώ Φιλικά Δημήτρης. |
|
#5
| ||||
| ||||
|
Καλησπέρα Δημήτρη! Πρέπει να δουλέψει η μεγέθυνση τουλάχιστον σε Windows 7. Δεν μπόρεσα να το δοκιμάσω σε XP. Ωστόσο δοκίμασε να αυξήσεις το χρόνο στο χρονόμετρο της φόρμας από 1000 σε κάτι μεγαλύτερο (Me.TimerInterval = 1500). Δεν πρόκειται για ένα απλό παράθυρο αλλά για παράθυρο διαλόγου που όταν είναι ανοιχτό διακόπτεται η εκτέλεση του κώδικα με αποτέλεσμα να μην μπορεί να εκτελεστεί ο κώδικας εκείνος που θα βρει και θα μεγιστοποιήσει το παράθυρο αυτό. Όσο για τη διαδρομή φακέλου δοκίμασε: Κώδικας: Private Function GetFilePath() As String
Dim strFile As String, strInitialDir As String
strInitialDir = Nz(Me.FolderName, "")
If Trim(strInitialDir) = "" Then strInitialDir = CurDir
WizHook.Key = 51488399
Me.TimerInterval = 1500
WizHook.GetFileName 0, "", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, 0, 0, 64, True
GetFilePath = strFile
End Function
Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#6
| |||
| |||
|
Καλησπέρα Τάσο! Όλα δουλεύουν άψογα. Σε ευχαριστώ πάρα πολύ. Δεν μεγιστοποιεί το παράθυρο αλλά το κρατάει στο μέγεθος που το χρησιμοποίησα την τελευταία φορά οπότε είναι και καλύτερα. Ακόμη και όταν κλείνω και ξανανοίγω τη βάση κρατάει το τελευταίο μέγεθος. Και η διαδρομή φακέλου εντάξει. Έχω Windows XP θα το δοκιμάσω και σε 7 που έχει ο γιος μου. Και πάλι ευχαριστώ Φιλικά Δημήτρης. |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [Συναρτήσεις] Αλλαγη ημερομηνία έπειτα απο αλλαγή | xaralampos | Excel - Ερωτήσεις / Απαντήσεις | 1 | 24-06-16 22:45 |
| [Excel07] Μετατροπή προβολής δεδομένων | γιώργοςΚ | Excel - Ερωτήσεις / Απαντήσεις | 8 | 14-12-15 18:37 |
| [Γενικά] Νέο παράθυρο | manolis | Excel - Ερωτήσεις / Απαντήσεις | 2 | 26-02-15 22:39 |
| [ Ερωτήματα ] ΗΕμφάνιση ημερολογίου σε αναδυόμενο παράθυρο της Access | dimitrisp | Access - Ερωτήσεις / Απαντήσεις | 9 | 18-09-14 20:23 |
Η ώρα είναι 05:16.


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

