VBA – Zeilenumbruch in String einbauen

Manchmal schreibt man einen Header für eine Tabelle, wo die Spalten möglichst schmal sein müssen. Dafür ist es von Vorteil, wenn in dem Header Wörter untereinander stehen. Das lässt sich ganz einfach umsetzen:

dim ueberschrift as String
ueberschrift = "PAL " & vbCrLf & " Anzahl"

Zeilenumbruch in Excel über Formel einbauen

Einen Zeilenumbruch innerhalb einer Excelformel lässt sich einfach einrichten

ZEICHEN(10)

VBA – Ein Dictionary aus einem Range kriegen – HashMap-Ersatz

In meinen Tabellen muss ich regelmäßig “Einstellungen” und valide Werte auslesen.
Anfänglich geschah das mit Einlesen der Werte manuell in ein Array – besser geht es jedoch indem ich mit “Dictionarys” arbeite.

' Für 2 Dimensionen wird aus angegebenen Startpunkt für die Anzahl der Zeilen ein Range festgelegt
Public Function getDictionaryFromRange(Worksheet As String, rangeValue As String, numberOfLines As Integer) As Scripting.Dictionary
    Dim dict As Scripting.Dictionary
    Set dict = New Scripting.Dictionary
    Dim settingsArray As Variant
    Dim i As Integer
    settingsArray = ThisWorkbook.Sheets(Worksheet).Range(rangeValue).value
    
    For i = 1 To numberOfLines
    Dim key As String
    Dim value As Variant
    
    key = settingsArray(i, 1)
    value = settingsArray(i, 2)
    
    If (isEmpty(key) = False And isEmpty(value) = False) Then
        dict.Add key, value
    End If
    
    Set getDictionaryFromRange = dict
    
    Next
End Function

Für das Funktionieren der Dictionarys ist bei den Verweisen die Microsoft Scripting Runtime erforderlich:

Erforderlicher Verweis zum Verwenden von Dictionarys

Im nachfolgenden Link findet ihr eine gute Anleitung zum Thema Dictionary:

https://excelmacromastery.com/vba-dictionary/

VBA – Excel – Automatische Formelberechnung ein- und ausschalten

Bei komplexen Excel-Tabellen ist es oft nachteilig, wenn während des Schreibens von Daten in das Tabellenblatt die Datenberechnung aktiv ist. S-Verweise und andere Regeln werden mit jedem neuen Datensatz ausgeführt und verlangsamen den Generierungsprozess.

Excel bietet dafür an, die Formelberechnung einfach manuell zu deaktivieren:

Formelberechnung Ein- und Ausschalten

Um die Berechnung vor der automatischen Tabellenbefüllung mit VBA Ein- und Auszuschalten, gibt es ein einfaches Kommando in VBA:

' Einschalten der Formelberechnung

 Application.Calculation = xlCalculationAutomatic 

' Ausschalten der Formelberechnung

 Application.Calculation = xlCalculationManual 

VBA – Neue Email öffnen (nicht senden)

Um eine neue E-Mail zu erstellen aus Excel heraus, kann ein einfache OLE-Objekt erzeugt und angezeigt werden. Vielen Dank wie so oft an Herberts VBA Forum (Quelle)

Sub Mail(ByVal d As String)
    Dim olApp As Object
    Set olApp = CreateObject("Outlook.Application")
    With olApp.CreateItem(0)
        'Empfanger
        .Recipients.Add "empfaenger@domain.de"
        'Betreff
        .Subject = "Betreff der E-Mail"
        'Nachricht
        .Body = "Inhalt der E-Mail"
        'Lesebestätigung aus
        .ReadReceiptRequested = False
        'Anhang
        .Attachments.Add d
        .send

    End With
    Set olApp = Nothing
End Sub

Microsoft Office Makros per Gruppenrichtlinie (GPO) abstellen zum Schutz vor Ransomware wie Locky und Cryptolocker

Das Stichwort “Ransomware” ist derzeit in aller Munde und auch an mir geht die Aufgabe nicht vorbei, das Netzwerk meines Arbeitsgebers abzusichern. Aus diesem Grund heute aus aktuellem Anlass eine Anleitung, wie man mittels Gruppenrichtlinien im gesamten Unternehmen wirksam verhindert, dass Ransomware auf den Rechner mittels Makroschädling den PC infiziert.

Makros sind nur ein möglicher Infektionsweg von vielen. Täglich werden neue Wege aufgezeigt.

Aus diesem Grund noch mal der Hinweis, dass nur Backups,
 welche nicht permanent am PC angeschlossen sind, 
