Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per VBA ermitteln, ob Schriftart verfügbar

Forumthread: Per VBA ermitteln, ob Schriftart verfügbar

Per VBA ermitteln, ob Schriftart verfügbar
Günther
Hallo,
Ich würde gerne per VBA ermitteln, ob auf dem jeweiligen System eine bestimmte Schriftart verfügbar ist oder nicht. Also eine Funktion die in etwas so beginnen würde:
Function fctSchriftartVerfügbar(Schriftname as string) as boolean
End Function

Wenn man Zugriff auf den Fonts-Ordner hat, wäre es denkbar auf TTF-Dateien mit diesen (oder ähnlichem) Namen zu prüfen, aber so recht begeistern kann mich der Ansatz nicht.
Ein weiterer Ansatz wäre es, den fraglichen Schriftartname in Großbuchstaben umzuwandeln, einer Testzelle zuzuweisen und dann die erhaltene Schriftart wieder auszulesen. Wenn die Großschreibung geblieben ist, dann existiert die Schriftart (i.A.) nicht. Begeistert mich aber auch nicht so recht.
Ich würde nach einem besseren Ansatz suchen, der irgendwie direkt abfragt, ob diese Schriftart im Windows installiert ist oder nicht.
Herzlichen Dank im voraus für alle Vorschläge und Lösungen.
Grüße
Günther
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Per VBA ermitteln, ob Schriftart verfügbar
16.08.2012 20:50:43
Josef

Hallo Günther,
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub test()
  Const cstrFontName = "Tahoma"
  
  MsgBox FontIsInstalled(cstrFontName)
  
End Sub


Private Function FontIsInstalled(FontName As String) As Boolean
  Dim sFond As New StdFont
  sFond.Name = FontName
  FontIsInstalled = StrComp(FontName, sFond.Name, vbTextCompare) = 0
End Function



« Gruß Sepp »

Anzeige
AW: Per VBA ermitteln, ob Schriftart verfügbar
16.08.2012 21:19:53
Günther
Danke!
... und besonders cool, dass es 1:1 auch in Access funktioniert!
Grüße
Günther
;
Anzeige
Anzeige

Infobox / Tutorial

Schriftart im System per VBA ermitteln


Schritt-für-Schritt-Anleitung

Um zu überprüfen, ob eine Schriftart auf dem System verfügbar ist, kannst Du den folgenden VBA-Code verwenden. Dieser Code enthält eine Funktion, die den Namen der Schriftart als Parameter akzeptiert und zurückgibt, ob die Schriftart installiert ist oder nicht.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" klickst und "Einfügen" > "Modul" auswählst.
  3. Kopiere den folgenden Code in das Modul:
Function FontIsInstalled(FontName As String) As Boolean
    Dim sFont As New StdFont
    sFont.Name = FontName
    FontIsInstalled = StrComp(FontName, sFont.Name, vbTextCompare) = 0
End Function

Sub test()
    Const cstrFontName = "Tahoma"
    MsgBox FontIsInstalled(cstrFontName)
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das test()-Makro aus, um die Verfügbarkeit der Schriftart "Tahoma" zu überprüfen. Du kannst den Schriftartnamen ändern, um andere Schriftarten zu testen.

Häufige Fehler und Lösungen

  • Fehler: "Typ nicht definiert"

    • Lösung: Stelle sicher, dass Du die richtige Referenz für "StdFont" gesetzt hast. Manchmal kann es an fehlenden Verweisen in den VBA-Einstellungen liegen.
  • Fehler: "Schriftart nicht gefunden"

    • Lösung: Überprüfe den genauen Namen der Schriftart. Achte auf Groß- und Kleinschreibung, da dies in der Funktion berücksichtigt wird.

Alternative Methoden

Eine andere Möglichkeit, um Schriftarten zu ermitteln, besteht darin, direkt im Windows Fonts-Ordner nach TTF-Dateien zu suchen. Dies erfordert jedoch Zugriff auf das Dateisystem und kann komplexer sein. Hier ist ein einfacher Ansatz, um alle installierten Schriftarten aufzulisten:

Sub ListInstalledFonts()
    Dim Font As Variant
    For Each Font In Application.Fonts
        Debug.Print Font.Name
    Next Font
End Sub

Dieser Code gibt alle installierten Schriftarten im Direktfenster aus, was eine praktische Methode ist, um Schriftarten zu suchen.


Praktische Beispiele

  1. Schriftart testen: Um zu testen, ob "Arial" installiert ist, kannst Du den Sub test() anpassen:
Sub test()
    Const cstrFontName = "Arial"
    MsgBox FontIsInstalled(cstrFontName)
End Sub
  1. Liste der installierten Schriftarten: Nutze die ListInstalledFonts()-Subroutine, um eine Übersicht der verfügbaren Schriftarten zu erhalten.

Tipps für Profis

  • Nutze die Funktion in Formeln: Du kannst die FontIsInstalled-Funktion auch in benutzerdefinierten Excel-Formeln verwenden.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um die Robustheit Deines Codes zu erhöhen, falls eine Schriftart nicht gefunden wird.
  • Performance-Optimierung: Wenn Du viele Schriftarten überprüfen musst, überlege, die Ergebnisse zwischenzuspeichern, um wiederholte Abfragen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die Schriftart auslesen, die in einer Zelle verwendet wird? Du kannst die Schriftart einer Zelle mit Range("A1").Font.Name abfragen, um den Namen der Schriftart zu erhalten.

2. Funktioniert dieser VBA-Code auch in Access? Ja, der Code kann auch in Microsoft Access verwendet werden, um Schriftarten zu ermitteln.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige