MS-Project VBA-Programmierung

Nur die zusammenhängenden Vorgänge anzeigen

Der Vorgangspfad kennzeichnet zwar die zusammenhängenden Vorgänge, zeigt sie aber nicht allein an. Wnen zwischen den Vorgängen viele andre Zeilen liegen, bleibt es unübersichtlich. In meinem Makro habe ich das Problem gelöst.
Nur die zusammenhängenden Vorgänge anzeigen
Dieses Tutorial steht auch als PDF-Download (https://www.time4mambo.de/download/office) auf time4mambo zur Verfügung (allerdings ohne den letzten Absatz mit dem Makros). https://support.microsoft.com/de-de/office/feldfunktionen-ref-feld-b2531c23-05d6-4e3b-b54f-aee24447ceb2
Eigene Felder mit veränderbaren Text (Überarbeitet: Dezember 2021)
Das Tutorial steht auch als PDF-Datei zum Download auf time4mambo (https://www.time4mambo.de/download/office) bereit Optional … empfehle ich zunächst vorhandene Überschriften zu kopieren,
Gegliederte Überschriften in Word

Diagramm mit IST-/SOLL - Neg./Pos. Abweichung

Positive/Negative Abweichung in einem Excel-Diagramm
Diagramm mit IST-/SOLL - Neg./Pos. Abweichung

Excelliste mit bestimmter Hintergrundfarbe addieren

Mit VBA eine kleine Funktion programmieren, die Zahlen mit einer bestimmten Farbe summiert.
Excelliste mit bestimmter Hintergrundfarbe addieren
Eigentlich klingt das ganz einfach. Gibt schließlich sogar eine Befehlsschaltfläche um eine Excel-Tabelle in PowerPoint einzufügen. Aber da wir es mit Microsoft und einem starken Programm zu tun haben, gibt
Verschiedene Möglichkeiten Excel in PowerPoint einzufügen

Jetzt als kostenloses Onlinebook:

Seblod - Das Handbuch

Komplettabdruck der zweiten Auflage. (Fast) alles zum CCK Seblod! Der wohl mächtigsten Erweiterung von Joomla!
Seblod - Das Handbuch
Dieses Tutorial entstand ursprünglich für Dozenten und wurde während der Coronakrise geschrieben. Das ein oder andere Seminar fand auch statt. Um den Kolleginnen und Kollegen, die sich nicht so auskannten
Einführung in Microsoft Teams
In Joomla gibt es ein Modul, welches RSS-Feeds erzeugt, die andere abonnieren können. Das Problem ist nur, dass dieses Modul jeweils nur einen Feed für die gerade aktuelle Seite/Kategorie erzeugt.
RSS-Feeds kompakt ohne Erweiterung

Rechnung in Word - ohne Excel

Mit etwas einfacher Makroprogrammierung lässt sich in Word auch ohne Excel rechnen und somit eine Rechnung erstellen. Das Tutorial zeigt in mehreren Teilen, wie sich eine Rechnung mit allem Drum und Dran erstellen lässt.
Rechnung in Word - ohne Excel
Filter in zwei oder mehr Spalten zu setzen, die nicht voneinander abhängig sind, ist mit den Filtermöglichkeiten, die Excel bietet, nicht möglich. Angenommen Sie haben eine Tabelle mit ein paar Städten, zwei verschiedene Kategorien und zugehörigen Umsätzen. Aktivieren Sie über das Menüband Daten in der Gruppe Sortieren und Filtern den
Zwei Filter setzen mit ODER(...)
Die App kann bei https://www.time4mambo.de/download/seblod (https://www.time4mambo.de/download/seblod) downgeloadet werden ----------------- Mir gefiehlen die guten alten Weblinks von Joomla nicht, als ich diese Site relaunchte. Beispielsweise war es nicht möglich die Sprache der
SEBLOD: Weblinks mit automatisierten Screenshots

Excel-Lösungen

  • Tutorials zu Fragen rund um Excel
  • Teilweise mit Makroprogrammierungen.
  • Fertige Excel-Sheets mit Teillösungen zum Download
Excel-Lösungen
Dieses Tutorial steht auf time4mambo (https://www.time4mambo.de/download/office) als PDF zur Verfügung Einfache Rechnung Einzelpostenauflistung, Zwischensumme, Gesamtsumme und Mehrwertsteuer – für den Geschäftsmann
Rechnungserstellung mit Word und Excel
Seit Joomla 3 ist das CSS-Framework Bootstrap fester Bestandteil in Joomla und kann für eigene Templates somit einfach benutzt werden. Auf time4jaoomla erfahren Sie, wie es geht.
Bootstrap mit Joomla
Original-Auszug aus dem Buch Die Überlegung: Wir haben eine Kulturredaktion, der eine Kategorie zugeordnet ist. Und wir haben eine Politikredaktion, die in zwei Kategorien schreibt. Beide Redaktionen sollen nur ihre eigenen Beiträge bearbeiten, veröffentlichen und löschen können. Außerdem bekommen beide Redaktionen noch einen Chefreakteur zur Seite, der in allen
Fallbeispiel: Redaktionssystem
Schaut man sich das erste Mal einen CSS-Befehl an, führt das meistens zu einem panischen Weiterklicken, weil das alles sehr kompliziert ausschaut. Aber eigentlich ist es das nicht. Bei genauer Betrachtung ist CSS eigentlich sogar selbsterklärend und wenn man eine Weile damit umgegangen ist, geht es schon beinahe wie von
Wie funktioniert CSS
Das Tutorial steht auf time4mambo zum Download bereit: http://www.time4mambo.de/download/joomla/CommunityBuilder_v04-Joomla 3x.pdf (http://www.time4mambo.de/download/joomla/CommunityBuilder_v04-Joomla%203x.pdf) Dieses Tutorial ist ursprünglich für Joomla! 1.5 geschrieben worden. So ich es derzeit überblicke hat das Tutorial aber auch in
Community Builder
Dieses Tutorial und die zugehörige App stehen als Download auf http://www.time4mambo.de/webdesign/referenz.html (http://www.time4mambo.de/webdesign/referenz.html)
SEBLOD: Einführung am Beispiel eines selbsterstellten Portfolios
Grafische Rollovers mit dem JCE zu machen ist ja recht einfach, weil der JCE hier schon fertige Einstellmöglichkeiten sehr einfach mitbringt.Aber wie wird ein Rollover-Effekt bei einer Textmarke erzielt? Eigentlich genauso wie ein grafischer Rollover-Effekt - nur mit einem klitzekleinen Trick: Zunächst schreiben wir den Text: Lass uns was schreiben und mittendrin einen
Text-Rollover mit dem JCE

IST/SOLL mit Fehlerindikatoren

Ein Diagramm mit Fehlerindikatoren erstellen
IST/SOLL mit Fehlerindikatoren

Para- und Nonverbale Kommunikation

Damit ist zum einen die Körpersprache gemeint und zum anderen die Art, wie wir kommunizieren. Zu letzterem gehören der Tonfall, Sprachmelodie, Artikulation, Sprechtempo und auch die Pausen zwischen den Wörtern.

Das reine Wort, der Inhalt, machen 7% unserer Kommunikation aus. Die para- und nonverbale Kommunikation zusammen 93%. Wie Sie 93% mehr Erfolg haben können, erfahren Sie auf dieser Website:

Körpersprache


Deutschsprachige Seblod-Community

Zu dritt haben wir die deutschsprachige SEBLOD™-Community gegründet. Neben Ressourcen und Webseiten , die mit SEBLOD™ gemacht sind, bieten wir ein Supportforum zu Fragen rund um SEBLOD™ an.

https://seblod.time4mambo.de


Selbst geschrieben: SEBLOD - Das Handbuch

Das Content-Management-System Joomla! stellt dem Anwender bereits eine breite Palette von Funktionen zur Ausgestaltung von Webauftritten bereit. Bei erfolgreichen Webseiten steigt mit der Zeit aber der Anspruch in Bezug auf Funktionalität. Es ist nur eine Frage der Zeit, bis Sie an die Grenzen von Joomla! stoßen. Entweder greifen Sie dann in den Programmcode ein oder setzen auf ein Content Construction Kit (CCK). Das mächtigste dieser Art ist SEBLOD®. Wie Sie damit die Grenzen von Joomla! sprengen, zeigt Ihnen das vorliegende Handbuch.

SEBLOD - Das Handbuch


Selbst geschrieben: Joomla für Redakteure

Amazon:
Dieses essential bietet speziell Redakteuren einen Einstieg in das Content Management System Joomla!. Losgelöst vom „Ballast“ der zahlreichen Einstellungen und Möglichkeiten, die in anderen Büchern thematisiert werden, wendet sich dieses Buch ausschließlich an die eigentlichen Endnutzer des Systems und konzentriert sich dabei auf das Schreiben und Veröffentlichen von Beiträgen. Der erfahrene Autor und Joomla!-Kenner Axel Tüting erklärt jeden Schritt praxisnah und verständlich.

Joomla für Redakteure


Dankesagen...

Wenn die Tutorials dir weitergeholfen haben, dann kannst du mit einer kleinen Spende Danke sagen.

Schulungen

Langjährige Erfahrung als Dozent zu verschiedenen Themen.
Ich komme zu Ihnen in die Firma oder organisiere Räume vor Ort. Dazu steht mir ein Netzwerk aus vielen Jahren Tätigkeit als freier Dozent zur Verfügung.
Weitere Informationen, sowie Referenzen finden Sie auf der Firmenseite time4mambo

  •     VBA für Excel, Word und Outlook
  •     MS-Excel
        2003 / 2007 / 2010 / 2016 / 2019
  •     MS-Project
        2003 / 2007 / 2010 / 2016 / 2019
  •     MS-Word
        2003 / 2007 / 2010 / 2016 / 2019
  •     MS-PowerPoint
        2010 / 2016 / 2019
  •     Office 365
  •     Joomla! 3x
  •     Körpersprache

    Weitere Themen auf Anfrage

Interesse? Lust? Zeit? Dann freue ich mich über eine eMail oder Anruf.
Kontaktdaten im Impressum


Eine Übersicht der verwendeten Erweiterungen findet sich im Impressum

out2word.jpg

Rechnungserstellung - Teil 4: Verbindung nach Outlook und Adresse in Word einfügen

Word
2013

Der vierte Teil dauerte nun etwas, was aber an meinem Mangel an Zeit lag.

Unsere Rechnung ist ja eigentlich schon fertig. Schön wäre es jedoch, wenn wir die Anschriften unserer Kunden direkt aus Outlook herausholen könnten und nicht erst nachschauen müssen, wie die Anschrift lautet.

Genau das beeinhaltet dieser vierte und letzte Teil: Es wird eine Verbindung nach Outlook hergestellt und aus der Outlook-Kontakliste die Adresse herausgesucht und in das Adressfeld von Word geschrieben.

Dieser Teil ist für Nichtprogrammierer harter Tobak. Mein Tutorial kann leider keinen umfassenden Einblick in die Programmierung ansich geben. Der Nichtprogrammierer kann aber den Code durch Copy/Paste, wie in den anderne Teilen erklärt, einfügen und der Programmierer kann die ein oder andere Zeile vielleicht besser verstehen.

Wie auch immer wünsche ich viel Spaß mit dem Code und ordentliches Rechnungsschreiben!

 

geschlossene Textmarke erzeugen

In Teil 2 habe ich erklärt, wie eine Textmarke in Word eingefügt wird und das anstelle dieser Textmarke dann die laufende Rechnungsnummer ausgegeben wird. Es gibt noch eine zweite Variation der Textmarke: Die geschlossene Textmarke. Den Inhalt/Text einer "offenen Textmarke können Sie nicht formatieren. Eventuelle Formatierungen müssen Sie in Word vornehmen und gilt dann für die gesamte Eingabe. Mit einer geschlossenen Textmarke begrenzen Sie den Eingabebereich und können auch aus der Programmierung heraus Formatierungen vornehmen. In diesem Beispiel geht es dabei nur um Fettschrift. Der Name/Firma muss fett formatiert werden und die Anschrift in Normalschrift ausgegeben werden.

Im Adressfeld schreibe ich zwei Wörter untereinander:

  • Auftraggeber
  • Anschrift

Danach markiere ich zunächst das erste Wort - Auftraggeber - und gehe, wie bereits beschrieben, über das Word-Menüband "Einfügen" in der Gruppe "Links" auf das Icon "Textmarke" und trage dort zuerst Auftraggeber ein und wiederhole dieses anschließend mit der Anschrift. Vergessen Sie nicht das Wort "Anschrift" zu markieren, bevor Sie eine Textmarke setzen. Die Textmarken stehen nun in einer eckigen Klammer:

  • [Auftraggeber]
  • [Anschrift]

Das bedeutet, dass die Textmarken nur innerhalb dieser Klammern gültig sind. Somit kann gezielt formatiert werden, was bei einer offenen Textmarke nicht geht.

 

Option Explicit

Public Function funcGoOutlook(strSuche As String)

' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Öffnen der Haupt-Kontakte und Suchen der Adresse in Outlook
' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim olAnw As Outlook.Application
Dim NaRa As Outlook.NameSpace
Dim KonVerz As Outlook.Folder
Dim KontaktItem As Outlook.ContactItem
Dim anschriftAuftraggeber As Range

On Error Resume Next

Set olAnw = CreateObject("Outlook.Application")
Set NaRa = olAnw.GetNamespace("MAPI")
Set KonVerz = NaRa.GetDefaultFolder(olFolderContacts)

For Each KontaktItem In KonVerz.Items
If InStr(1, LCase(KontaktItem), LCase(strSuche)) Then
Set anschriftAuftraggeber = ActiveDocument.Bookmarks("Auftraggeber").Range
ActiveDocument.Bookmarks("Auftraggeber").Range.Font.Bold = True
If KontaktItem.CompanyName = "" Then
anschriftAuftraggeber.Text = KontaktItem.FirstName & " " & KontaktItem.LastName
Else
anschriftAuftraggeber.Text = KontaktItem.CompanyName
End If
ActiveDocument.Bookmarks("AuftraggeberAnschrift").Range.Font.Bold = False
Set anschriftAuftraggeber = ActiveDocument.Bookmarks("AuftraggeberAnschrift").Range
anschriftAuftraggeber.Text = KontaktItem.BusinessAddressStreet & vbNewLine & _
KontaktItem.BusinessAddressPostalCode & " " & _
KontaktItem.BusinessAddressCity
Set anschriftAuftraggeber = ActiveDocument.Bookmarks("Anrede").Range
If KontaktItem.Title = "" Then
anschriftAuftraggeber.Text = " Damen und Herren"
ElseIf KontaktItem.Title = "Herr" Then
anschriftAuftraggeber.Text = "r Herr " & KontaktItem.LastName
ElseIf KontaktItem.Title = "Frau" Then
anschriftAuftraggeber.Text = " Frau " & KontaktItem.LastName
Else
anschriftAuftraggeber.Text = "r " & KontaktItem.Title & " " & KontaktItem.LastName
End If
End If
Next
End Function

Neues Modul in VBA für OutlookDer Code nun hat es ein wenig insich und ist leider nicht ganz so einfach nachzuvollziehen. Eingeben müssen Sie ihn in ein Modul. Legen Sie am besten ein neues Modul an. Genau so wie ich es in Teil 2 zur "laufenden Rechnungsnummer" beschrieben habe.

Set olAnw = CreateObject("Outlook.Application")
Set NaRa = olAnw.GetNamespace("MAPI")
Set KonVerz = NaRa.GetDefaultFolder(olFolderContacts)

Das Präfix "ol" steht für "Outlook". Ich arbeite mit diesen Präfixen um Variablen später sauber zuordnen zu können.

Zunächst weise ich dem Objekt olAnw das Objekt "Outlook" zu. Ich erzeuge damit eine neue Instanz, ein neues Outlook, mit dem ich nun auch konkret arbeiten kann.

NaRa speichert den Namensraum. In Outlook gibt es nur den Namensraum "MAPI". Über diesen Namensraum kann ich direkt auf den Ordner mit den Kontakten zugreifen (olFolderContacts), den ich in KonVerz speichere. In KonVerz stehen also alle Kontakte drinnen. Mit der For Each Schleife durchsuche ich diese Kontakte und kann den einzelnen Kontakt in jedem Schritt der Schleife in der Variablen KontaktItem abfragen.

Ganz am Anfang haben wir unserer Funktion einen Parameter übergeben: strSuche. In dieser Variablen wird das Suchwort stehen, dass wir eingeben. Also unser Kunde. Nun brauche ich nur noch zu überprüfen, ob der gesuchte Kunde in unserem einzelnen Kontakt steht.Und genau das mache ich mit dieser Zeile:

If InStr(1, LCase(KontaktItem), LCase(strSuche)) Then

LCase wandelt alle Buchstaben in kleine Buchstaben um. Damit kann ich problemlos überprüfen, ob die gesuchte Zeichenkette Bestandteil eines längeren Wortes ist. Wenn ich Beispielsweise nach der Firma "Steinabbau GmbH und Co KG" suche, reicht es völlig aus "Abbau" zu übergeben. Wenn ich im Beispiel das Suchwort"Abbau" übergebe, würde der Kunde "Steinabbau" nicht gefunden, weil dort das Wort "Abbau" mit einem kleinen "a" geschrieben wird. Damit das nicht passiert, wandel ich vor dem Suchen alle Buchstaben in Kleinbuchstaben um. Damit wird sowohl die Firma "Steinabbau" als auch die Firma "Stein-ABBAU" gefunden.

Mit InStr durchsuche ich das gesamte KontaktItem und weise danach die einzelnen Bestandteile meines Kontaktes den einzelnen Zeilen zu. Die Adresse übergebe ich an die Textmarke "Auftraggeber".

Mit ActiveDocument.Bookmarks("Auftraggeber").Range.Font.Bold = True lege ich fest, dass der Auftraggeber, der Kundenname, in Fettschrift ausgegeben wird.

Set anschriftAuftraggeber = ActiveDocument.Bookmarks("Auftraggeber").Range
ActiveDocument.Bookmarks("Auftraggeber").Range.Font.Bold = True
If KontaktItem.CompanyName = "" Then
  anschriftAuftraggeber.Text = KontaktItem.FirstName & " " & KontaktItem.LastName
Else
  anschriftAuftraggeber.Text = KontaktItem.CompanyName
End If

Neben der Frage, ob Einzelperson oder Firma, muss ich auch den Inhalt der geschlossenen Textmarke ersetzen. Also das Wort "Auftraggeber" muss weg und anstelle dessen der Kundenname. Damit das sauber funktioniert, weise ich meine Textmarke (Bookmarks) der Objektvariablen anschriftAuftraggeber zu und kann danach den Text der Textmarke ansprechen - also das Wort "Auftraggeber" mit meinem Kundennamen ersetzen. Was ich denn auch im IF-Block tue. Wenn kein Firmenname (CompanyName) vorhanden ist, muss es eine Einzelperson sein, andernfalls eine Firma.
Erst durch das Zuweisen an eine Objektvariable, kann ich einzelne Methoden und Eigenschaften meiner Textmarke ansprechen, was ich andernfalls nicht könnte.

Der ganze Rest ist nun eigentlich das gleiche, wie zuvor, lediglich mit anderen Feldnamen. Ich übergebe die Anschrift, die Sie in Outlook bei einem Kontakt im unteren "Geschäftlich..."-Feld finden:

Details der Geschäftsfelder in Outlook

Die anderen Felder in Outlook können Sie natürlich auch direkt ansprechen. Allerdings muss ich Sie in diesem Fall an eine Suchmaschine Ihrer Wahl verweisen, wo Sie die einzelnen Benamsungen finden werden.

Weiter unten frage ich noch den Titel ab. Also "Herr", "Frau", "Doktor", "Professor" oder ... und trage auch das automatisiert in meiner Rechnung ein und ergänze das dann auch mit dem Nachnamen des Kunden.

outAdresse

 

 

Kunde = InputBox("Kunde auswählen" & vbNewLine & "1 = xxxxx" & vbNewLine & "2 = yyyyyy" & vbNewLine & "ODER Direkteingabe", "Kunde")
If Kunde <> "" Then
Select Case Kunde
Case 1
modOutlook.funcGoOutlook ("xxxxx")
ufAlfatraining.Show
Case 2
modOutlook.funcGoOutlook ("yyyyy")
ufMedienreich.Show
Case Else
modOutlook.funcGoOutlook (Kunde)
ufAndere.Show
End Select
End If

Wenn alles fertig ist, dann macht es Sinn die ganzen Objekte zu schließen und den zur Verfügung gestellten Speicher wieder freizugeben. Wenn Outlook neu gestartet wurde für die Suche nach dem Kunden, wird die Anwendung komplett geschlossen.

ActiveDocument.Bookmarks("Datum").Range.InsertBefore Date

Dieser Block muss in die bereits vorhandene Private Sub Document_New() eingefügt werden, bzw. der bisherige Block, der die Anschrift in die Rechnung einträgt" hiermit ersetzt werden. Damit rufen Sie die oben angelegte Funktion auf. Dazu wird zunächst eine Inputbox aufgerufen, wo Sie nun entweder zwischen regelmäßigen Auftraggebern auswählen können oder einen Kundennamen in das Textfeld eintragen. Danach wird entweder die Direktauswahl mit Übergabe des Kundennamen aufgerufen oder die Funktion mit dem Kundennamen, den Sie angegeben haben.


webdesign von time4mambo

www.time4joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters. The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.