vor Ransomware schützen können.

Wie vereinheitlicht man die Office-Makro-Sicherheitseinstellungen seiner Anwender mittels zentraler Anpassung der via Gruppenrichtlinie?

  1. Herunterladen und Bereitstellen der Gruppenrichtlinie

    1. Herunterladen der Administrativen Vorlagen für Microsoft Office (In der Regel heutzutage die 64-Bit Version)
      1. Office 2007
      2. Office 2010
      3. Office 2013
      4. Office 2016
    2. Nach dem Download führen Sie die heruntergeladenen AdminTemplates_32/64.exe -Dateien aus. Sie werden aufgefordert, ein Verzeichnis zu nennen, wohin Sie die Vorlagendateien entpacken möchten. entpacken Sie die Dateien an einen Ort, an den Sie von Ihrem Domänencontroller aus hinkommen
    3. Verbinden Sie sich mit Ihrem Domänencontroller und kopieren Sie die Dateien im Verzeichnis admx in das Verzeichnis
      %systemroot%\PolicyDefinitions\
      Sie brauchen nur die Unterverzeichnisse für de und en, die anderen Sprachen müssen Sie nicht mit kopieren.
      08-03-_2016_09-11-17
  2. Konfigurieren der Gruppenrichtlinie

Erstellen Sie in der Gruppenrichtlinienverwaltung  eine neue Gruppenrichtlinie für die Office-Sicherheitseinstellungen. Die zugehörigen Makroeinstellungen finden Sie an der folgenden Stelle:

Benutzerkonfiguration\Administrative Vorlagen\[Office-Programm [Version]]

Hier gehen Sie je nach Version wie folgt vor:

  1. Office 2013
    Hier können Sie gegebenenfalls gleich die komplette VB-Skript-Ausführung deaktivieren:Benutzerkonfiguration \ Administrative Vorlagen \ Microsoft Office 2013 \ Sicherheitseinstellungen \  VBA für office-Anwendungen deaktivieren
    08-03-_2016_08-49-17Diese Richtlinie schalten Sie auf Aktiviert.
  2. Beispiel : Word 2013
    Benutzerkonfiguration \ Administrative Vorlagen \Microsoft Word 2013 \ Word-Optionen \ Sicherheit \ Trust-Center \ Einstellungen für VBA-Makrobenachrichtigungen
    08-03-_2016_08-56-07Hier wählen Sie “Alle Makros ohne Benachrichtigung deaktivieren”.Die Einstellungen für die anderen Office-Programme und Word-Versionen befinden sich an den folgenden Stellen:

ProgrammGPO-PfadEinstellung
Word 2013Microsoft Word 2013\Word-Optionen\Sicherheit\Trust-CenterEinstellungen für VBA Makrobenachrichtigungen:
Alle Makros ohne Benachrichtigung deaktivieren
Word 2010Microsoft Word 2010\Word-Optionen-Sicherheit\SicherheitscenterEinstellungen für VBA Makrobenachrichtigungen:
Alle Makros ohne Benachrichtigung deaktivieren
Word 2007Microsoft Office Word 2007\Word-Optionen\Sicherheit\VertrauensstellungscenterEinstellungen für VBA Makrobenachrichtigungen:
Keine Warnungen für alle Makros, aber alle Makros deaktivieren
Excel 2013Microsoft Excel 2013\Excel-Optionen\Sicherheit\Trust-CenterEinstellungen für VBA Makrobenachrichtigungen:
Alle Makros ohne Benachrichtigung deaktivieren
Excel 2010Microsoft Excel 2010\Excel-Optionen\Sicherheit\SicherheitscenterEinstellungen für VBA Makrobenachrichtigungen:
Alle Makros ohne Benachrichtigung deaktivieren
Excel 2007Microsoft Office Excel 2007\Excel-Optionen\Sicherheit\VertrauensstellungscenterEinstellungen für VBA Makrobenachrichtigungen:
Keine Warnungen für alle Makros, aber alle Makros deaktivieren

Die GPO-Pfade für die Makro-Einstellungen der in der Tabelle genannten Programme lassen sich ebenfalls ableiten auf Outlook, Access, Powerpoint und all die anderen Office-Programme. Die Pfade unterscheiden sich bei den Versionen zumeist in der unterschiedlichen Übersetzung des “Trust-Centers”.

Vergessen Sie anschließend nicht, die Gruppenrichtlinie mit der richtigen Organisationseinheit in Ihrem Netzwerk zu verknüpfen, damit diese aktiv wird.