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

geschrieben von mindwalzer ( MindManager Makros ) :: Kommentare (2) :: Permalink :: Trackbacks (0)

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!

geschrieben von mindwalzer ( MindManager Makros ) :: Kommentare (1) :: Permalink :: Trackbacks (0)

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

geschrieben von mindwalzer ( MindManager Makros ) :: Kommentare (1) :: Permalink :: Trackbacks (0)