Leider ist ein Fehler aufgetreten, weshalb Word nicht gestartet werden konnte (24).

Fehlermeldung beim Öffnen von Word-Dokumenten

Wenn beim Öffnen eines Dokumentes diese Fehlermeldung kommt, liegt das meistens daran, dass im Explorer die Vorschau aktiviert ist und beim Öffnen das Dokument für den schreibenden Zugriff blockiert.

Hier blockiert die Vorschau das Dokument beim Öffnen

Lösung: Einfach die Vorschau deaktivieren, bevor das Dokument geöffnet wird. Ist zwar nicht schön, aber effektiv!

Deaktivieren der Dokumentenvorschau im Explorer

VBA – Nur Teilbereiche einer Zelle formatieren

In der Excel-Programmierung hatte ich mal wieder neue Anforderungen:

Einen Teilbereich einer Excelzelle formatieren. Das geht ganz einfach Mittels “Characters”. Im Nachfolgenden werden die ersten sieben Zeichen der Zelle unterstrichen:

dim myRange as Range
set myRange  = Range(Cells(3, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False))
myRange.Characters(0, 7).Font.Underline = True

Damit sind die Grenzen der Formatierung einer Zelle mal wieder gut nach “hinten” geschoben worden. Anbei ein Bild des formatieren Wortes einer verbundenen Zelle:

Scripts beim Starten/Herunterfahren oder An- und Abmeldung von Windows ausführen

In Umgebungen ohne Active Directory und domänenbasierten Gruppenrichtlinien kann es auch erforderlich sein, beim Herunterfahren, Hochfahren beziehungsweise An- und Abmelden von Windows verschiedene Aufgaben durchzuführen – sei es die Anbindung von Netzlaufwerken oder die Datensicherung beim Herunterfahren.

Der Einfachste weg in Windows 10 ist es, in den dafür vorgesehenen StartUp-Verzeichnissen die gewünschten Skripte abzulegen und diese mit den lokalen Gruppenrichtlinien zu hinterlegen.
Nachfolgende werden jeweiligen Verzeichnisse für ihren Zweck genannt:

Script beim Starten des Computers ausführen:

C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\Startup

Script beim Herunterfahren des Computers ausführen:

C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\Shutdown

Script beim Anmelden eines Benutzers ausführen

C:\WINDOWS\System32\GroupPolicy\User\Scripts\Logon

Script beim Abmelden eines Benutzers ausführen

C:\WINDOWS\System32\GroupPolicy\User\Scripts\Logoff

Um diese Skripte jetzt noch zu aktivieren, müssen sie in den “Richlinien für Lokaler Computer” hinterlegt werden.

Am einfachsten kommt ihr zu der Konsole mit der folgenden Vorgehensweise:

  • Windowstaste + R (Ausführen) –> Im Ausführen-Fenster “mmc” eingeben

  • Anschließend mit STRG + M oder “Datei –> Snap-In hinzufügen oder entfernen” den Auswahldialog öffnen und “Gruppenrichtlinienobjekt-Editor” hinzufügen
Snap-In "Gruppenrichtlinienobjekt-Editor" auswählen und hinzufügen
Snap-In “Gruppenrichtlinienobjekt-Editor” auswählen

Anschließend noch auf Fertigstellen gehen:

Gruppenrichtlinienobjekt auswählen --> Lokaler Computer --> Fertigstellen
Gruppenrichtlinienobjekt auswählen –> Lokaler Computer –> Fertigstellen

Anschließend auf OK gehen und damit das Auswahlfenster schließen.

  • Anschließend kann in den Richtlinien für Ihren Computer das jeweilige Skript hinterlegt werden:
    Start/Herunterfahren
    Computerkonfiguration –> Windows-Einstellungen –> Skripts (Start/Herunterfahren)
    An- / Abmelden
    Benutzerkonfiguration –> Windows-Einstellungen –> Skripts
Hier finden Sie die Einrichtungsdialoge für die einzubindenden Skripts

Hinzufügen des Skripts

Anschließend sollte die Einrichtung funktionieren und die Skripts zum gewünschten Zeitpunkt ausgeführt werden.

VBA Werte in Zellen formatieren

Ein benutzerdefiniertes Zellenformat lässt sich mittels VBA einfach einrichten:

dim zahl as double
zahl = 4,356

' Darstellung z.B. als Gewicht in Tonnen
cells(1,1) = Format(zahl, "0.0 t")

Wenn gezielt Zahlen formatiert werden sollen, verwende ich NumberFormat:

    With Range(Cells(3, lkw.GW_SOLL_SPALTE), Cells(x, lkw.GW_IST_SPALTE))
        .Font.Size = 10
        .Font.Bold = True
        .HorizontalAlignment = xlRight
        .NumberFormat = "0.00 ""t"""
    End With

VBA – Objekte in Funktion zurückgeben

Funktionen geben in VBA immer einen Wert zurück. Soll dieser Wert ein Objekt sein, so muss man wissen, wie man ein Objekt in einer Funktion zurückgibt.

Die Vorgehensweise ist identisch mit der Zuweisung einer Objekt-Variable. Zum Vergleich zuerst das Vorgehen bei normalen Datentypen:

Function addiere(a as Integer, b as Integer) as Integer
     addiere = a + b
End Function

Bei Objekten muss vor der Angabe des Funktionsname einfach ein “SET” gesetzt werden:

Function getAuto() as Object
      dim myAuto as Auto
      set myAuto = new Auto
      myAuto.farbe = "blau"
      myAuto.kennzeichen = "L-RB 2245"
' Zurückgeben des Wertes
      SET getAuto = myAuti
End Function

Andernfalls bringt er die nachfolgende Fehlermeldung:

Fehler: Objektvariable oder With-Blockvariable nicht festgelegt
Fehler: Objektvariable oder With-Blockvariable nicht festgelegt