| Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| ||||
| ||||
|
Καλησπέρα! Δείτε στo συνημμένο μερικά παραδείγματα αποστολής E-Mail με τη μέθοδο Hypelink() και με τη βοήθεια της VBA (προϋποθέτει εγκατεστημένο Outlook καθώς και ένα λογαριασμό E-Mail) . Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#2
| |
| Παράθεση:
Τα λέμε Θανάσης |
|
#3
| ||||
| ||||
|
Θανάση το γνωρίζω αφού και εγώ όπως και εσύ δουλεύω τον περισσότερο χρόνο σε μη ελληνικούς υπολογιστές. Άλλωστε το αρχείο το έκανα σε γερμανικό υπολογιστή και όπως καταλαβαίνεις.... Μπορείς να δοκιμάσεις τον τύπο: =HYPERLINK("mailto:" & A2 &"?Subject="&EncodeString(D2) &"&cc="&B2&"&bcc="&C2 &"&body=" &EncodeString(E2); "Send e-mail") Και τη συνάρτηση EncodeString() σε μια λειτουργική μονάδα: Κώδικας: Option Explicit
Function EncodeString(strText$) As String
Dim Char$, strLen&, CharCode%, i&
strLen = Len(strText)
If strLen > 0 Then
ReDim arrTMP(strLen) As String
For i = 1 To strLen
Char = Mid$(strText, i, 1)
CharCode = AscW(Char)
arrTMP(i) = Char
Next i
EncodeString = Join(arrTMP, vbNullString)
End If
End Function
Όλα αυτά βέβαια συν τον περιορισμό των 220 χαρακτήρων στη συνάρτηση, τα αποφεύγουμε αν χρησιμοποιήσουμε τα παραδείγματα του δεύτερου και του τρίτου φύλλου του παραδείγματος μου αφού η VBA (όχι o VBE) τα πάει μια χαρά με τα Unicode. Τα λέμε φίλε μου Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#4
|
|
Καλημέρα Τάσο. Θα έλεγα ότι η EncodeString λύνει το πρόβλημα. Αν δεν κάνω λάθος χθές που που είδα το αρχείο σου στο γραφείο αν θυμάμαι καλά ούτε το φύλλο με VBA και ελληνικα έδινε σωστά ελληνικά. (δεν είμαι σίγουρος όμως) Η μη σωστή υποστήριξη των ελληνικών με χρήση της HYPERLINK ήταν και ο λόγος που δεν μίλησα για τις παραμέτρους Subject, Body κλπ στην αρχική μου πρόταση στο Βασίλη. Απ' την άλλη ήθελα να αποφύγω την VBA για να μην τον δυσκολέψω περισσότερο. Ευχαριστώ τα λέμε (εντός του 2012 ελπίζω. Χαθήκαμε ρε φίλε ).Θανάσης ΥΓ Θα σου πρότεινα να το ανεβάσεις στα χρήσιμα. |
|
#5
| ||||
| ||||
|
Καλημέρα Θανάση μου. Με χρήση VBA δεν μπορεί παρά να λειτουργήσει σωστά αφού παίρνει τις συμβολοσειρές κατευθείαν από περιοχή του φύλλου εργασίας (το οποίο είναι καθαρά Unicode) και τις τοποθετεί στη μνήμη. Το γνωρίζω πολύ καλά γιατί ισχύει και στα υπόλοιπα προγράμματα του Office. Δεν θα λειτουργήσει σωστά αν οι συμβολοσειρές προς απόδοση είναι αποθηκευμένες μέσα σε κάποια λειτουργική μονάδα. Για παράδειγμα: Σε υπολογιστή με Τοποθεσία "Ελληνικά" σε μια λειτουργική μονάδα σε οποιοδήποτε πρόγραμμα υποστηρίζει VBA γράφουμε τον παρακάτω κώδικα: Sub Test MsgBox "Γράφω ελληνικά" End sub
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#6
| ||||
| ||||
|
Καλημέρα σε όλους! Θανάση μου, με χρήση VBA δεν μπορεί παρά να λειτουργήσει σωστά αφού παίρνει τις συμβολοσειρές κατευθείαν από περιοχή του φύλλου εργασίας (το οποίο είναι καθαρά Unicode) και τις τοποθετεί στη μνήμη. Το γνωρίζω πάρα πολύ καλά αυτό και ισχύει και για τα υπόλοιπα προγράμματα του Office. Δεν θα λειτουργήσει σωστά αν οι συμβολοσειρές προς απόδοση είναι αποθηκευμένες μέσα σε κάποια λειτουργική μονάδα. Αυτό συμβαίνει επειδή ο Επεξεργαστής Visual Basic σε αντίθεση με τη VB δεν υποστηρίζει Unicode! Για παράδειγμα: Σε υπολογιστή με Τοποθεσία "Ελληνικά" σε μια λειτουργική μονάδα σε οποιοδήποτε πρόγραμμα υποστηρίζει VBA γράφουμε τον παρακάτω κώδικα: Sub Test Dim x as String x = "Γράφω ελληνικά" End sub Αν τώρα στις τοπικές ρυθμίσεις αλλάξουμε την τοποθεσία του υπολογιστή (πχ. σε Γερμανικά) θα διαπιστώσουμε ότι τα ελληνικά μας έχουν "σπάσει" και αυτό που θα εμφανιστεί και στον VBE θα είναι: Sub Test() Dim x as String x = "ÃñÜöù åëëçíéêÜ" End Sub Αν όμως γράφαμε: στην Excel: x = Range("A1") ή στην Access: x = Me!TextField τότε σε κάθε περίπτωση η μεταβλητή x θα περιείχε χαρακτήρες Unicode και έτσι θα παίρναμε το σωστό αποτέλεσμα. Και εδώ όμως υπάρχουν εξαιρέσεις όπως:
Για τα MsgBox υπάρχει παραδειγματικό αρχείο στα παραδείγματα της Access και Excel στο φόρουμ. Για τα inputBox, η Excel έχει δικό της αντικείμενο (Καλείται έτσι: Application.InputBox...) που υποστηρίζει πλήρως τα Unicode. Για τις φόρμες και UserForm θα πρέπει να χρησιμοποιηθούν API των Windows προκειμένου να εμφανίσουμε ελληνικά. Εδώ θα δώσω ένα απλό παράδειγμα για εμφάνιση ελληνικού τίτλου σε παράθυρο μιας UserForm στην Excel: Κώδικας: Option Explicit
Private Const WM_SETTEXT = &HC
Private Declare Function DefWindowProcW Lib "user32" ( _
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim xhWnd As Long
xhWnd = FindWindow("ThunderDFrame", Me.Caption)
DefWindowProcW xhWnd, WM_SETTEXT, 0, ByVal StrPtr(Me.Label1.Caption)
End Sub
Τέλος να πω ότι έχω σκοπό να ανεβάσω περισσότερα παραδειγματικά αρχεία και στις άλλες θεματικές ενότητες του φόρουμ που έχουν σχέση με την επικοινωνία του Outlook και των υπόλοιπων προγραμμάτων του Office. Τα λέμε... Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
![]() |
| Ετικέτες |
| hyperlinks, εξωτερικές αναφορές, υπερσυνδέσεις |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [ Φόρμες ] Μορφοποίηση όταν δεν υπάρχει στη λίστα | mousatos | Access - Ερωτήσεις / Απαντήσεις | 2 | 16-09-14 09:09 |
| [ Φόρμες ] Όταν δεν υπάρχει στη λίστα | mousatos | Access - Ερωτήσεις / Απαντήσεις | 2 | 16-09-14 08:06 |
| Ειδοποίηση λήξης σε φόρμα | stavross | Access - Ερωτήσεις / Απαντήσεις | 5 | 22-01-13 18:07 |
| [VBA] Ειδοποίηση για την εισαγωγή όνομα επικεφαλίδας | devcon | Excel - Ερωτήσεις / Απαντήσεις | 2 | 26-11-11 06:23 |
| [ Εκθέσεις ] Όταν δεν υπάρχουν δεδομένα... | Meteora | Access - Ερωτήσεις / Απαντήσεις | 5 | 19-02-10 14:40 |
Η ώρα είναι 00:16.



).
Υβριδικός τρόπος

