Freitag, Mai 12, 2006
Mails per Makro senden
Kann man per Makro auch Mails senden unter Verwendung des Standard-Mailclients unter Windows? Man kann!
Hier ein Beispiel, in dem sämtliche Mail-Adressen auf Zweigen in einer Map gesucht werden und daraus der Mail-Client geöffnet wird, so dass eine Mail an alle gefundenen Adressen gesendet werden kann:
Option Explicit
Private Const SW_SHOW = 5
Dim WithEvents iterator As TopicFinder
Dim MailAdressen As String
Sub Main
Dim mmT As Topic
Dim MailPrefix As String
Set mmT = ActiveDocument.CentralTopic
Set iterator = mmT.NewTopicFinder
MailAdressen = ""
iterator.Start
MailPrefix = ""
'MailPrefix = "&cc=" 'Mail als CC-Kopie senden
'MailPrefix = "&bcc=" 'Mail als BCC-Kopie senden
OpenEmail(MailPrefix & MailAdressen, "", "")
End Sub
Private Sub iterator_TopicFound (t As Topic)
If t.HasHyperlink Then
If Left(t.Hyperlink.Address, 7) = "mailto:" Then
MailAdressen = MailAdressen & Replace(t.Hyperlink.Address, "mailto:", "") & "; "
End If
End If
End Sub
Private Function OpenEmail(ByVal EmailAddress As String, _
Optional Subject As String, Optional Body As String) _
As Boolean
Dim lWindow As Long
Dim lRet As Long
Dim sParams As String
sParams = EmailAddress
If LCase(Left(sParams, 7)) "mailto:" Then _
sParams = "mailto:" & sParams
If Subject "" Then sParams = sParams & "?subject=" & Subject
If Body "" Then
sParams = sParams & IIf(Subject = "", "?", "&")
sParams = sParams & "body=" & Body
End If
lRet = ShellExecute(lWindow, "open", sParams, "", "", SW_SHOW)
OpenEmail = lRet = 0
End Function
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
Dienstag, April 11, 2006
MindManager Makro-Programmierung auf der MindBusiness Solutions-Woche
Vom 23.-28. April findet in Potsdam die MindBusiness Solutionswoche statt, Schwerpunkte sind MindManager, SharePoint. MS Office, Datenbanken und Programmierung.
Infos hier....
Am Donnerstag, den 27. April gibt es einen Tagesworkshop zur MindManager-Makroprogrammierung, den ich leiten werden.
Wer sich einmal das MindManager Objektmodell genauer anschauen , Tipps und Tricks kennenlernen und sich mit anderen Anwendern austauschen möchte, dem sei dieser Tag (und natürlich die ganze Woche) wärmstens empfohlen.
Vielleicht sehen wir uns in Potsdam!
Freitag, Februar 24, 2006
Makro zum Ausblenden von Datencontainern
Im MindManager 6 sind die sogenannten Datencontainer hinzugekommen. In Datencontainern sind z.B. die benutzerdefinierten Eigenschaften, Tabellen, Excel und Outlook Linker-Eigenschaften enthalten, die mit dem Zweig definiert werden können.
Diese Datencontainer sind recht groß, und wenn Sie z.B. intensiv mit dem Outlook Linker arbeiten wird die Map unübersichtlich. Nun können Sie die Elemente einzeln manuell schließen, was aber etwas umständlich ist.
Mit folgendem Makro können Sie sämtliche Dateincontainer auf einmal schließen. Der Code ist kommentiert, so dass Sie ggf. eigene Erweiterungen einbauen oder ihn als Basis für andere Funktionen verwenden können.
Option Explicit Dim WithEvents iterator As TopicFinder Sub Main Dim t As Topic Set t = ActiveDocument.CentralTopic 'Neuen TopicFinder initialisieren, mit dem alle Zweige in der Map "besucht" werden Set iterator = t.NewTopicFinder iterator.IncludeHiddenTopics = False iterator.Start End Sub 'Diese Prozedur wird vom TopicFinder für jeden Zweig in der Map einmal aufgerufen Private Sub iterator_TopicFound (t As Topic) 'Die folgenden Variablen werden für den Zugriff auf die benutzerdefinierten Eigenschaften benötigt Dim dc As DataContainer 'Falls ein Zweig keine benutzerdefinierte Eigenschaft enthält, wird ein Fehler ausgelöst On Error GoTo ErrorHandler 'Datencontainer aus Zweig zuweisen Set dc = t.DataContainer 'Container schließen dc.Visible = False ErrorHandler: ' Keine Aktion, der Fehler tritt auf, wenn ein Zweig keine Benutzerdefinierte Eigenschaft enthält ' kann ignoriert werden End Sub

