kompatible Programmierung

Bild

Betrifft: kompatible Programmierung
von: Volker Neuhäuser
Geschrieben am: 20.04.2005 11:57:31
Hallo Ex(cel)perten,
auf folgende Fragen habe ich im Archiv keine Antwort gefunden:
Ich programmiere VBA (XL2003) unter gelegentlichem Einsatz des Macro-Recorders, mit dem ich z.B. eine Sortierroutine aufzeichne.
Wie kann ich sicherstellen, dass diese Programme auch unter Excel 2000 laufen?
Der Recorder verwendet nämlich auch neue Optionen, die erst ab XL2003 zur Verfügung stehen.
Die zweite Frage geht in dieselbe Richtung.
Ich habe eine Lösung erstellt, die aus Excel heraus Outlookmails erzeugt. Dazu mußte ich einen Verweis auf die Outlook-Bibliothek setzen.
Prompt gibts ein Problem bei einem Anwender mit XL2002, da die Bibliothek für Outlook 2003 gesucht wird, aber logischerweise nicht gefunden wird.
Gibt es Möglichkeiten, die Abwärtskompatibilität sicherzustellen?
Schon jetzt vielen Dank für Eure Anregungen.
Gruß
Volker

Bild

Betrifft: references checken
von: Rolf Beißner
Geschrieben am: 20.04.2005 12:18:24
Hallo Volker,
schau dir mal diesen Beitrag von heute an
https://www.herber.de/forum/messages/601318.html
fG
Rolf
Bild

Betrifft: AW: references checken
von: Volker
Geschrieben am: 21.04.2005 06:08:17
Hallo Rolf,
danke für den Hinweis.Darauf kann ich sicher aufbauen.
Gruß
Volker
Bild

Betrifft: AW: kompatible Programmierung
von: Herbert
Geschrieben am: 20.04.2005 14:17:17
Hi,
"Dazu mußte ich einen Verweis auf die Outlook-Bibliothek setzen."
Wenn du LateBinding verwendest, ist das nicht nötig und es läuft auch in der tieferen
Version.
mfg Herbert
Bild

Betrifft: AW: kompatible Programmierung
von: Volker
Geschrieben am: 21.04.2005 06:25:06

Hallo Herbert,
danke für Deinen Hinweis. Die Materie mit der Einbindung von Verweisen ist mir noch nicht so vertraut, deshalb gestatte mir die Nachfrage:
Meinst Du mit 'Late Binding' sowas hier (gefunden im Archiv):
Dim OutOb as Object
Set OutOb = CreateObject("Outlook.Application")
Keinen Verweis unter Extras-> Verweise setzen, sondern lediglich den o.g. Code verweden.
Richtig?

Gruß
Volker
Bild

Betrifft: ja, das meinte Herbert oT
von: Rolf Beißner
Geschrieben am: 21.04.2005 08:30:41
..
Bild

Betrifft: AW: ja, das meinte Herbert oT
von: Volker
Geschrieben am: 21.04.2005 12:40:47
Hallo Rolf,
soweit so gut.
Nun entsteht durch diese Vorgehensweise ('late binding') aber ein anderes Problem:
Ich möchte die Empfängeradresse im Outlook-Adressbuch überprüfen.
Bei 'early binding' funktioniet nachstehender Code einwandfrei, bei 'late binding' bleibt das Empfängerfeld leer. Was mache ich falsch? Habe ich etwas übersehen?

Sub test()
    Dim OutApp As Object
    Dim objOutlookRecip As Object 
    Dim Nachricht As Object 
    Dim mailadr As String
      Set OutApp = CreateObject("Outlook.Application")
      Set Nachricht = OutApp.CreateItem(0)
      mailadr = "xyz@abc.de"
      With Nachricht
        Set objOutlookRecip = .Recipients.Add(mailadr)
        objOutlookRecip.Type = olTo
        objOutlookRecip.Resolve
        .Subject = "Betreff"
        .body = "Text"
        .Display
      End With
      Set OutApp = Nothing
      Set Nachricht = Nothing
End Sub

Ich bin für jeden Hinweis dankbar. Ich habe die Recherche zu dem Stichwort 'late binding' mittlerweile durchforstet, habe aber dort keinen Hinweis gefunden, um obiges Problem zu lösen. Oder gibt es noch eine andere Möglichkeit, die Existenz des Empfängers im OL-Adressbuch zu überprüfen?
Gruß
Volker
Bild

Betrifft: Problem gelöst
von: Volker
Geschrieben am: 21.04.2005 12:46:29
Hallo Rolf,
meine Frage hat sich erledigt.
Durch eine Zuweisung an .to erscheint nun auch der überprüfte Empfänger.

Sub test2()
    Dim OutApp As Object
    Dim objOutlookRecip As Object 'Outlook.Recipient
    Dim Nachricht As Object 'Outlook.MailItem
    Dim mailadr As String
      Set OutApp = CreateObject("Outlook.Application")
      Set Nachricht = OutApp.CreateItem(0)
      mailadr = "wzc3nk"
      With Nachricht
        Set objOutlookRecip = .Recipients.Add(mailadr)
        objOutlookRecip.Type = olTo
        objOutlookRecip.Resolve
        .to = objOutlookRecip
        .Subject = "Betreff"
        .body = "Text"
        .Display
      End With      
      Set OutApp = Nothing
      Set Nachricht = Nothing
End Sub

Danke und Gruß
Volker
Bild

Betrifft: AW: kompatible Programmierung
von: Volker
Geschrieben am: 21.04.2005 12:57:40
Hallo zusammen,
während der zweite Teil meiner Anfrage inzwischen dankenswerterweise geklärt ist, gab es
zur ersten Frage bisher keine Reaktion.
Kann man durch Aktivierung / Deaktivierung von Bibliotheken etwas machen oder gibt es keinerlei Möglichkeit, den Macro-Recorder dazu zu bewegen, abwärtskompatiblen Code zu erzeugen?
Gruß
Volker
Bild

Betrifft: AW: kompatible Programmierung
von: Rolf Beißner
Geschrieben am: 21.04.2005 14:28:20
Hallo Volker,
ein generelles Tool ist mir zumindest nicht bekannt.
Ich sehe nur die Möglichkeit, die References abhängig
von der XL-Version zu setzen -
z.B. via Workbook_Open + Abarbeitung einer zentral
hinterlegten Tabelle.
Ist aber zugegebenermaßen alles nicht schön.
fG
Rolf
Bild

Betrifft: AW: kompatible Programmierung
von: Volker
Geschrieben am: 21.04.2005 15:21:46
Hallo Rolf,
danke, ich hatte bereits angenommen, dass es für meine Frage keine Standardlösung gibt.
Ich schließe damit den Thread.
Danke und Gruß
Volker
 Bild

Beiträge aus den Excel-Beispielen zum Thema "kompatible Programmierung"