Outlook XP i drukowanie

Pytania, problemy, uwagi związane ze starszymi wersjami Microsoft Outlook 2003, 2002 (XP), 2000, 98

Moderator: Moderatorzy

Postprzez galble » Śr 24.01.2007 08:25

Wprowadziłem poprawkę do kodu ale nadal nie działa konwertowanie e-mail textowego na html z polskimi znakami. :(
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Postprzez michu » Śr 24.01.2007 08:49

To spróbuj ustawić polskie kodowanie na domyślne w opcjach Outlook'a. W menu wybierz "Narzędzia | Opcje | Format poczty | Opcje międzynarodowe". W obu listach wyboru wybierz kodowanie "Europa Środkowa (Windows)". Jeśli nie pomoże, to spróbuj w obu wybrać "Europa Środkowa (ISO)".
Pozdrawiam
Michu
michu
 
Posty: 4179
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez galble » Śr 24.01.2007 09:37

Potestowałem trochę wysyłając e-mail z programu Outlook Express (wiadomości textowe) do MS Outlook 2000. moje spostrzeżenia:

1. Express (kodowanie Europa Środkowa (ISO), OL2000 (takie samo kodowanie) - konwersja e-mail nie udaje się (krzaczki)

2. Express (kodowanie Europa Środkowa (ISO), OL2000 (kodowanie Europa Środkowa (Windows)- konwertowanie nie udane

3. Express (Kodowanie Europa Środkowa (Windows), Ol2000 (takie samo kodowanie) - konwertowanie udane OK

Najlepiej by było gdyby konwertowanie kończyło się powodzeniem przy ustawieniach obustronnych Europa Środkowa (ISO), ewentualnie ze strony OL2000 (Europa Środkowa (Windows))
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Postprzez michu » Śr 24.01.2007 09:46

Makro, które piszesz działa w obecnym kodowaniu Windows'a, które polski użytkownik ma ustawione na Europa Środkowa (Windows). Czyli treść HTML wiadomości, którą tworzysz tak na prawdę napisana jest w tym właśnie kodowaniu. Dlatego nie wydaje mi się, żeby mogło to działać dla innego kodowania wiadomości. No a niestety wiadomości prawdopodobnie częściej będą pojawiać się w kodowaniu Europa Środkowa (ISO). Rozwiązania dla Outlook 2000 nie widzę. Gdyby to były nowsze wersje, to mógłbyś użyć właściwości BodyFormat.
Pozdrawiam
Michu
michu
 
Posty: 4179
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez galble » Pt 26.01.2007 08:40

Skoro są problemy z tym makrem to może jest możliwość zmiany edytora HTML w Outlook? Z tego co zauwayżłem podczas edytowania źródła wiadomości używany jest zwykły notatnik, który raczej nie jest polecany jako edytor HTML.
Jeżeli nie ma takiej możlwiości to prosiłbym o jakiś pomysł na code który wykluczy do konwertowania e-mail zakodowane w iso-8859-2 (inne kodowania może konwertować).
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Postprzez michu » Pt 26.01.2007 11:07

Skoro są problemy z tym makrem to może jest możliwość zmiany edytora HTML w Outlook? Z tego co zauwayżłem podczas edytowania źródła wiadomości używany jest zwykły notatnik, który raczej nie jest polecany jako edytor HTML.

Nie bardzo rozumiem o co chodzi z tą zamianą edytora.

Jeżeli nie ma takiej możlwiości to prosiłbym o jakiś pomysł na code który wykluczy do konwertowania e-mail zakodowane w iso-8859-2 (inne kodowania może konwertować).

Tak jak pisałem wcześniej, istnieje właściwość obiektu MailItem, która nazywa się InternetCodePage i zwaraca identyfikator strony kodowej, w której napisana jest wiadomość. Możesz więc sprawdzać przy pomocy tej właściwości, czy wiadomość jest w kodowaniu Europa Środkowa (Windows) i tylko takie wiadomość konwertować.

Nie wiem tylko jaka dokładnie wartość zostanie zwrócona przez właściwość InternetCodePage dla kodowania Europa Środkowa (Windows). Musisz więc zrobić test. Wyślij do siebie wiadomość w takim kodowaniu i sprawdź jaką wartość ma InternetCodePage.
Pozdrawiam
Michu
michu
 
Posty: 4179
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez galble » Pn 29.01.2007 09:26

Właściwość InternetCodePage, chyba nie jest dostępna w OL2000, albo nie mam włączonej jakiejś biblioteki.
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Postprzez michu » Pn 29.01.2007 09:59

No faktycznie, w Outloook 2000 nie ma tej właściwości. Czyli sprawa się skomplikowała, ciężko mi cokolwiek innego doradzić.
Pozdrawiam
Michu
michu
 
Posty: 4179
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez galble » Wt 30.01.2007 14:36

Problem konwertowania rozwiązałem w następujący sposób:
Kod: Zaznacz cały
Sub html()
On Error GoTo ErrorWindow
Dim Wshshell
Dim oMail As Object
  For Each oMail In Application.ActiveExplorer.Selection
    If oMail.GetInspector.EditorType <> olEditorHTML Then
        Set Wshshell = CreateObject("WScript.Shell")
        Wshshell.SendKeys ("%ee")
        Wshshell.SendKeys ("%fh")
    Else
        MsgBox "Wiadomość jest już w formacie HTML", vbInformation
    End If
    Next
    Exit Sub
ErrorWindow:
MsgBox "Błąd! Proszę o kontakt z informatykiem!", vbCritical
End Sub

Odszedłem od zautomatyzowania tej "operacji". Na pasku widoku wiadomości trzeba utworzyć przycisk np. pod nazwą HTML. Wybór tego przycisku spowoduje przekonwertowanie wiadomości na HTML (z polskimi znakami) z możliwością wrócenia do oryginalnej wiadomości (przy zamknięciu wiadomości wystarczy wybrać "Nie" na pytanie o zapis)
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Postprzez wokal » Pn 12.03.2007 17:22

.
Witam (pierwszy raz na forum),
mam taki problem, użytkownik ma Outlooka XP i gdy drukuje mail to nie drukuje listy załączników do niego załączonych (chodzi mi tylko o nazwy, a nie treść załącznika), powinien drukować tak e-mail jak wygląda po otworzeniu, a tymczasem wycina te nazwy załączników, w przydaku Outlooka 2003 wszystko jest dobrze, oczywiście mam na myśli pełnego outlooka pracującego z serwerem exchange. Nie mam pomysłu co zmienić, żeby działało, dzięki za pomoc

Witam - pozwoliłem sobie zacytować pierwszy post z tego tematu , gdyż on opisuje dokładnie mój problem - różnica jest taka , że jest to Outlook2k3 i w htmlu nie drukuje listy załączników - nie mam pojęcia gdzie to włączyć. Na jednym kompie drukuje , a na innym nie. Pomózcie!
wokal
 
Posty: 2
Dołączył(a): Pn 12.03.2007 17:17

Postprzez michu » Pn 12.03.2007 17:38

Czy jest na tym komputerze zainstalowany Office Service Pack 2?

Po wybraniu w menu Outlook'a "Pomoc | Microsoft Office Outlook - Informacje" na dialogu na końcu pierwszej linii powinien znajdować się tekst "SP2".
Pozdrawiam
Michu
michu
 
Posty: 4179
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez wokal » Wt 13.03.2007 12:33

Dzięki Michu - to rozwiązało problem - piwko!
wokal
 
Posty: 2
Dołączył(a): Pn 12.03.2007 17:17

Re: Outlook XP i drukowanie

Postprzez galble » Pn 20.10.2008 12:16

Czy jest możliwość zastąpienia innym rozwiązaniem następującej lini kodu(nadającej e-mail właściwość "write"):
Kod: Zaznacz cały
Wshshell.SendKeys ("%ee")

Chciałbym pozbyć się jednego sendkeys. Z góry dziękuję za pomoc.
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Re: Outlook XP i drukowanie

Postprzez michu » Pn 20.10.2008 12:23

Nie. Jeśli nie włączy się opcji edycji maila, to nie będzie można zmienić jego formatu.
Pozdrawiam
Michu
michu
 
Posty: 4179
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Re: Outlook XP i drukowanie

Postprzez OShon » Pn 20.10.2008 12:35

galble napisał(a):Czy jest możliwość zastąpienia innym rozwiązaniem następującej lini kodu(nadającej e-mail właściwość "write"):
Kod: Zaznacz cały
Wshshell.SendKeys ("%ee")

Chciałbym pozbyć się jednego sendkeys. Z góry dziękuję za pomoc.

No tak to jest jak się nie rozumie linijek kodu. ;]

Zaznacz "SendKeys" i wciśnij klawisz F1.
Help jaki się powinien otworzyć pokaże ci opcję użycia poleceń SendKeys

W przypadku rozważanym przez ciebie to Naciśnięcie ALT+e, e
które można też rozbić na dwie osobne instrujcje
Kod: Zaznacz cały
    SendKeys "%e"
    SendKeys "e"

Od ciebie zależy jak zautomatyzujesz sobie wciskanie kolejnych opcji klawiszy (bo metoda SendKeys to nic innego jak uproszczenie sobie życia przez zasymulowanie wciskania klawiszy i przechodzenia po Menu lub wzbudzanie skrótów klawiszowych)
Uważaj tylko na to iż w różnych wersjach Outlooka można zauważyć różne skróty czy odwołania do klawiszy. (kod powienien wiec odwoływać się do Val(Application.Version)
Moderator Outlook.pl
MVP Office System, Moderator ExcelForum.pl | WSS.pl | CodeGuru.pl, Konstruktor rozwiązań biznesowych VBATools, Business Developer Veracomp SA
OShon
 
Posty: 3792
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Outlook XP i drukowanie

Postprzez galble » Pn 20.10.2008 13:43

Dziekuje, za zainteresowanie moim problem. Z powyższych postów rozumiem, że nie ma innej metody poza sendkeys na włączenie opcji edycji maila?

Zastosowałem metodę CommandBars.FindControl do niniejszego makra (w Outlook 2000 działa). Myślę (mogę się mylić), że ta metoda jest pewniejsza niż SendKeys.
Kod: Zaznacz cały
Sub HTMLMail()
On Error GoTo ErrorWindow
Dim Wshshell As Object
Dim oMail As MailItem
Dim id_commanbars(1) As Integer         ' tablica 2-wu elementowa
Dim oMenuItem As CommandBarControl
id_commanbars(0) = 5604                    ' edycja wiadomości
id_commanbars(1) = 5564                    ' zmiana na HTML

    Set oMail = Application.ActiveWindow.CurrentItem
    If oMail.GetInspector.EditorType <> olEditorHTML Then
        For i = 0 To 1 Step 1
          Set oMenuItem = Application.ActiveWindow.CommandBars.FindControl(, id_commanbars(i))
          oMenuItem.Execute
        Next i
    Else
        MsgBox "Wiadomość jest już w formacie HTML!!", vbInformation
    End If
   
    Exit Sub
ErrorWindow:
MsgBox "Błąd! Proszę o kontakt z informatykiem!", vbCritical
End Sub
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Re: Outlook XP i drukowanie

Postprzez galble » Pn 27.10.2008 15:18

Poniższy sposób umożliwi skopiowanie zaznaczonego tekstu do schowka:
Kod: Zaznacz cały
Set kopiuj = Application.ActiveWindow.CommandBars.FindControl(, 19)
kopiuj.Execute

Później np za pomocą
Kod: Zaznacz cały
Wshshell.SendKeys ("^v")
mozna wkleić skopiowany text do nowej wiadomości. Pytanie moje brzmi: Czy jest możliwość przypisania skopiowanego, zaznaczonego tekstu do HTMLBody e-mail?
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Re: Outlook XP i drukowanie

Postprzez galble » Pt 21.11.2008 12:04

Poniższe makro umożliwia drukowanie e-mail (działa na Outlook 2000):
- w wiadomościach HTML dodaje informacje o załącznikach
- w wiadomościach HTML, gdy jest zaznaczony tekst - drukuje tylko zaznaczenie , dodając informacje o załącznikach, jeśli są (tworzony jest nowy e-mail)
- w wiadomościach TEXT, gdy jest zaznaczony tekst - drukuje tylko zaznaczenie, dodając informacje o załącznikach, jeśli są (tworzony jest nowy e-mail).

Wymagania:
- włączenie biblioteki "Microsoft Forms 2.0 Object Library"
- utworzenie folderu o nazwie "kopie_wydruku" w obszarze "Zadania" (przechowywane są tam przerobione przez makro e-mail - można ustawić dla tego katalogu Autoarchiwizacja: usuwaj elementy starsze niż 1 dni, skasuj stare elementy)
- w projekcie VBA, w pozycji ThisOutlookSession utworzyć wpis:
Kod: Zaznacz cały
Private Sub Application_Startup()
End Sub

Ten wpis ma za zadanie tylko uaktywnić aplikację Microsoft Visual Basic. Bez tej aktywacji, występują problemy w działaniu makra, podczas "świeżo" uruchomionego Outlooka 2000 - trzeba zamknąć i otworzyć ponownie e-mail którego chce się wydrukować (przy dłuższym działaniu aplikacji Outlook nie ma problemu).

Kod:
Kod: Zaznacz cały
Sub PrintWithAttachList()
  On Error GoTo ErrorWindow
    Dim oMail As Outlook.MailItem
    Dim drukuj, kopiuj, wklej, edytuj As CommandBarButton
    Dim MyData As New msforms.DataObject
   
    Set oMail = Application.ActiveWindow.CurrentItem
    Set drukuj = Application.ActiveWindow.CommandBars.FindControl(, 4)
    Set kopiuj = Application.ActiveWindow.CommandBars.FindControl(, 19)
    Set wklej = Application.ActiveWindow.CommandBars.FindControl(, 22)
    Set edytuj = Application.ActiveWindow.CommandBars.FindControl(, 5604)
   
    'Folder dla kopi e-mail
    Set deletefolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks).Folders("kopie_wydruku")
   
         Dim strList As String
'##################### HTML ###################################
         If oMail.Attachments.Count > 0 And oMail.GetInspector.EditorType = olEditorHTML Then ' gdy są załączniki
           
            If kopiuj.Enabled = False Then      ' brak zaznaczenia tekstu,obiektu
              oMail.Copy                                ' kopia e-mail 
              strList = "<b>Attachments:</b><br>"
                For nIndex = 1 To oMail.Attachments.Count
                    strList = strList & oMail.Attachments.Item(nIndex).DisplayName & "; "  ' lista załączników
                Next
              strList = strList & "<br><br>"
              oMail.HTMLBody = strList & oMail.HTMLBody  ' treść wiadomości HTML
              oMail.Close olSave                ' zamknięcie e-mail z zapisem
              oMail.Move (deletefolder)     ' przeniesienie do folderu
              oMail.Display                        ' wyświetlenie e-mail
              Delay (1)                              ' opóźnienie
              drukuj.Execute                     ' drukowanie
            Else                                        ' gdy zaznaczony jest obszar wiadomości
              kopiuj.Execute                      ' wykonanie opcji kopiuj - do schowka
              oMail.Copy
              strList = "<b>Attachments:</b><br>"
              For nIndex = 1 To oMail.Attachments.Count
                  strList = strList & oMail.Attachments.Item(nIndex).DisplayName & "; "
              Next
              strList = strList & "<br><br>"
              oMail.HTMLBody = " "         ' wyczyszczenie HTMLBody
              edytuj.Execute                  ' właczenie opcji edytowania wiadomości
              Delay (2)
              wklej.Execute                   ' wklejenie zawartości schowka
              oMail.HTMLBody = strList & oMail.HTMLBody  ' dodanie listy załączników
              oMail.Close olSave
              oMail.Move (deletefolder)
              oMail.Display
              Delay (1)
              drukuj.Execute                   ' drukowanie
            End If
        'gdy nie ma załączników
         ElseIf oMail.Attachments.Count = 0 And oMail.GetInspector.EditorType = olEditorHTML Then
            If kopiuj.Enabled = False Then ' gdy nie jest zaznaczony tekst
              drukuj.Execute
            Else        ' gdy jest zaznaczony tekst
              kopiuj.Execute
              oMail.Copy
              oMail.HTMLBody = " "    ' wyczyszczenie HTMLBody
              edytuj.Execute
              Delay (2)
              wklej.Execute
              oMail.Close olSave
              oMail.Move (deletefolder)
              oMail.Display
              Delay (1)
              drukuj.Execute
           End If
        End If
' ####################### KONIEC HTML #######################################

' ####################### TEXT ##############################################
        If oMail.GetInspector.EditorType <> olEditorHTML Then
          If kopiuj.Enabled = False Then ' gdy nie jest zaznaczony tekst (niektywna opcja kopiowania)
            drukuj.Execute
          Else                        ' gdy jest zaznaczony tekst
            kopiuj.Execute
            oMail.Copy
            For nIndex = 1 To oMail.Attachments.Count  ' usuwanie załączników
              strList = strList & oMail.Attachments.Item(nIndex).DisplayName & "; " ' lista załączników
              oMail.Attachments.Remove 1
            Next
            MyData.GetFromClipboard         ' odwołanie do schowka
            If strList = Empty Then              ' sprawdzenie czy w e-mail są załączniki
              oMail.Body = MyData.GetText  ' przypisanie obiektowi Body tekstu ze schowka
            Else ' gdy są załączniki
              oMail.Body = "Attachments: " & strList & Chr(10) & Chr(10) & MyData.GetText
            End If
            drukuj.Execute
            oMail.Close olSave                 ' zamknięcie z zapisem
            oMail.Move (deletefolder)
            oMail.Display
          End If
        End If
' ################## KONIEC TEXT #############################################
          Set deletefolder = Nothing
          Set kopiuj = Nothing
          Set edytuk = Nothing
          Set wklej = Nothing
          Set drukuj = Nothing
    Exit Sub
ErrorWindow:
  MsgBox "Błąd drukowania. Spróbuj wydrukować poprzez Plik/Drukuj..!", vbCritical
  End Sub

'Opóźnienie
Private Sub Delay(ByVal Seconds As Long)
    Dim Start As Long
    Dim Finish As Long

    On Error Resume Next

    Start = Timer
    Finish = Start + Seconds
    While (Start < Finish)
        Start = Timer
        DoEvents
    Wend
End Sub


W przypadku problemu działania kodu na wiadomościach HTML z zaznczonym tekstem do drukowania proponuje zmianę:
Kod: Zaznacz cały
oMail.HTMLBody = " "         ' wyczyszczenie HTMLBody

na
Kod: Zaznacz cały
oMail.HTMLBody = "<br><br>"         ' wyczyszczenie HTMLBody
Ostatnio edytowano Wt 25.11.2008 11:48 przez galble, łącznie edytowano 4 razy
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Re: Outlook XP i drukowanie

Postprzez michu » Pt 21.11.2008 15:01

Mogę opublikować to makro w dziale Artykuły na stronie outlook.pl? Oczywiście będziesz widniał jako autor.
Pozdrawiam
Michu
michu
 
Posty: 4179
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Re: Outlook XP i drukowanie

Postprzez galble » Pt 21.11.2008 15:07

Nie ma sprawy, proszę bardzo. Makro przekazuje do użytku publicznego. :)
galble
 
Posty: 38
Dołączył(a): Śr 06.09.2006 07:35

Poprzednia stronaNastępna strona

Powrót do Microsoft Outlook

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości