Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Freitag, 14. Oktober 2005 00:02
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 14.10.2005

Ausgabe vom 14. Oktober 2005

 In dieser Ausgabe

Access-News & Downloads
Access-Tipp der Woche
Access-Helpline
Newsletter-Tipp
 Access-News & Downloads

Spotlight: Adressen aus Access und Outlook ganz einfach nach Word übernehmen

Reduzieren Sie das Schreiben eines neuen Briefes auf wenige Mausklicks: In Zukunft geben Sie keine Adresse mehr doppelt ein, denn Sie können auf Ihre vorhandenen Adressen in jeder beliebigen Access-Datenbank, in den Outlook-Kontakten oder auf dem Exchange Server zugreifen. Den ganzen Vorgang steuern Sie bequem aus Word 2003, 2002/XP oder 97.

  • Per Mausklick in die Symbolleiste des Brief- und Fax-Managers rufen Sie direkt aus Word die Liste der verfügbaren Adressen in Ihrer Access-Datenbank oder in Outlook auf.
  • Sie markieren den gewünschten Empfänger.
  • Der Assistent öffnet ein neues Dokument auf Grundlage einer Ihrer vorbereiteten Brief- oder Fax-Vorlage und fügt die Adresse samt fertiger Anrede genau an den richtigen Stellen ein.
  • Auf Wunsch wird das Dokument automatisch nach dem Brief-Empfänger sowie dem aktuellen Datum benannt und in einem der vordefinierten Verzeichnisse gespeichert.
Der tausendfach bewährte SmartTools Brief- und Fax-Manager 2003 ist ab sofort verfügbar und kann jetzt zum Aktionspreis mit 25% Rabatt bestellt werden:

SmartTools Brief- und Fax-Manager 2003

Download-Tipp: Über 1.000 neue Icons für Ihre Symbolleisten in Access

Sie suchen nach aussagekräftigen Icons für Ihre selbst definierten Symbolleisten? Die standardmäßig von Access angebotene Auswahl ist sehr bescheiden und so müssen Sie schon selber künstlerisch tätig werden, um zum Ziel zu kommen. "SmartTools Iconhelp" hilft weiter: In Access finden Sie über 1.000 verschiedenen Schaltflächen-Symbole, die Sie mit unserem kostenlosen Tool übersichtlich anzeigen und durchblättern können.

Möchten Sie eines der Icons nutzen, klicken Sie es einfach an, rufen das Kontextmenü SYMBOL IN ZWISCHENABLAGE KOPIEREN auf und weisen es dann Ihrer eigenen Schaltfläche zu. Der besondere Bonus für VBA-Entwickler: "SmartTools Iconhelp"- zeigt auch die "FaceID" zu jedem Symbol an, die Sie für die programmatische Erstellung von Symbolleisten per Makro benötigen:

 SmartTools Iconhelp für Access kostenlos herunterlasen

News: Access 12 mit mehr Komfort für Anwender

Viele Möglichkeiten von Access erschließen sich erst durch die Entwicklung individueller Lösungen per VBA, so dass zahlreiche Anwender für einfache Datenbank-Anwendungen lieber auf andere Tools wie Excel zurückgreifen. Mit Access 12 soll sich das grundlegend ändern. Entwickler werden zum einen in der Lage sein, Anwendern Datenbankvorlagen zur Verfügung zu stellen, die sich ohne jegliche Programmierkenntnisse nutzen und anpassen lassen. Außerdem wird es möglich sein, eine Datenbank wie in Excel zunächst in einer ganz normalen Tabelle zu erstellen, ohne sich vorher mit Feld-Definitionen oder Datentypen auseinandersetzen zu müssen. Komfortable und komplett überarbeitete Designer sollen dann dafür sorgen, dass sich nachträglich Formulare und Berichte ergänzen lassen.

Der Versuch, Access noch bedienerfreundlicher zu machen, zeigt sich auch in den neuen Bildschirmfotos, die inzwischen von Access 12 (und anderen Office 12-Anwendungen) verfügbar sind:

http://activewin.com/articles/2005/21.shtml

Techinfo: VBA in VSTO-/VB.NET-Lösungen umsetzen

Früher oder später steht jeder Entwickler vor der Aufgabe, vorhandene VBA-Lösungen in VB.NET mit den Visual Studio Tools für Office umsetzen zu müssen. Je eher man sich mit dieser Aufgabe auseinandersetzt, desto besser lassen sich Kosten und Aufwand einschätzen. Behilflich dabei ist ein umfangreiches White Paper der MSDN-Spezialisten:

VBA in VSTO-/VB.NET-Lösungen umsetzen

Die Autoren stellen zunächst die Visual Studio Tools für Office vor und machen Sie mit den dort vorhandenen Werkzeugen vertraut. Anschließend erläutern sie, warum ein Umstieg auf VSTO-/VB.NET-Lösungen ratsam ist. Weitere Abschnitte geben konkrete Tipps und Hinweise zur Umsetzung anhand praktischer Beispiele.

 Access-Tipp der Woche

Zwischenablage per VBA nutzen
Versionen: Access 2003, 2002/XP und 2000

Selbst in der aktuellen Version 2003 bietet Access keine Unterstützung für den Zugriff per VBA auf die Zwischenablage. Dabei wären solchen Funktionen besonders hilfreich, um beispielsweise eine Adresse aus einem Formular in der Zwischenablage abzulegen, damit sie zum Beispiel in Word oder Excel in einem Brief oder einer Rechnung wieder eingefügt werden kann. Aber auch der umgekehrte Weg, nämlich die Übernahme von Daten aus der Zwischenablage, um sie beispielsweise in ein Memofeld einzufügen, kann viel Arbeit sparen.

Eine solche Funktionalität lässt sich natürlich mit API-Funktionen "nachrüsten", es geht in diesem Falle aber auch einfacher: Mit den Office-Anwendungen wird eine spezielle Bibliothek "MS Forms" installiert. Sie enthält Steuerelemente wie Textfelder, Bezeichnungsfelder, Register, Rollbalken, Kontrollkästchen, Options-Schaltflächen usw. für den Einsatz in UserFormen. Damit Entwickler auch in UserFormen die Zwischenablage nutzen können, hat Microsoft in diese Bibliothek ein spezielles Objekt "DataObject" integriert, das Sie auch in Access nutzen und so flexibel auf die Zwischenablage zugreifen können:

  1. Wechseln Sie mit Alt+F11 in die VBA-Entwicklungsumgebung.
  2. Wählen Sie das Menü Extras-Verweise an und setzen Sie eine Referenz auf "Microsoft Forms 2.0 Object Library". Sollte die Bibliothek nicht in der Liste verfügbarer Referenzen aufgelistet werden, klicken Sie auf die Schaltfläche Durchsuchen, lokalisieren die Datei FM20.DLL im Verzeichnis "Windows\System32" bzw. "WinNT\System32" und wählen sie per Doppelklick aus.
  3. Übernehmen Sie die Änderungen mit einem Klick auf Ok.
Um das "DataObject" in VBA nutzen zu können, deklarieren Sie in der gewünschten Routine eine Objektvariable:

Dim cb As New DataObject

