tolwyn
Goto Top

Entladen einer Form

Hallo

ich habe ein kleines VBA Problem unter Outlook 2003.

Hier eine kurze Beschreibung dazu:

Ein Kontakt wird geöffnet und anschließend soll der User die Möglichkeit haben dem Kontakt bspw einen Brief oder ein Fax zu schreiben.
Wenn ein Fax geschrieben wird, wird zusätzlich noch ein Betreff oder eine alternative Faxnummer benötigt, welche über eine Userform eingegeben werden kann.
In der Userform kann man zwischen 2 verschiedenen Faxvorlagen, welche ein Dokument unter Word öffnen

Nun die Fragen bzw. das Problem.

1. Weiß jemand, ob und wie man einem Button in Outlook einen Befehl zuweisen kann. Also dass mein selbst erstellter Button zum Beispiel eine VBA-Funktion aufruft. (subroutinen sind problemlos möglich)
Damit hätte sich das meiste unter 2. erledigt.


2. Da ich dafür bisher keine Möglichkeit gefunden habe, bin ich auf ein Workaround ausgewichen, das folgendermaßen aussieht.

Die frage dazu gleich vorweg:


Wie kann ich VBA dazu bewegen, dass er bei einem Kontakt die Faxform lädt oder sie komplett weglässt?
bzw. er sie wieder entlädt, wenn ich auf abbrechen drücke ?


Button (in OL)
|
|
Sub c_h_fax
|
|
Form mit 2 Buttons
|
|
func_word (welche in ein Word dokument schreibt)

In worten:

Der Button in Outlook ruft eine Subroutine c_h_fax auf, welche die Form Faxform lädt.

code
load faxform
code


Die faxform ruft eine funktion konttak() auf und übernimmt deren Werte

code
public sub userform_initialize()


Set Daten_fax = kontakt()

FaxForm.txt_betreff.Value = "Kein Betreff"

FaxForm.faxbox.Value = Daten_fax.BusinessFaxNumber

FaxForm.Show

end sub

code

Wenn ich nun auf den Button "Abbrechen klicke, bekomme ich folgende Fehlermeldung:

Runtime error 91

Object variable or With block variable not set


Abbrechen-Button führt folgendes aus:


code

Unload FaxForm


code


Gruß

Tolwyn

PS:

Die benötigten Methoden müssten "Load" und "unload" sein, oder?

Content-ID: 58516

Url: https://administrator.de/contentid/58516

Ausgedruckt am: 25.11.2024 um 09:11 Uhr

Diskilla
Diskilla 08.05.2007 um 15:54:04 Uhr
Goto Top
Ersetz das Unload FaxForm mal durch Unload Me
Tolwyn
Tolwyn 09.05.2007 um 22:58:10 Uhr
Goto Top
Hallo

das Problem besteht leider weiterhin.

Ich poste mal die relevanten Teile des Quelltextes:

Soviel nach dem es aussieht, ist es gar nicht;
Das meiste sind Kommentare und Deklarationen.

Ich füge noch kurz eine Erläuterung hinzu:

Zuerst wird über einen Button Modul 1 aufgerufen "c_h_fax"
Dieses ruft die Form "faxform" auf.

Beim Laden der Form wird die Funktion "Kontakt" geladen, welche als Rückgabewert die Kontaktdaten des aktuellen Kontakts hat. Diese werden der Variablen "Daten_Fax" übergeben.

Nun kann man in der Form einen Betreff und eine Faxnummer eingeben und sich ein Faxvorlage über einen der Buttons aussuchen oder die Aktion abbrechen.


Modul 1:

Sub c_h_fax()


Load FaxForm

End Sub


Modul 2:


'last edited on 30-4-07 15:47  
Public Function kontakt() As Object


'Variablen für Outlook  
Dim app As Outlook.Application
Dim objactive As Outlook.Inspector
Dim obj_contact As Object

' Es wird eine neue Instanz von Outlook erzeugt  
Set app = New Outlook.Application
Set objactive = app.ActiveInspector


    ' Falls es kein aktives Fenster gibt, wird der Vorgang abgebrochen  
  
  If objactive Is Nothing Then

        MsgBox "Es konnte kein aktives Kontaktfenster gefunden werden. Bitte oeffnen Sie einen Kontakt " & _  
        "und führen Sie die Aktion erneut aus.", vbInformation  
        
        

    ' Falls es ein aktives Fenster gibt, wird dessen Typ in obj_contact gespeichert.  
    
    Else

        Set obj_contact = objactive.CurrentItem
        

        
        ' Verschiedene Kontaktdaten werden ausgelesen, falls das aktuelle Fenster  
        ' ein Kontakt ist; falls nicht wird eine Meldung ausgegeben  
        
        If obj_contact.Class = olContact Then

        
            Set kontakt = obj_contact
              
                              
           
            
    Else
        
        MsgBox "Dies ist kein Kontakt(ContactItem) sondern ein " & TypeName(obj_contact) & ". Bitte oeffnen Sie einen Kontakt.", _  
        vbInformation
            

    End If

End If



End Function


Form:

Dim Daten_fax As Object


Private Sub c_fax_Click()

'Cotec-fax  

Call func_word(2, Daten_fax)

Unload FaxForm

End Sub



Private Sub h_fax_Click()

'Habersang-fax  

Call func_word(4, Daten_fax)

Unload FaxForm
End Sub

Private Sub abort_Click()

Unload Faxform

End Sub


Private Sub faxbox_Change()

'Faxnummer  

End Sub


Private Sub txt_betreff_Change()
'Betreff  

End Sub

Public Sub UserForm_initialize()


Set Daten_fax = kontakt()


FaxForm.txt_betreff.Value = "Kein Betreff"  

        FaxForm.faxbox.Value = Daten_fax.BusinessFaxNumber

        FaxForm.Show



End Sub
Diskilla
Diskilla 10.05.2007 um 10:14:11 Uhr
Goto Top
> Private Sub h_fax_Click()
> 
> 'Habersang-fax  
> 
> Call func_word(4, Daten_fax)
> 
> Unload FaxForm
> End Sub
> 
> Private Sub abort_Click()
> 
> Unload Faxform
> 
> End Sub
> 
> 
> Private Sub faxbox_Change()
> 
> 'Faxnummer  
> 
> End Sub
> 
> 

Hi. Du hast da einmal Unload FaxForm stehen. Fax und Form jeweils groß und bei der nächsten Sub hast du Unload Faxform stehen. Könnte es vielleicht schon an diesem einen tipfehler liegen??
Dein Problem tritt beim Klicken des Abbrechen buttons auf oder?? Genau da ist Faxform einmal anders geschrieben als sonst.

Hoffe das hilft schon. Sonst entdecke ich nämlich nix

Greetz Diskilla