Über "cb" (Abkürzung für Clipboard") können Sie dann verschiedene Methoden aufrufen, um Text in der Zwischenablage abzulegen oder aus der Zwischenablage abzurufen. Nehmen wir beispielsweise an, dass Sie eine Adressverwaltung um eine Schaltfläche Adresse in Zwischenablage kopieren erweitern möchten:

  1. Öffnen Sie das Formular (beispielsweise "Kunden" in der Nordwind.mdb) im Entwurfsmodus.
  2. Legen Sie eine Schaltfläche "btnCopy" mit der Beschriftung Adresse in Zwischenablage kopieren an.
  3. Geben Sie in der Ereignisprozedur "Beim Klicken" die folgenden Anweisungen ein:
Private Sub btnCopy_Click()
  Dim cb As New DataObject
  Dim strAdr As String

  strAdr = Me.Firma & vbCrLf & _
           Me.Kontaktperson & vbCrLf & _
           Me.Straße & vbCrLf & vbCrLf & _
           Me.PLZ & " " & Me.Ort & vbCrLf
  With cb
    .SetText strAdr
    .PutInClipboard
  End With

End Sub

  • Speichern Sie die Änderungen und testen Sie die Lösung.
Die obigen Anweisungen setzen zunächst in der Variablen "strAdr" die Adresse aus den Feldern des aktuell im Formular angezeigten Datensatzes zusammen. Der Aufruf der Methode "SetText strAdr" schreibt das Ergebnis in das DataObject, von wo aus es per "PutInClipboard" in die Zwischenablage übertragen wird.

Das zweite Beispiel überträgt die in der Zwischenablage vorhandenen Daten in ein Memofeld im Formular:

  1. Öffnen Sie das Formular mit dem Memofeld, in das etwas aus der Zwischenablage eingefügt werden soll, im Entwurfsmodus.
  2. Legen Sie eine Schaltfläche "btnPaste" mit der Beschriftung Zwischenablage in Memofeld einfügen an.
  3. Geben Sie in der Ereignisprozedur "Beim Klicken" die folgenden Anweisungen ein:
Private Sub btnPaste_Click()
  Dim cb As New DataObject
  Dim strData As String

  With cb
    .GetFromClipboard
    strData = .GetText
    Me.Memofeld = strData
  End With

End Sub

"Memofeld" ersetzen Sie dabei durch den Namen des Memofeldes in Ihrem Formular.

  • Speichern Sie die Änderungen und testen Sie die Lösung.
Die Anweisungen übertragen zunächst den Inhalt der Zwischenablage per "GetFromClipboard" in das DataObject. Von dort werden sie per "GetText" in der Variablen "strData" abgelegt und deren Inhalt dann per Zuweisung "Me.Memofeld = strData" in das Memofeld geschrieben.

ANZEIGE 
Access-Datenbanken optimieren, analysieren und dokumentieren

Der Total Access Analyzer ist eine mehrfach ausgezeichnete Access-Erweiterung, die tausende von Anwendern und Entwickler mit ihren Datenbanken einsetzen.

Wenn Sie Datenbanken für andere Anwender erstellen oder sich in komplexen Access-Anwendungen zurechtfinden müssen, leistet der Total Access Analyzer unschätzbare Hilfe. Voll automatisch kann diese in Access integrierte Erweiterung...

...ungenutzte Objekte finden

...grafische Übersichten der Zusammenhänge zwischen allen Datenbank-Objekten erstellen

...versteckte Fehler finden

...nützliche Optimierungstipps geben

...eine zuverlässige Cross-Referenz erstellen (welches Objekt wird an welchen Stellen in der Datenbank verwendet)

...alle oder gezielt einige Objekte Ihrer Datenbanken ausführlich dokumentieren

Weitere Informationen zum Total Access Analyzer finden Sie unter:

Total Access Analyzer für Access 2003

Total Access Analyzer für Access 2002/XP

Total Access Analyzer für Access 2000

Total Access Analyzer für Access 97


 Access-Helpline

Haben Sie Fragen zu Access 2003, 2002/XP, 2000 und 97? Dann wenden Sie sich mit einer genauen Problembeschreibung (bitte keine Datenbanken schicken!) an:

access-helpline@smarttools.de

Unser Redaktionsteam wählt in jeder Ausgabe eine oder mehrere Fragen aus und beantwortet Sie an dieser Stelle im Newsletter.

Formatierte MsgBox reaktivieren
Versionen: Access 2003, 2002/XP und 2000

 FRAGE:  Wir sind gerade dabei, Access 97-Datenbanken auf Access 2003, 2002/XP oder 2000 umzustellen. Unter Access 97 war es möglich, die Ausgabe in einer Meldung durch den Einsatz von @-Zeichen zu formatieren. So stellte die folgende Anweisung den Text dreizeilig dar, wobei die erste Zeile fett und der Rest normal dargestellt wurde:

MsgBox "Dies ist eine formatierte MsgBox()-Meldung" + _
        @Zeile 2@Zeile 3", _
        vbOKOnly + vbInformation, _
        "Test:"

Nach der Umstellung funktioniert das allerdings nicht mehr, der Text wird einfach unformatiert inklusive der @-Zeichen angezeigt. Ist diese Funktionalität einfach verschwunden oder gibt es Möglichkeiten, sie zu reaktivieren?
Z. Griedel

 ANTWORT:  Access verwendet ab der Version 2000 keine eigene "MsgBox"-Funktion mehr. Vielmehr wird für die Anzeige auf Standard-Routinen der VBA-Entwicklungsumgebung zurückgegriffen. Hier lässt sich mit einem kleinen Trick Abhilfe schaffen: Access stellt die Funktion "Eval()" zur Verfügung, über die sich beliebige Ausdrücke ausführen und auswerten lassen. Übergibt man dieser Funktion nun eine "MsgBox"-Anweisung, führt Access ab Version 2000 dafür wieder die ursprüngliche Routine aus, die @-Zeichen berücksichtigt und die Meldung entsprechend formatiert ausgibt. Um diesen Umstand in Ihren Datenbanken für die Anzeige formatierter MsgBox-Meldungen zu nutzen, sind ein paar kleine Anpassungen notwendig:

  • Geben Sie in einem neuen oder einem vorhandenen Modul die folgende Funktion ein:
Function MsgBox2000(Prompt As String, _
          Optional Buttons As VbMsgBoxStyle = vbOKOnly, _
          Optional Title As String = vbNullString, _
          Optional HelpFile As Variant, _
          Optional Context As Variant) _
          As VbMsgBoxResult

  If IsMissing(HelpFile) Or IsMissing(Context) Then
    MsgBox2000 = Eval("MsgBox(""" & Prompt & """, _
                       " & Buttons & _
                       ", """ & Title & """)")
  Else
    MsgBox2000 = Eval("MsgBox(""" & Prompt & """, _
                      " & Buttons & _
                      ", """ & Title & """, _
                      """ & HelpFile & """, _
                      " & Context & ")")
  End If

End Function

Der Aufruf entspricht exakt der Syntax von "MsgBox", so dass Sie in den aus Access 97 konvertierten Datenbanken lediglich "MsgBox" durch "MsgBox2000" ersetzen müssen. Zum Beispiel:

MsgBox2000 "Dies ist eine formatierte MsgBox()" + _
            @Zeile 2@Zeile 3",
            vbOKOnly + vbInformation, "Test:"

Zugriff auf E-Mail-Anhänge per VBA
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich greife per Office Automation auf Outlook zu, um E-Mails in Access zu archivieren. Das klappt soweit wunderbar, ich kann die Betreffzeile, den Absender oder den Nachrichtentext problemlos auslesen. Greife ich jedoch mit folgender Anweisung auf die Anhänge zu, erhalte ich eine Fehlermeldung:

strAttach = objMail.Attachments

T. Tahlmann

 ANTWORT:  Die Eigenschaft "Attachments" ist eine Auflistung, die nicht direkt den Zugriff auf einen Dateinamen ermöglicht. Vielmehr enthält "Attachments" eine Reihe von "Attachment"-Objekten, sofern ein oder mehrere Anhänge vorhanden sind. Sie müssen also zunächst einmal prüfen, ob überhaupt Anhänge vorhanden sind. Dazu nutzen Sie die Eigenschaft "Count" der Auflistung wie folgt:

Dim objMail As MailItem
Dim I As Long, Anz As Long
Dim strFile As String
....

  With objMail
    Anz =.Attachments.Count
    If Anz > 0 Then
      For I = 1 To Anz
        strFile = .Attachments(I).FileName
        MsgBox strFile
      Next I
    End If 'Anz > 0...
  End With 'objMail...
.....

Sind Anhänge vorhanden, können Sie auf die einzelnen, als "Attachment"-Objekt repräsentierten Anhänge per "Attachments(Index)" zugreifen, wobei "Index" ein Wert von "1" bis "Anzahl Anhänge" gemäß Count" ist. Die Eigenschaft "FileName" gibt Auskunft über den Dateinamen, "PathName" über den Pfad (bei lokalen Verweisen) und "DisplayName" liefert einen ggf. vom Dateinamen abweichenden Anzeigenamen für den Anhang.

ANZEIGE 
Professionelle Geschäftsgrafiken in TV-Qualität für Excel und PowerPoint

Endlich professionelle Geschäftsgrafiken in Ihren Excel-Tabellen und PowerPoint-Präsentationen!

  • Amigo 2000 ist eine leistungsfähige Office-Erweiterung, die Ihnen mit minimalem Aufwand die Erstellung verblüffender Diagramme in perfekter Qualität ermöglicht.
  • Per Mausklick wird das komplette Diagramm neu berechnet und erscheint dann in einem 3D-Look, den Sie sonst nur aus Zeitschriften oder den Fernsehnachrichten kennen.
  • Sie benötigen keine spezielle 3D-Grafikkarte, sondern können das Programm auf jedem System nutzen, auf dem auch Excel oder PowerPoint in den Versionen 2003, 2002/XP, 2000 oder 97 im Einsatz sind.
  • Empfohlen von PC Professionell und c't
Ausführliche Informationen und viele Beispiele finden Sie unter:

Amigo 2000


Todo-Liste als Bericht ausgeben
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Mit einer Access-Datenbank verwalten wir Aufgaben, die per Kontrollkästchen im Formular als "Erledigt" gekennzeichnet werden können. Im Bericht soll der Status der Aufgaben aber nicht als Kontrollkästchen, sondern mit einem Häkchen für "Erledigt" oder einem Ausrufezeichen für "Offen" dargestellt werden.
G. Drechsler

 ANTWORT:  Dazu nutzen Sie ein zusätzliches Bezeichnungsfeld, das per VBA abhängig vom Status "Erledigt" eingestellt wird, um das gewünschte Zeichen in der entsprechenden Farbe darzustellen:

  1. Stellen Sie die Eigenschaft "Sichtbar" für das Kontrollkästchen auf "Nein" und verschieben Sie es im Detailbereich an eine Stelle.
  2. Legen Sie an der Stelle des Kontrollkästchens, ein Bezeichnungsfeld "lblStatus" an, für dessen Bezeichnung Sie ein Ausrufezeichen "!" eingeben und dessen Größe mit "12 Punkt" festlegen.
  3. Stellen Sie die Eigenschaft "Beim Formatieren" auf "[Ereignisprozedur]" ein und klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen.
  4. Geben Sie die folgenden Anweisungen ein:
  With Me.lblStatus
    If Me.Erledigt = True Then 'Aufgabe erledigt
      .FontName = "Wingdings"
      .Caption = "ü"
      .ForeColor = QBColor(2)
    Else 'Aufgabe offen
      .FontName = "Arial"
      .Caption = "!"
      .ForeColor = QBColor(12)
    End If
  End With

  • "Erledigt" ersetzen Sie dabei durch den Namen des Ja/Nein-Feldes Ihres Berichtes, das den "Erledigt"-Zustand festhält.
  • Speichern Sie die Änderungen und lassen Sie den Bericht in der Seitenansicht anzeigen.
Für jeden Datensatz wird nun die Ereignisprozedur "Beim Formatieren" aufgerufen. Trifft die Bedingung "Me.Erledigt = True" zu, ist die Aufgabe erledigt und das Bezeichnungsfeld wird so eingestellt, dass es ein grünes Häkchen aus dem Zeichensatz "Wingdings" anzeigt. Andernfalls erscheint rotes Ausrufezeichen aus dem Zeichensatz "Arial".

 Newsletter-Tipp

Office-Tipps kostenlos per E-Mail

Der SmartTools Office Insider ist Ihr monatlicher News-Service für Microsoft Office. Hier finden Sie aktuelle Informationen zu Access, Excel, Word & Co, eine Fülle von Download-Links sowie detaillierte Tipps zu neuen Patches und Updates. So verpassen Sie nichts, was Sie unbedingt zu Microsoft Office wissen müssen.

  • Aktuelle Meldungen über neue Lösungen und Add-Ins für Office 2003, 2002/XP, 2000 und 97
  • Berichte über Updates und Bugfixes.
  • Tipps und effektivere Arbeitstechniken zu Access, Excel, Word & Co.
  • Kostenlose Downloads zu Office 2003, 2002/XP, 2000 und 97
  • Antworten auf Ihre Fragen zu Microsoft Office.
Und das beste am SmartTools Office Insider: Er ist vollkommen kostenlos!

Klicken Sie hier für Ihr kostenloses Abo!

 Abonnementverwaltung

Um SmartTools Access Weekly abzubestellen, senden Sie einfach das Kommando "unsubscribe" an die Adresse

access-weekly-html-request@smarttools.de

Bitte beachten Sie, daß das Kommando im Nachrichtentext stehen muß (nicht im Betreff) und Sie keine Mail im HTML-Format senden dürfen. Weitere Informationen zur Verwaltung der Liste erhalten Sie mit dem Kommando "help" an dieselbe Adresse.

Copyright © 2005 SmartTools Publishing Thomas Tai
Luisenstrasse 52, 49565 Bramsche
Telefon: 05461/91052, Fax: 05461/2609
E-Mail: access-weekly@smarttools.de
Internet: http://www.smarttools.de/