Office Logo VBA Klicken für Hauptseite von "The SOSCQ Page"   Klicken für Hauptseite von "The SOSCQ Page - VBA/VB-Codebeispiele" Klicken für Startseite von 'xlam - Excel and more!'

Prüfen, ob eine Arbeitsmappe externe Verknüpfungen enthält

.Beschreibung
Diese Codebeispiele finden heraus, ob sich in einer Arbeitsmappe externe Verknüpfungen befinden. Dazu wird die LinkSources-Methode aufgerufen und überprüft, ob ein Datenfeld zurückgegeben wurde. Wenn nichts zurückgegeben wurde (Überprüfung mittels IsEmpty), gibt es keine externen Verknüpfungen.

» Codebeispiel #1: Dieses Beispiel prüft die Existenz von externen Verknüpfungen des Typs 'Excel-Verknüpfung'.

» Codebeispiel #2: Dieses Beispiel prüft die Existenz von externen Verknüpfungen des Typs 'OLE-/DDE-Verknüpfung'.

.VBA-Code #1
Public Sub CheckIfExternalLinksExist1()
  Dim avarLinks As Variant
  avarLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
  If Not IsEmpty(avarLinks) Then
    MsgBox "Es sind Excel-Verknüpfungen vorhanden."

  Else
    MsgBox "Es sind keine Excel-Verknüpfungen vorhanden."
  End If
End Sub

.VBA-Code #2
Public Sub CheckIfExternalLinksExist2()
  Dim avarLinks As Variant
  avarLinks = ActiveWorkbook.LinkSources(xlOLELinks)
  If Not IsEmpty(avarLinks) Then
    MsgBox "Es sind OLE-/DDE-Verknüpfungen vorhanden."

  Else
    MsgBox "Es sind keine OLE-/DDE-Verknüpfungen vorhanden."
  End If
End Sub

Verwandte Codebeispiele

Anzahl externe Verknüpfungen in einer Arbeitsmappe abfragen

Externe Verknüpfungen in einer Arbeitsmappe auflisten

Anwendungsnamen von DDE-Verknüpfungen in einer Arbeitsmappe auflisten

Externe Verknüpfungen in einer Arbeitsmappe ändern

Externe Verknüpfungen in einer Arbeitsmappe löschen

Prüfen, ob die externen Verknüpfungen in einer Arbeitsmappe gültig sind

Dateien von externen Verknüpfungen in einer Arbeitsmappe öffnen

To Top


Externe Verknüpfungen in einer Arbeitsmappe auflisten

.Beschreibung
Hier wird gezeigt, wie man eine Liste der externen Verknüpfungen in einer Arbeitsmappe erstellen kann. Zugriff auf die externen Verknüpfungen erhält man via LinkSources-Methode, die ein eindimensionales Datenfeld mit den benötigten Informationen liefert. Es gibt zwei verschiedene Typen von externen Verknüpfungen: Excel-Verknüpfungen (siehe Codebeispiel #1) und OLE-/DDE-Verknüpfungen (siehe Codebeispiel #2).

» Codebeispiel #1: Dieses Codebeispiel listet alle externen Verknüpfungen des Typs 'Excel-Verknüpfung' auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe auf.

» Codebeispiel #2: Hier werden die externen Verknüpfungen des Typs 'OLE-/DDE-Verknüpfung' auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe aufgelistet. Bei OLE-/DDE-Verknüpfungen besteht die Verknüpfungsinformation immer aus den drei Bestandteilen "Anwendung", "Datei/Thema" und "Element". Im VBA-Code wird eine Verknüpfungsinformation entsprechend aufgeteilt und in separaten Spalten ausgegeben.

.VBA-Code #1
Public Sub ListExternalLinks1()
  Dim avarLinks As Variant
  Dim intCounter As Integer
  Dim wksSheet As Worksheet
  avarLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
  If Not IsEmpty(avarLinks) Then
    Set wksSheet = ActiveWorkbook.Worksheets.Add
    With wksSheet
      .Range("A1").Value = "Externe Verknüpfungen (Excel-Verknüpfungen)"
      .Range("A1").Font.Bold = True
      .Range("A3:B3").Value = Array("Nr.", "Quelle")
      .Range("A3:B3").Font.Bold = True
      For intCounter = 1 To UBound(avarLinks)
        .Cells(intCounter + 3, 1).Value = intCounter
        .Cells(intCounter + 3, 2).Value = avarLinks(intCounter)
      Next intCounter
    End With
  Else
    MsgBox "Es sind keine Excel-Verknüpfungen vorhanden.", vbInformation
  End If
  wksSheet.Columns("B").AutoFit
  Set wksSheet = Nothing
End Sub

.VBA-Code #2
Public Sub ListExternalLinks2()
  Dim avarLinks As Variant
  Dim intCounter As Integer
  Dim wksSheet As Worksheet
  Dim intPos1 As Integer
  Dim intPos2 As Integer
  avarLinks = ActiveWorkbook.LinkSources(xlOLELinks)
  If Not IsEmpty(avarLinks) Then
    Set wksSheet = ActiveWorkbook.Worksheets.Add
    With wksSheet
      .Range("A1").Value = "Externe Verknüpfungen (OLE-/DDE-Verknüpfungen)"
      .Range("A1").Font.Bold = True
      .Range("A3:E3").Value = Array("Nr.", "Quelle", "Anwendung", "Datei/Thema", "Element")
      .Range("A3:E3").Font.Bold = True
      For intCounter = 1 To UBound(avarLinks)
        intPos1 = InStr(avarLinks(intCounter), "|")
        intPos2 = InStr(intPos1 + 1, avarLinks(intCounter), "!")
        .Cells(intCounter + 3, 1).Value = intCounter
        .Cells(intCounter + 3, 2).Value = avarLinks(intCounter)
        .Cells(intCounter + 3, 3).Value = Left$(avarLinks(intCounter), intPos1 - 1)   'Anwendung
        .Cells(intCounter + 3, 4).Value = Mid$(avarLinks(intCounter), intPos1 + 1, intPos2 - intPos1 - 1)  
'Datei/Thema
        .Cells(intCounter + 3, 5).Value = Mid$(avarLinks(intCounter), intPos2 + 1)  
'Element
      Next intCounter
    End With
  Else
    MsgBox "Es sind keine OLE-/DDE-Verknüpfungen vorhanden.", vbInformation
  End If
  wksSheet.Columns("B:E").AutoFit
  Set wksSheet = Nothing
End Sub

Verwandte Codebeispiele

Anwendungsnamen von DDE-Verknüpfungen in einer Arbeitsmappe auflisten

Anzahl externe Verknüpfungen in einer Arbeitsmappe abfragen

Externe Verknüpfungen in einer Arbeitsmappe ändern

Externe Verknüpfungen in einer Arbeitsmappe löschen

Prüfen, ob eine Arbeitsmappe externe Verknüpfungen enthält

Prüfen, ob die externen Verknüpfungen in einer Arbeitsmappe gültig sind

Dateien von externen Verknüpfungen in einer Arbeitsmappe öffnen

To Top


Anwendungsnamen von DDE-Verknüpfungen in einer Arbeitsmappe auflisten

.Beschreibung
Dieses Codebeispiel erstellt eine Liste der Anwendungen, die in den externen Verknüpfungen des Typs 'DDE-Verknüpfung' enthalten sind.

Bei OLE-/DDE-Verknüpfungen besteht die Verknüpfungsinformation immer aus den drei Bestandteilen "Anwendung", "Datei/Thema" und "Element".

.VBA-Code
Public Sub ListProgramsOfDDELinks()

End Sub

Verwandte Codebeispiele

Externe Verknüpfungen in einer Arbeitsmappe auflisten

Anzahl externe Verknüpfungen in einer Arbeitsmappe abfragen

Externe Verknüpfungen in einer Arbeitsmappe ändern

Externe Verknüpfungen in einer Arbeitsmappe löschen

Prüfen, ob eine Arbeitsmappe externe Verknüpfungen enthält

Prüfen, ob die externen Verknüpfungen in einer Arbeitsmappe gültig sind

Dateien von externen Verknüpfungen in einer Arbeitsmappe öffnen

To Top


Dateien von externen Verknüpfungen in einer Arbeitsmappe öffnen

.Beschreibung
Dieses Beispiel öffnet die Datei einer externen Verknüpfung.

.VBA-Code
Public Sub OpenExternalLinks()

End Sub

Verwandte Codebeispiele

Externe Verknüpfungen in einer Arbeitsmappe auflisten

Anwendungsnamen von DDE-Verknüpfungen in einer Arbeitsmappe auflisten

Anzahl externe Verknüpfungen in einer Arbeitsmappe abfragen

Externe Verknüpfungen in einer Arbeitsmappe ändern

Externe Verknüpfungen in einer Arbeitsmappe löschen

Prüfen, ob eine Arbeitsmappe externe Verknüpfungen enthält

Prüfen, ob die externen Verknüpfungen in einer Arbeitsmappe gültig sind

Externe Verknüpfungen in einer Arbeitsmappe aktualisieren

To Top


Externe Verknüpfungen in einer Arbeitsmappe ändern

.Beschreibung
Eine externe Verknüpfung kann insofern geändert werden, indem man sie auf eine andere Quelle umleitet. Auf der Benutzeroberfläche von Microsoft Excel steht für diesen Zweck die Schaltfläche "Quelle ändern" zur Verfügung. In einem VBA-Programm wird dazu die Methode ChangeLink des Workbook-Objektes benutzt.

.VBA-Code
Public Sub ModifyExternalLinks()

End Sub

Verwandte Codebeispiele

Externe Verknüpfungen in einer Arbeitsmappe auflisten

Anwendungsnamen von DDE-Verknüpfungen in einer Arbeitsmappe auflisten

Anzahl externe Verknüpfungen in einer Arbeitsmappe abfragen

Externe Verknüpfungen in einer Arbeitsmappe löschen

Prüfen, ob eine Arbeitsmappe externe Verknüpfungen enthält

Prüfen, ob die externen Verknüpfungen in einer Arbeitsmappe gültig sind

Dateien von externen Verknüpfungen in einer Arbeitsmappe öffnen

Externe Verknüpfungen in einer Arbeitsmappe aktualisieren

To Top


Externe Verknüpfungen in einer Arbeitsmappe aktualisieren

.Beschreibung
Eine externe Verknüpfung kann jederzeit aktualisiert werden, indem man die UpdateLinks-Methode von Workbook aufruft.

.VBA-Code
Public Sub RefreshExternalLinks()

End Sub

Verwandte Codebeispiele

Externe Verknüpfungen in einer Arbeitsmappe auflisten

Anwendungsnamen von DDE-Verknüpfungen in einer Arbeitsmappe auflisten

Anzahl externe Verknüpfungen in einer Arbeitsmappe abfragen

Externe Verknüpfungen in einer Arbeitsmappe ändern

Externe Verknüpfungen in einer Arbeitsmappe löschen

Prüfen, ob eine Arbeitsmappe externe Verknüpfungen enthält

Prüfen, ob die externen Verknüpfungen in einer Arbeitsmappe gültig sind

Dateien von externen Verknüpfungen in einer Arbeitsmappe öffnen

To Top


Externe Verknüpfungen in einer Arbeitsmappe löschen

.Beschreibung
Dieses Codebeispiel löscht die externen Verknüpfungen aus einer Arbeitsmappe. Da eine externe Verknüpfung nicht direkt gelöscht werden kann, kann man sie nur löschen, indem man die Verknüpfungsquelle auf die aktuelle Arbeitsmappe (d.h. die Verknüpfung enthaltende Mappe) setzt. Wenn die Quelle der Verknüpfungen die gleiche und nicht mehr eine andere Mappe ist, gibt es automatisch keine externen Verknüpfungen mehr.

.VBA-Code
Public Sub RemoveExternalLinks()

End Sub

Verwandte Codebeispiele

Externe Verknüpfungen in einer Arbeitsmappe auflisten

Anwendungsnamen von DDE-Verknüpfungen in einer Arbeitsmappe auflisten

Anzahl externe Verknüpfungen in einer Arbeitsmappe abfragen

Externe Verknüpfungen in einer Arbeitsmappe ändern

Prüfen, ob eine Arbeitsmappe externe Verknüpfungen enthält

Prüfen, ob die externen Verknüpfungen in einer Arbeitsmappe gültig sind

Dateien von externen Verknüpfungen in einer Arbeitsmappe öffnen

Externe Verknüpfungen in einer Arbeitsmappe aktualisieren

To Top


Prüfen, ob die externen Verknüpfungen in einer Arbeitsmappe gültig sind

.Beschreibung
Dieses Beispiel dient zum Überprüfen der externen Verknüpfungen in einer Arbeitsmappe. Kontrollieirt wird die Quelle beziehungsweise derer Existenz, wobei je nach Verknüpfungstyp unterschiedlich vorgegangen wird.

Verknüpfungstyp Überprüfen von...
Excel-Verknüpfung Existenz der anderen Arbeitsmappe
OLE-Verknüpfung Existenz des anderen Dokumentes
DDE-Verknüpfung Existenz der anderen Anwendung/des anderen Dokumentes

 

.VBA-Code
Public Sub CheckExternalLinks()

End Sub

Verwandte Codebeispiele

Externe Verknüpfungen in einer Arbeitsmappe auflisten

Anwendungsnamen von DDE-Verknüpfungen in einer Arbeitsmappe auflisten

Anzahl externe Verknüpfungen in einer Arbeitsmappe abfragen

Externe Verknüpfungen in einer Arbeitsmappe ändern

Externe Verknüpfungen in einer Arbeitsmappe löschen

Prüfen, ob eine Arbeitsmappe externe Verknüpfungen enthält

Dateien von externen Verknüpfungen in einer Arbeitsmappe öffnen

Externe Verknüpfungen in einer Arbeitsmappe aktualisieren

To Top


Prüfen, ob die Rückfrage "Verknüpfungen aktualisieren?" beim Öffnen einer Arbeitsmappe erscheint

.Beschreibung
Hier wird abgefragt, ob beim Öffnen einer Arbeitsmappe die Rückfrage "Diese Datei enthält automatische Verknüpfungen zu Informationen in einer anderen Arbeitsmappe. Soll diese Arbeitsmappe mit Änderungen, die in der anderen Arbeitsmappe eingegeben wurden, aktualisiert werden?" eingeblendet wird.

.VBA-Code
Public Sub CheckExternalLinks()

End Sub

To Top


Benutzerformular drucken

.Beschreibung
Ein Benutzerformular lässt sich komfortabel auf dem Drucker ausgeben, indem man die PrintForm-Methode des Benutzerformulares aufruft.

.VBA-Code #1
Public Sub PrintUserForm()
  UserForm1.PrintForm
End Sub

.VBA-Code #2
Private Sub UserForm_Click()
  Me.PrintForm
End Sub

Verwandte Codebeispiele

Benutzerformular in Datei drucken (Ausdruck in Datei umleiten)

Screenshot eines Benutzerformulares in die Zwischenablage kopieren

Screenshot eines Fensters in die Zwischenablage kopieren

Benutzerformular im VBA-Editor anzeigen

To Top


Benutzerformular im VBA-Editor anzeigen

.Beschreibung
Standardmässig wird ein Benutzerformular im Vordergrund des Anwendungsfensters der Host-Anwendung angezeigt. In ganz bestimmten - allerdings seltenen - Situationen kann es notwendig sein, wenn ein Benutzerformular stattdessen im VBA-Editor angezeigt wird. Eine solche Situation kann beispielsweise die Anzeige eines Benutzerformular eines Add-Ins sein, welches Funktionen enthält, die sich nicht auf die Host-Anwendung sondern auf den VBA-Editor beziehen (z.B. die Erstellung eines Projektreports, das Löschen/Ersetzen von bestimmten Codezeilen, Exportieren/Importieren von Codemodulen oder dergleichen).

Fügen Sie den nachstehenden Code in ein Benutzerformular ein.

.VBA-Code
'Deklarationsbereich des Benutzerformulares
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
   (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, _
   ByVal hWndNewParent As Long) As Long

'Codemodul des Benutzerformulares
Private Sub UserForm_Initialize()
  Dim lngHWnd As Long
  Dim lngRC As Long
  If Val(Application.Version) > 8 Then
    lngHWnd = FindWindow("ThunderDFrame", vbNullString)
  Else
    lngHWnd = FindWindow("ThunderXFrame", vbNullString)
  End If
  lngRC = SetParent(lngHWnd, Application.VBE.MainWindow.hWnd)
  Application.VBE.MainWindow.SetFocus
End Sub

Verwandte Codebeispiele

Benutzerformular in Datei drucken (Ausdruck in Datei umleiten)

Benutzerformular drucken

To Top


Benutzerformular eines anderen laufenden VBA-Programmes schliessen

.Beschreibung
Dieses Codebeispiel schliesst das Benutzerformular eines anderen VBA-Programmes.

.VBA-Code
Public Sub CloseUserForm()

End Sub

To Top


Benutzerformular eines VBA-Projektes als Datei exportieren

.Beschreibung
Ein Benutzerformular kann jederzeit als Datei exportiert werden.

.VBA-Code
Public Sub ExportUserForm()

End Sub

Verwandte Codebeispiele

Datei eines Benutzerformulares (frm-Datei) importieren

To Top


Datei eines Benutzerformulares (frm-Datei) importieren

.Beschreibung
...

.VBA-Code
Public Sub ImportUserForm()

End Sub

Verwandte Codebeispiele

Benutzerformular eines VBA-Projektes als Datei exportieren

To Top


Benutzerformular in Datei drucken (Ausdruck in Datei umleiten)

.Beschreibung
...

.VBA-Code
Public Sub PrintUserFormToFile()

End Sub

To Top


Fenstertitelleiste eines Benutzerformulares ausblenden

.Beschreibung
...

» Das Codebeispiel #1 wird die Titelleiste des gerade geöffneten Benutzerformular-Fensters ausgeblendet. Der Programmcode muss sich im Codemodul des Benutzerformulares befinden, weil im Code die Referenz "Me.Caption" verwendet wird.

» Das Codebeispiel #2 dient zum Einblenden der ausgeblendeten Titelleiste des geöffneten Benutzerformular-Fensters.

.VBA-Code #1
'Deklarationsbereich des Benutzerformulares
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
   (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _

   (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _

   (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

'Codemodul des Benutzerformulares
Public Sub HideUserFormWindowCaption()
  Dim lngHWnd As Long
  Dim lngStyle As Long
  Const GWL_STYLE = -16
  Const WS_CAPTION = &HC00000
  lngHWnd = FindWindow(IIf(Val(Application.Version) > 8, "ThunderDFrame", "ThunderXFrame"), Me.Caption)
  lngStyle = GetWindowLong(lngHWnd, GWL_STYLE)
  lngStyle = lngStyle And Not WS_CAPTION
  Call SetWindowLong(lngHWnd, GWL_STYLE, lngStyle)
  Call DrawMenuBar(lngHWnd)
End Sub

.VBA-Code #2
'Deklarationsbereich des Benutzerformulares
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
   (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _

   (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _

   (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

'Codemodul des Benutzerformulares
Public Sub ShowUserFormWindowCaption()
  Dim lngHWnd As Long
  Dim lngStyle As Long
  Const GWL_STYLE = -16
  Const WS_CAPTION = &HC00000
  lngHWnd = FindWindow(IIf(Val(Application.Version) > 8, "ThunderDFrame", "ThunderXFrame"), Me.Caption)
  lngStyle = GetWindowLong(lngHWnd, GWL_STYLE)
  lngStyle = lngStyle Or WS_CAPTION
  Call SetWindowLong(lngHWnd, GWL_STYLE, lngStyle)
  Call DrawMenuBar(lngHWnd)
End Sub

Verwandte Codebeispiele

Rundes Benutzerformularfenster anzeigen

To Top


Rundes Benutzerformularfenster anzeigen

.Beschreibung
Ein Benutzerformular muss nicht immer rechteckig sein. Mit diesem Programmcode können Sie jedes beliebige Fenster rund bzw. oval machen.

.VBA-Code
'Deklarationsbereich des Benutzerformulares
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
   lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal _
   Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal _

   hRgn As Long, ByVal bRedraw As Boolean) As Long

'Codemodul des Benutzerformulares
Public Sub UserForm_Initialize()
  Dim lngRet As Long
  Dim hWnd As Long
  hWnd = FindWindow(vbNullString, Me.Caption)
  lngRet = SetWindowRgn(hWnd, CreateEllipticRgn(0, 0, Me.Width + 60, Me.Height + 60), True)
End Sub

Verwandte Codebeispiele

Fenstertitelleiste eines Benutzerformulares ausblenden

To Top


Diagramm auf einem Benutzerformular anzeigen

.Beschreibung
Dieses Codebeispiel zeigt ein Diagramm als Bild auf einem Benutzerformular an.

.VBA-Code
Public Sub ShowChartOnUserForm()

End Sub

Verwandte Codebeispiele

Diagramm als Bilddatei speichern

To Top


Diagramm als Bilddatei speichern

.Beschreibung
Das Speichern eines Excel-Diagrammes als Grafik ist alles andere als schwierig. Man braucht lediglich die Export-Methode des Chart-Objektes aufzurufen.

bmp, gif, jpg, jpeg, png

Dieses Beispiel speichert das erste Diagramm in der aktiven Arbeitsmappe als Bilddatei "Diagramm.gif".

.VBA-Code
Public Sub SaveChartAsPictureFile()
  ActiveWorkbook.Charts(1).Export "C:\Daten\Diagramm.gif"
End Sub

Verwandte Codebeispiele

Jedes Diagramm einer Arbeitsmappe als separate Bilddatei speichern

Diagramm auf einem Benutzerformular anzeigen

To Top


Jedes Diagramm einer Arbeitsmappe als separate Bilddatei speichern

.Beschreibung
...

.VBA-Code
Public Sub SaveChartsAsPictureFiles()

End Sub

Verwandte Codebeispiele

Diagramm als Bilddatei speichern

To Top


Pfad der Werkzeugsammlungdatei des VBA-Editors von Microsoft Excel ermitteln

.Beschreibung
Sämtliche Merkmale und sonstigen Informationen des VBA-Editor-Fensters "Werkzeugsammlung" sind in einer Datei namens "Excel.box" gespeichert. Zu den Merkmalen gehören unter anderen
- die Höhe und Breite des Fensters (die Position des Fensters jedoch nicht),
- die Titel und Steuerelement-Info der einzelnen Werkzeugsammlung-Seiten,
- die Namen der enthaltenen Steuerelemente und
- die Bilder von bearbeiteten Steuerelement-Bildern.

Windows besitzt ein so genanntes Standardverzeichnis für Benutzer. Der Pfad dieses Verzeichnisses kann anhand von zwei Umgebungsvariablen ermittelt werden. Im Beispiel erfolgt dies anhand der Environ-Funktion von VBA. Das Standardverzeichnis wird im vorliegenden Fall benötigt, weil die Werkzeugsammlungdatei gewöhnlich in diesem Verzeichnis zu finden ist. Dieses Codebeispiel überprüft, ob die erwähnte Datei in diesem Verzeichnis vorhanden ist.

.VBA-Code
Public Sub GetExcelToolboxFilePath()
  Dim strToolboxFile As String
  strToolboxFile = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\Excel.box"
  If Dir(strToolboxFile) <> "" Then
    MsgBox "Werkzeugsammlungdatei des VBA-Editors von Excel: " & strToolboxFile, vbInformation
  Else
    MsgBox "Die Werkzeugsammlungdatei des VBA-Editors von Excel befindet " & _
        "sich nicht im erwarteten Verzeichnis!", vbExclamation
  End If
End Sub

Verwandte Codebeispiele

Pfad der Werkzeugsammlungdatei des VBA-Editors eines Microsoft Office-Programmes ermitteln

To Top


Pfad der Werkzeugsammlungdatei des VBA-Editors eines Microsoft Office-Programmes ermitteln

.Beschreibung
Dieses Codebeispiel ermittelt den Pfad der Werkzeugsammlungsdatei des VBA-Editors eines beliebigen Microsoft Office-Programmes. Genauer gesagt wird überprüft, ob sich eine spezifische Werkzeugsammlungdatei im erwarteten Verzeichnis befindet.

Die Konstante OfficeAppFileName des unten vorgestellten Programmcodes enthält den Namen der Programmdatei einer Microsoft Office-Anwendung. Es können folgende Dateinamen verwendet werden:
- Excel.exe
- Winword.exe
- Powerpnt.exe
- Outlook.exe
- Vb5.exe

.VBA-Code
Public Sub GetToolboxFilePath()
  Const OfficeAppFileName As String = "Winword.exe"
  Dim strToolboxFile As String
  strToolboxFile = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\" & _
      Left$(OfficeAppFileName, Len(OfficeAppFileName) - 4) & ".box"
  If Dir(strToolboxFile) <> "" Then
    MsgBox "Werkzeugsammlungdatei des VBA-Editors von '" & OfficeAppFileName & _
        "': " & strToolboxFile, vbInformation
  Else
    MsgBox "Die Werkzeugsammlungdatei des VBA-Editors von '" & OfficeAppFileName & _
        "' befindet sich nicht im erwarteten Verzeichnis!", vbExclamation
  End If
End Sub

Verwandte Codebeispiele

Pfad der Werkzeugsammlungdatei des VBA-Editors von Microsoft Excel ermitteln

To Top


Datei mit Registrierungsdatenbank-Informationen (reg-Datei) mit der Windows Registry zusammenführen

.Beschreibung
...

Shell "RegEdit.exe -s C:\Daten\Registry-Datei.reg"

Es kann vbMinimizedNoFocus verwendet werden, damit das Programm als Symbol verkleinert ausgeführt wird.

» Codebeispiel #1: Dieses Codebeispiel importiert die Informationen aus der Datei "Registrierungsdatei.reg" in die Windows Registry.

» Codebeispiel #2: Mit dem Schalter "-s" (es kann auch "/s" verwendet werden) wird die Bestätigungsmeldung "Die Informationen von <Datei> wurden in der Registrierung eingetragen." unterdrückt.

Fehlermeldung "<Datei> kann nicht importiert werden: Fehler beim Öffnen der Datei. Mögliche Ursache ist ein Datenträger- oder Dateisystemfehler."

.VBA-Code #1
Public Sub ImportIntoRegistry1()
  Shell "RegEdit.exe C:\Daten\Registierungsdatei.reg", vbMinimizedNoFocus
End Sub

.VBA-Code #2
Public Sub ImportIntoRegistry2()
  Shell "RegEdit.exe -s C:\Daten\Registierungsdatei.reg", vbMinimizedNoFocus
End Sub

To Top


Mehrere Arbeitsblätter verschiedener Arbeitsmappen in einer Arbeitsmappe zusammenführen

.Beschreibung
Das Zusammenführen von Arbeitsblättern aus verschiedenen Arbeitsmappen in eine neue oder bestehende Arbeitsmappe ist verhältnismässig einfach.

.VBA-Code
Public Sub ConsolidateWorksheets()

End Sub

To Top


Office-Dokument öffnen-Dialog anzeigen

.Beschreibung
Wenn man die Programmdatei "osa.exe" mit dem Schalter "/f" ausführt, erscheint das Dialogfenster zum Öffnen eines Microsoft Office-Dokumentes.

.VBA-Code #1
Public Sub ShowOpenOfficeDocumentDialog1()
  Shell """C:\Programme\Microsoft Office\Office\osa.exe"" /f", vbNormalFocus
End Sub

.VBA-Code #2
Public Sub ShowOpenOfficeDocumentDialog2()
  CreateObject("WScript.Shell").Run "osa.exe /f"
End Sub

To Top


Neues Office-Dokument-Dialog anzeigen

.Beschreibung
Wenn man die Programmdatei "osa.exe" mit dem Schalter "/n" ausführt, erscheint das Dialogfenster zum Anlegen eines neuen Microsoft Office-Dokumentes.

.VBA-Code #1
Public Sub ShowNewOfficeDocumentDialog1()
  Shell """C:\Programme\Microsoft Office\Office\osa.exe"" /n", vbNormalFocus
End Sub

.VBA-Code #2
Public Sub ShowNewOfficeDocumentDialog2()
  CreateObject("WScript.Shell").Run "osa.exe /n"
End Sub

To Top


Ordner der Diagrammgalerie-Dateien von Microsoft Excel abfragen/ändern

.Beschreibung
Mit diesem VBA-Code erhalten Sie den Ordnerpfad der Diagrammgalerie-Dateien von Microsoft Excel beziehungsweise ändern ihn. Im Gegensatz zu vielen anderen Excel-Verzeichnissen existiert für das Verzeichnis der Diagrammgalerie-Dateien keine spezifische Eigenschaft im Objektmodell. Der Verzeichnispfad ist jedoch in der Windows Registry abgelegt und kann somit sehr einfach herausgefunden werden.

Der Registry-Zweig lautet "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel" und der benötigte Eintrag "GalleryPath".

TODO: Excel-Version berücksichtigen; Backslash am Pfadende berücksichtigen

.VBA-Code #1
Public Sub GetGalleryFolder()
  MsgBox "Verzeichnis für Diagrammgalerie-Dateien: " & _

      CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\GalleryPath")
End Sub

.VBA-Code #2
Public Sub SetGalleryFolder()

End Sub

To Top


Prüfen, ob die Diagrammgalerie-Dateien von Microsoft Excel im eingestellten Ordner existieren

.Beschreibung
...

Xl8galry.xls und Xlusrgal.xls

HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\GalleryPath

Eintrag enthält den Verzeichnispfad, z.B. "C:\Programme\Microsoft Office\Office\". Achtung: Am Ende des Pfadnamens kann ein Backslash stehen.

.VBA-Code
Public Sub CheckGalleryFilesInFolder()

End Sub

To Top


Ordner für Abfragen von Microsoft Excel abfragen/ändern

.Beschreibung
Mit diesem VBA-Code erhalten Sie den Abfragen-Ordnerpfad von Microsoft Excel beziehungsweise ändern ihn. Im Gegensatz zu vielen anderen Excel-Verzeichnissen existiert für das Abfragen-Verzeichnis keine Eigenschaft im Objektmodell. Der Verzeichnispfad ist jedoch in der Windows Registry abgelegt und kann somit sehr einfach herausgefunden werden.

Der Registry-Zweig lautet "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel" und der benötigte Eintrag "SavedQueriesFolder".

TODO: Excel-Version berücksichtigen

.VBA-Code #1
Public Sub GetQueriesFolder()
  MsgBox "Verzeichnis für Abfragen: " & _

      CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\SavedQueriesFolder")
End Sub

.VBA-Code #2
Public Sub SetQueriesFolder()

End Sub

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Pfad der Microsoft Excel-Programmdatei (Excel.exe) der aktuellen Excel-Sitzung ermitteln

.Beschreibung
Den Programmpfad der aktuellen Excel-Sitzung erhalten Sie durch Abfragen der Path-Eigenschaft des Application-Objektes. Es handelt sich um das Verzeichnis, welches unter anderem die Programmdatei Excel.exe enthält.

Gibt z.B. "C:\Programme\Microsoft Office\Office" zurück.

.VBA-Code
Public Sub GetExcelProgramPath()
  MsgBox "Programmverzeichnis von Microsoft Excel: " & Application.Path
End Sub

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

To Top


Anzahl verfügbare Add-Ins abfragen

.Beschreibung
Alle Add-Ins, die im Add-In-Manager von Microsoft Excel aufgelistet sind, gelten als verfügbare Add-Ins. Dieses Codebeispiel findet die Anzahl verfügbare Add-Ins heraus.

.VBA-Code
Public Sub GetNumberOfAvailableAddIns()
  MsgBox "Anzahl verfügbare Add-Ins: " & Application.AddIns.Count
End Sub

Verwandte Codebeispiele

Add-Ins auflisten

Add-In-Manager anzeigen

Themengebiet-Codebeispiele: Add-In

To Top


Verweis einem VBA-Projekt hinzufügen

.Beschreibung
Beschreibung folgt.

Hinzufügen entweder mittels Dateiname oder GUID der Objektbibliothek.

Laufzeitfehler 32813 "Name steht in Konflikt mit existierendem Modul, Projekt oder existierender Objektbibliothek"

Laufzeitfehler -2147319779 (8002801d) "Objektbibliothek nicht registriert"

 

.VBA-Code #1
Public Sub AddReference1()
  ActiveWorkbook.VBProject.References.AddFromFile "C:\Windows\System32\ScrRun.dll"
End Sub

.VBA-Code #2
Public Sub AddReference2()
  Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\ScrRun.dll"
End Sub

.VBA-Code #3
Public Sub AddReference3()
  ActiveWorkbook.VBProject.References.AddFromGuid "{420B2830-E718-11CF-893D-00A0C9054228}", 1, 0
End Sub

.VBA-Code #4
Public Sub AddReference4()
  Application.VBE.ActiveVBProject.References.AddFromGuid "{420B2830-E718-11CF-893D-00A0C9054228}", 1, 0
End Sub

To Top


Verweis eines VBA-Projektes entfernen

.Beschreibung
Beschreibung folgt.

Hinzufügen entweder mittels Dateiname oder GUID der Objektbibliothek.

Laufzeitfehler 32813 "Name steht in Konflikt mit existierendem Modul, Projekt oder existierender Objektbibliothek"

Laufzeitfehler -2147319779 (8002801d) "Objektbibliothek nicht registriert"

 

.VBA-Code #1
Public Sub AddReference1()
  ActiveWorkbook.VBProject.References.AddFromFile "C:\Windows\System32\ScrRun.dll"
End Sub

.VBA-Code #2
Public Sub AddReference2()
  Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\ScrRun.dll"
End Sub

To Top


Nicht benötigte Verweise eines VBA-Projektes entfernen

.Beschreibung
Beschreibung folgt.

 

.VBA-Code #1
Public Sub RemoveUnusedReferences1()
  ActiveWorkbook.VBProject.References.AddFromFile "C:\Windows\System32\ScrRun.dll"
End Sub

.VBA-Code #2
Public Sub RemoveUnusedReferences2()
  Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\ScrRun.dll"
End Sub

To Top


Prüfen, ob die Verweise eines VBA-Projektes gültig sind

.Beschreibung
Beschreibung folgt.

 

.VBA-Code
Public Sub CheckReferences()

End Sub

To Top


Namen der VBA-Projekte auflisten

.Beschreibung
Dieser Programmcode erstellt eine Liste mit den Namen aller VBA-Projekte der aktuellen Excel-Sitzung.

.VBA-Code
Public Sub ListProjectNames()

End Sub

To Top


Namen der VBA-Projekte der geöffneten Arbeitsmappen auflisten

.Beschreibung
Dieses Codebeispiel erstellt eine Liste mit den Namen derjenigen VBA-Projekte der aktuellen Excel-Sitzung, welche zu einer Arbeitsmappe gehören.

.VBA-Code
Public Sub ListProjectNamesOfWorkbooks()

End Sub

To Top


Prüfen, ob ein bestimmter Name bereits von einem anderen VBA-Projekt verwendet wird

.Beschreibung
Beschreibung folgt.

.VBA-Code
Public Sub CheckProjectName()

End Sub

To Top


Merkmale eines VBA-Projektes auflisten

.Beschreibung
Beschreibung folgt.

.VBA-Code
Public Sub ListProjectSettings()

End Sub

To Top


Microsoft Windows-Diagnose starten

.Beschreibung
Beschreibung folgt.

WinMSD.exe ist die Programmdatei der Microsoft Windows-Diagnose (bzw. Windows NT-Diagnose).

 

.VBA-Code
Public Sub RunWindowsDiagnostics()
  Shell "WinMSD.exe", vbNormalFocus
End Sub

To Top


Windows Task-Manager ausführen

.Beschreibung
Beschreibung folgt.

TaskMgr.exe liegt im Systemverzeichnis von Windows.

.VBA-Code
Sub RunTaskManager()
  Shell "TaskMgr.exe", vbNormalFocus
End Sub

To Top


Microsoft Systeminfo starten

.Beschreibung
Beschreibung folgt.

Es muss der vollständige Dateipfad angegeben werden. Zusätzliche Anführungszeichen sind nicht nötig, auch wenn der Pfad Leerzeichen enthält.

.VBA-Code
Sub RunMSInfo()
  Shell "C:\Programme\Gemeinsame Dateien\Microsoft Shared\MSInfo\MSInfo32.exe", vbNormalFocus
End Sub

To Top


Outlook Express starten

.Beschreibung
Beschreibung folgt.

Kein vollständiger Pfad notwendig, weil Msimn.exe registriert ist.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msimn.exe

.VBA-Code
Sub RunOutlookExpress()
  Shell "msimn.exe", vbNormalFocus
End Sub

To Top


Adressbuch starten

.Beschreibung
Beschreibung folgt.

Kein vollständiger Pfad notwendig, weil Wab.exe registriert ist.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wab.exe

 

.VBA-Code
Sub RunAddressBook()
  Shell "wab.exe", vbNormalFocus
End Sub

To Top


Microsoft Management Console starten

.Beschreibung
Beschreibung folgt.

MMC.exe liegt im Systemverzeichnis von Windows.

.VBA-Code
Sub RunMSManagementConsole()
  Shell "mmc.exe", vbNormalFocus
End Sub

To Top


Default-Sprache von Windows ermitteln

.Beschreibung
Beschreibung folgt.

Gibt z.B. 1031 zurück.

.VBA-Code
'Deklarationsbereich
Declare Function GetSystemDefaultLangID Lib "kernel32" () As Integer

'Codemodul
Public Sub GetSystemDefaultLanguage()
  MsgBox "Default-Sprachcode von Windows: " & GetDefaultLangID()
End Sub

To Top


Arbeitsmappe über eine Datei-Verknüpfung (lnk-Datei) öffnen

.Beschreibung
...

.VBA-Code
Public Sub OpenWorkbookWithLinkFile()

End Sub

Verwandte Codebeispiele

En

To Top


Programm über eine Datei-Verknüpfung (lnk-Datei) starten

.Beschreibung
...

Mit Shell funktionierts nicht, weil nur ausführbare Dateien ausgeführt werden können.

Mit Run funktionierts dagegen.

Die Verknüpfungsdatei kann mit oder ohne Dateinamenerweiterung ".lnk" angegeben werden.

 

.VBA-Code #1
Public Sub RunProgramWithLinkFile1()
  CreateObject("WScript.Shell").Run """C:\Programme\Microsoft Office\Microsoft Excel.lnk""", vbNormalFocus
End Sub

.VBA-Code #2
Public Sub RunProgramWithLinkFile2()
  CreateObject("WScript.Shell").Run """C:\Programme\Microsoft Office\Microsoft Excel""", vbNormalFocus
End Sub

Verwandte Codebeispiele

En

To Top


Arbeitsmappe unter einem anderen Dateinamen speichern und in die Liste der zuletzt verwendeten Dateien eintragen

.Beschreibung
...

 

.VBA-Code
Public Sub SaveWorkbookAddToMRUList()
  ActiveWorkbook.SaveAs Filename:="C:\Daten\EineMappe.xls", AddToMru:=True
End Sub

Verwandte Codebeispiele

En

To Top


Arbeitsmappe unter einem anderen Dateinamen speichern mit Schreibschutzkennwort zuweisen

.Beschreibung
...

Gross-/Kleinschreibung berücksichtigen.

 

.VBA-Code
Public Sub SaveWorkbookWriteResPassword()
  ActiveWorkbook.SaveAs Filename:="C:\Daten\EineMappe.xls", WriteResPassword:="Sommer"
End Sub

Verwandte Codebeispiele

Arbeitsmappe unter einem anderen Dateinamen speichern mit Schreibschutzempfehlung aktivieren

To Top


Arbeitsmappe unter einem anderen Dateinamen speichern mit Schreibschutzempfehlung aktivieren

.Beschreibung
...

 

.VBA-Code
Public Sub SaveWorkbookReadOnlyRecommended()
  ActiveWorkbook.SaveAs Filename:="C:\Daten\EineMappe.xls", ReadOnlyRecommended:=True
End Sub

Verwandte Codebeispiele

Arbeitsmappe unter einem anderen Dateinamen speichern mit Schreibschutzkennwort zuweisen

To Top


Arbeitsmappe als Vorlage speichern

.Beschreibung
...

.VBA-Code
Public Sub SaveWorkbookAsTemplate()

End Sub

Verwandte Codebeispiele

An

To Top


Arbeitsmappe als Vorlage ohne externe Datenbezüge speichern

.Beschreibung
...

.VBA-Code
Public Sub SaveAsTemplateWithoutExternalData()

End Sub

Verwandte Codebeispiele

An

To Top


Verbindung zu einer Arbeitsmappendatei abbrechen

.Beschreibung
Bekanntlich ist die xls-Datei einer Arbeitsmappe so lange gesperrt, wie die Arbeitsmappe in Microsoft Excel geöffnet ist. Während dieser Zeit kann man nur noch mit Read Shared auf die Datei zugreifen. Das exklusive Lesen sowie das Schreiben der Datei, und somit jegliches Verändern der Datei, ist nicht möglich. Man kann beispielsweise im Windows Explorer die Datei nicht umbenennen oder ihre Dokument-Eigenschaften ansehen. Der Grund für die Dateisperrung ist eine Verbindung zwischen Microsoft Excel und der xls-Datei. Ausnahmen sind allerdings freigegebene Arbeitsmappen und Arbeitsmappen, die schreibgeschützt geöffnet wurden. Deren xls-Dateien werden generell nicht gesperrt.

Gewöhnlich bleibt eine solche Verbindung während der Bearbeitung der Arbeitsmappe bestehen. Sie wird nur abgebrochen, wenn beispielsweise der Server, auf dem die Datei liegt, abstürzt oder die Netzwerk-Verbindung unterbrochen ist. Nebenbei erwähnt: Wenn sich die Datei auf einer Diskette befindet und Sie nehmen die Diskette vorübergehend aus dem Laufwerk, so bleibt die Verbindung trotzdem aufrecht.

Es gibt einen Trick, wie man die Verbindung zwischen Microsoft Excel und der Arbeitsmappendatei gewollt abbrechen kann. Man erreicht dies, indem man der Mappe ein Schreibschutzkennwort vergibt, jedoch ein Dateiformat benutzt, welches keine Schreibschutzkennwörter unterstützt. Das Format "Windows-Text" ist ein solches Dateiformat (im Speichern unter-Dialog mit "Text (Tabs getrennt) (*.txt)" bezeichnet). Damit das Dateiformat geändert und ein Schreibschutzkennwort zugewiesen werden kann, muss die Arbeitsmappe mit der SaveAs-Methode gespeichert werden. Wohlgemerkt wird die Mappe dabei nicht gespeichert, weil ein Fehler auftritt, da wie erwähnt das gewählte Dateiformat nicht mit Angabe eines Schreibschutzkennwortes verwendet werden kann.

 

.VBA-Code
Public Sub AbortConnectionToWorkbookFile()
  Application.DisplayAlerts = False
  On Error Resume Next
  ActiveWorkbook.SaveAs Filename:="C:\Daten\EineMappe.txt", FileFormat:=xlTextWindows, WriteResPassword:="Sommer"

  Application.DisplayAlerts = True
End Sub

Verwandte Codebeispiele

Arbeitsmappe unter einem anderen Dateinamen speichern mit Schreibschutzkennwort zuweisen

To Top


Fenster einer anderen Anwendung ausblenden

.Beschreibung
Dieses Codebeispiel zeigt, wie man das Anwendungsfenster einer anderen laufenden Anwendung ausblenden kann.

.VBA-Code
Public Sub HideWindow()

End Sub

Verwandte Codebeispiele

Fenster einer anderen Anwendung sperren

Grösse eines anderen Anwendungsfensters ändern

Fenster einer anderen Anwendung minimieren/maximieren/wiederherstellen

To Top


Fenster einer anderen Anwendung sperren

.Beschreibung
Mit diesem Beispiel wird das Fenster einer anderen Anwendung gesperrt.

.VBA-Code
Public Sub LockWindow()

End Sub

Verwandte Codebeispiele

An

To Top


Grösse eines anderen Anwendungsfensters ändern

.Beschreibung
Dieses Codebeispiel dient zum Ändern der Fenstergrösse eines anderen Anwendungsfensters.

.VBA-Code
Public Sub ResizeWindow()

End Sub

Verwandte Codebeispiele

An

To Top


Fenster einer anderen Anwendung minimieren/maximieren/wiederherstellen

.Beschreibung
Mit diesem Programmcode können Sie das Anwendungsfenster einer anderen Anwendung minimieren, maximieren oder wiederherstellen.

.VBA-Code
Public Sub ChangeWindowState()

End Sub

Verwandte Codebeispiele

An

To Top


Fenster einer anderen Anwendung immer im Vordergrund anzeigen

.Beschreibung
Mit diesem Code wird das Fenster einer anderen laufenden Anwendung immer im Vordergrund angezeigt.

.VBA-Code
Public Sub BringWindowToFront()

End Sub

Verwandte Codebeispiele

An

To Top


Anwendungsfenster der aktuellen Excel-Sitzung immer im Vordergrund anzeigen

.Beschreibung
Diese VBA-Codebeispiel setzt das Anwendungsfenster der aktuellen Excel-Sitzung in den Vordergrund. Wenn der Code in Microsoft Excel ausgeführt wird, wird das Anwendungsfenster dieser Excel-Sitzung im Vordergrund angezeigt.

.VBA-Code
'Deklarationsbereich
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const SWP_FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_TOPMOST = -1
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _

   ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _

   ByVal lpWindowName As String) As Long

'Codemodul
Sub ShowWindowOnTop()
  SetWindowPos FindWindow("xlmain", Application.Caption), HWND_TOPMOST, 0, 0, 0, 0, SWP_FLAGS
End Sub

Verwandte Codebeispiele

An

To Top


Verschieben eines anderen Anwendungsfensters sperren

.Beschreibung
...

.VBA-Code
Public Sub LockMoveWindow()

End Sub

Verwandte Codebeispiele

An

To Top


Ändern der Grösse eines anderen Anwendungsfensters sperren

.Beschreibung
...

.VBA-Code
Public Sub LockResizeWindow()

End Sub

Verwandte Codebeispiele

An

To Top


Minimieren/Maximieren/Wiederherstellen eines anderen Anwendungsfensters sperren

.Beschreibung
...

.VBA-Code
Public Sub LockChangeWindowState()

End Sub

Verwandte Codebeispiele

An

To Top


Verschieben des Anwendungsfensters der aktuellen Excel-Sitzung sperren

.Beschreibung
Mit diesem Programmcode wird verhindert, dass das Anwendungsfenster der aktuellen Excel-Sitzung durch den Benutzer verschoben werden kann.

.VBA-Code
Public Sub LockMoveWindow()

End Sub

Verwandte Codebeispiele

An

To Top


Ändern der Grösse des Anwendungsfensters der aktuellen Excel-Sitzung sperren

.Beschreibung
Mit diesem Programmcode wird verhindert, dass das Anwendungsfenster der aktuellen Excel-Sitzung durch den Benutzer vergrössert oder verkleinert werden kann.

.VBA-Code
Public Sub LockResizeWindow()

End Sub

Verwandte Codebeispiele

An

To Top


Minimieren/Maximieren/Wiederherstellen des Anwendungsfensters der aktuellen Excel-Sitzung sperren

.Beschreibung
Mit diesem Programmcode wird verhindert, dass das Anwendungsfenster der aktuellen Excel-Sitzung durch den Benutzer zum Symbol verkleinert, zum Vollbild vergrössert oder Wiederhergestellt werden kann.

.VBA-Code
Public Sub LockChangeWindowState()

End Sub

Verwandte Codebeispiele

An

To Top


Fenster einer anderen Anwendung in den Vordergrund bringen

.Beschreibung
...

Im Beispiel wird das Fenster des Windows Taschenrechners ("Rechner") verwendet.

 

.VBA-Code
'Deklarationsbereich
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const SWP_FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_NOTOPMOST = -2
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _

   ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _

   ByVal lpWindowName As String) As Long

'Codemodul
Sub BringWindowToFront()
  SetWindowPos FindWindow(vbNullString, "Rechner"), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_FLAGS
End Sub

Verwandte Codebeispiele

An

To Top


Systemmenü des Anwendungsfensters der aktuellen Excel-Sitzung entfernen/wiederherstellen

.Beschreibung
...

.VBA-Code #1
Public Sub RemoveSystemMenu()

End Sub

.VBA-Code #2
Public Sub RestoreSystemMenu()

End Sub

Verwandte Codebeispiele

An

To Top


Systemmenü eines anderen Anwendungsfensters entfernen/wiederherstellen

.Beschreibung
...

.VBA-Code #1
Public Sub RemoveSystemMenu()

End Sub

.VBA-Code #2
Public Sub RestoreSystemMenu()

End Sub

Verwandte Codebeispiele

An

To Top


Datei öffnen-Dialog anzeigen und einen Dateityp-Filter voreinstellen

.Beschreibung
...

 

.VBA-Code
Public Sub ShowOpenDialogAndSetFilter()

End Sub

Verwandte Codebeispiele

An

To Top


Datei öffnen-Dialog anzeigen und die den Suchkriterien entsprechenden Dateien auflisten

.Beschreibung
...

 

.VBA-Code
Public Sub ShowOpenDialogWithFoundFiles()

End Sub

Verwandte Codebeispiele

An

To Top


Datei öffnen-Dialog anzeigen und die den Suchkriterien entsprechenden Dateien mehrerer Ordner auflisten

.Beschreibung
...

 

.VBA-Code
Public Sub ShowOpenDialogWithFoundFiles()

End Sub

Verwandte Codebeispiele

An

To Top


Arbeitsmappe öffnen ohne Durchführung einer Neuberechnung der Arbeitsmappe

.Beschreibung
...

.VBA-Code
Public Sub OpenWorkbookWithoutCalculation()

End Sub

Verwandte Codebeispiele

Arbeitsmappe öffnen mit Durchführung einer Neuberechnung der Arbeitsmappe

To Top


Arbeitsmappe öffnen mit Durchführung einer Neuberechnung der Arbeitsmappe

.Beschreibung
...

.VBA-Code
Public Sub OpenWorkbookWithCalculation()

End Sub

Verwandte Codebeispiele

Arbeitsmappe öffnen ohne Durchführung einer Neuberechnung der Arbeitsmappe

To Top


Arbeitsmappe öffnen und ein bestimmtes Arbeitsblatt anzeigen

.Beschreibung
...

Wenn man eine Arbeitsmappe öffnet, wird immer das Arbeitsblatt angezeigt, welches beim letzten Speichern der Mappe gerade aktiv war.

.VBA-Code
Public Sub OpenWorkbookAndActivateSheet()

End Sub

Verwandte Codebeispiele

An

To Top


Arbeitsmappe aktualisieren und speichern (Mappe öffnen, speichern und schliessen)

.Beschreibung
Die automatisierte Aktualisierung einer Arbeitsmappe mittels VBA-Programm ist sehr einfach, da man die Mappe lediglich öffnen, speichern und dann schliessen muss. Gewöhnlich benötigt man dazu ein paar wenige Codezeilen. Dieses Beispiel soll lediglich demonstrieren, wie man den gesamten Vorgang auch mit nur einer einzigen Programmzeile erledigen kann.

.VBA-Code
Public Sub RefreshWorkbook()
  Workbooks.Open("C:\Daten\EineMappe.xls").Close True
End Sub

Verwandte Codebeispiele

Arbeitsmappe aktualisieren und unter einem anderen Dateinamen speichern (Mappe öffnen, speichern und schliessen)

To Top


Arbeitsmappe aktualisieren und unter einem anderen Dateinamen speichern (Mappe öffnen, speichern und schliessen)

.Beschreibung
Dieses Codebeispiel demonstriert, wie man eine Arbeitsmappe aktualisieren und unter einem anderen Dateinamen speichern kann. Dazu wird die Mappe geöffnet, unter einem anderen Namen gespeichert und dann geschlossen. Das Interessante an diesem Beispiel ist, dass sich dieser Vorgang mit einer einzigen Programmzeile durchführen lässt.

.VBA-Code
Public Sub RefreshWorkbook()
  Workbooks.Open("C:\Daten\EineMappe.xls").Close True, "C:\Daten\AktualisierteMappe.xls"
End Sub

Verwandte Codebeispiele

Arbeitsmappe aktualisieren und speichern (Mappe öffnen, speichern und schliessen)

To Top


Symbolleiste anbinden-Dialog anzeigen

.Beschreibung
In Microsoft Excel gibt es die Möglichkeit, benutzerdefinierte Symbolleisten an eine Arbeitsmappe anzubinden. Dadurch werden die Symbolleisten direkt in der Arbeitsmappendatei (xls-Datei) gespeichert und beim Öffnen der Mappe automatisch angelegt. Zum Bestimmen, welche Symbolleisten an eine Arbeitsmappe angebunden werden sollen, wird der "Symbolleiste anbinden"-Dialog verwendet. Dieser wird mit der "Anbinden"-Schaltfläche auf dem "Anpassen"-Dialog geöffnet. In einem VBA-Programm wird die Dialogs-Auflistung mit der Konstante xlDialogAttachToolbars verwendet.

Bei der Show-Methode können in diesem Fall keine Argumente angegeben werden.

.VBA-Code
Public Sub ShowAttachToolbarsDialog()
  Application.Dialogs(xlDialogAttachToolbars).Show
End Sub

Verwandte Codebeispiele

An

To Top


File URL eines Dateipfades ermitteln

.Beschreibung
Die Internet-Adresse einer Datei wird im Allgemeinen in Form einer so genannten File URL geschrieben. Eine File URL besitzt immer das Präfix "file:///", gefolgt vom Dateipfad, wobei als Pfadtrennzeichen das Slash-Zeichen (/) anstelle des Backslash-Zeichens (\) benutzt wird. Wenn man die File URL-Schreibweise eines Dateipfades erhalten möchte, muss somit das oben genannte Präfix vorangestellt und jeder Backslash durch einen Slash ersetzt werden. Das folgende Codebeispiel zeigt, wie dies anhand der Substitute-Funktion von Microsoft Excel durchgeführt werden kann.

.VBA-Code #1
Public Sub GetFileURLOfPath1()
  Const strFilePath As String = "C:\Daten\EineDatei.htm"
  Dim strFileURL As String
  strFileURL = "file:///" & Application.Substitute(strFilePath, "\", "/")
  MsgBox "Dateipfad: " & vbTab & strFilePath & vbCrLf & "File URL: " & vbTab & strFileURL, vbInformation
End Sub

.VBA-Code #2
Public Sub GetFileURLOfPath2()

End Sub

Verwandte Codebeispiele

Dateipfad einer File URL ermitteln

To Top


Dateipfad einer File URL ermitteln

.Beschreibung
Wenn man einen Dateipfad in der File URL-Schreibweise besitzt und die 'normale' Pfad-Schreibweise erhalten möchte, muss man das bei File URLs benutzte Präfix "file:///" entfernen und die als Pfadtrennzeichen verwendeten Slash-Zeichen (/) in Backslash-Zeichen (\) ändern.

» Das Codebeispiel #1 zeigt die oben erwähnte Technik: Präfix entfernen und Pfadtrennzeichen ersetzen.

» Codebeispiel #2 zeigt die oben erwähnte Technik (sprich Präfix entfernen und Pfadtrennzeichen ersetzen).

» Das Codebeispiel #2 verwendet eine komplett anderen Ansatz. Weil Microsoft Excel den Dateipfad eines mittels File URL erstellten Hyperlinks sofort automatisch in einen gewöhnlichen Pfad umwandelt, kann man einen temporären Hyperlink in eine Zelle einfügen, dann den (konvertierten) Dateipfad abfragen und anschliessend den Hyperlink löschen. Der Vorteil dieser Lösung ist, dass man - weil Excel die Konvertierung erledigt - einen garantiert korrekten Dateipfad erhält. Allerdings gibt es mehrere Nachteile:
- Es muss eine Arbeitsmappe aktiv sein.
- Es muss ein Tabellenblatt dieser Mappe aktiv sein.
- Das aktive Tabellenblatt darf nicht geschützt sein.
- Das aktive Tabellenblatt muss mindestens eine benutzte Zelle enthalten.

.VBA-Code #1
Public Sub GetPathOfFileURL1()
  Const strFileURL As String = "file:///C:/Daten/EineDatei.htm"
  Dim strFilePath As String
  strFilePath = Application.Substitute(Mid$(strFileURL, 9), "/", "\")
  MsgBox "File URL: " & vbTab & strFileURL & vbCrLf & "Dateipfad: " & vbTab & strFilePath, vbInformation
End Sub

.VBA-Code #2
Public Function GetPathOfURL(ByVal strFileURL As String) As String
  GetPathOfURL = Application.Substitute(Mid$(strFileURL, 9), "/", "\")
End Sub

Sub TestCall()
  Const strFileURL As String = "file:///C:/Daten/EineDatei.htm"
  MsgBox "File URL: " & vbTab & strFileURL & vbCrLf & "Dateipfad: " & vbTab & GetPathOfURL(strFileURL), vbInformation
End Sub

.VBA-Code #3
Public Sub GetPathOfFileURL2()
  Const strFileURL As String = "file:///C:/Daten/EineDatei.htm"
  Dim strFilePath As String
  Cells.Find("").Select
  With ActiveCell
    .Hyperlinks.Add ActiveCell, strFileURL
    strFilePath = .Hyperlinks(1).Address
    .Hyperlinks(1).Delete
    .Clear
  End With
  MsgBox "File URL: " & vbTab & strFileURL & vbCrLf & "Dateipfad: " & vbTab & strFilePath, vbInformation

End Sub

.Hinweis
Es ist den wenigsten Programmierern bekannt, dass Microsoft Excel-VBA gewöhnlich ohne Probleme auch URL-Adressen akzeptiert. So ist es zum Beispiel möglich, bei der Open-Methode von Workbooks eine File URL zu verwenden:

  Workbooks.Open "file:///C:/Daten/EineMappe.xls"

Die vorgängige explizite Umwandlung der File URL in einen gewöhnlichen Dateipfad ist somit hier nicht notwendig. Beachten Sie aber, dass VBA (gemeint ist die Programmiersprache VBA als solche) keine File URLs verarbeitet. Beispielsweise führt die Dir-Funktion mit einer File URL zum Laufzeitfehler 76 "Pfad nicht gefunden", und die Open-Anweisung (zum Beispiel "Open "file:///C:/Daten/Textdatei.txt" For Input As #1") erzeugt den Laufzeitfehler 52 "Dateiname oder -nummer falsch".

Verwandte Codebeispiele

File URL eines Dateipfades ermitteln

To Top


UNC-Dateipfad eines Dateipfades ermitteln

.Beschreibung
Dieser Programmcode gibt die UNC-Schreibweise eines Dateipfades aus.

.VBA-Code
Public Sub GetUNCPathOfPath()

End Sub

Verwandte Codebeispiele

Dateipfad eines UNC-Dateipfades ermitteln

To Top


Dateipfad eines UNC-Dateipfades ermitteln

.Beschreibung
Dieser Programmcode gibt die gewohnte Schreibweise eines UNC-Dateipfades aus.

.VBA-Code
Public Sub GetPathOfUNCPath()

End Sub

Verwandte Codebeispiele

UNC-Dateipfad eines Dateipfades ermitteln

To Top


Original Gross-/Kleinschreibweise eines Dateipfades ermitteln

.Beschreibung
Windows unterstützt bekanntlich Gross-/Kleinschrift in Dateinamen und -Pfaden. Wenn Sie einen Pfad nicht in der vorliegenden sondern in seiner tatsächlichen Schreibweise, also so wie er auf der Festplatte lautet, anzeigen möchten, muss die effektive Schreibweise ermittelt werden. Dazu verwendet man am besten die Möglichkeiten der File System Object-Objektbibliothek. Die Path-Eigenschaft des File-Objektes enthält den Pfad in seiner tatsächlichen Gross-/Kleinschreibweise.

Wenn beispielsweise der Pfad auf der Festplatte "C:\Daten\EineMappe.xls" lautet, wird der mit "c:\DATEN\eineMappe.XLS" angegebene Dateipfad als "C:\Daten\EineMappe.xls" ausgegeben.

.VBA-Code
Public Sub GetOriginalFilePath()
  MsgBox CreateObject("Scripting.FileSystemObject").GetFile("c:\DATEN\eineMappe.XLS").Path
End Sub

Verwandte Codebeispiele

Un

To Top


Anzahl Revisionen einer freigegebenen Arbeitsmappe abfragen

.Beschreibung
...

.VBA-Code
Public Sub GetNumberOfRevisions()

End Sub

Verwandte Codebeispiele

Fn

To Top


Anzahl Tage der Änderungsprotokollierung einer freigegebenen Arbeitsmappe abfragen/ändern

.Beschreibung
...

.VBA-Code #1
Public Sub GetNumberOfChangeHistoryDays()

End Sub

.VBA-Code #2
Public Sub SetNumberOfChangeHistoryDays()

End Sub

Verwandte Codebeispiele

Fn

To Top


Absoluter Dateipfad eines Hyperlinks in einen relativen Pfad ändern

.Beschreibung
...

.VBA-Code
Public Sub ConvertHyperlinkToRelativPath()

End Sub

Verwandte Codebeispiele

Relativer Dateipfad eines Hyperlinks in einen absoluten Pfad ändern

To Top


Relativer Dateipfad eines Hyperlinks in einen absoluten Pfad ändern

.Beschreibung
...

.VBA-Code
Public Sub ConvertHyperlinkToAbsolutePath()

End Sub

Verwandte Codebeispiele

Absoluter Dateipfad eines Hyperlinks in einen relativen Pfad ändern

To Top


Verfügbare Excel-Vorlagen (xlt-Dateien) auflisten

.Beschreibung
...

.VBA-Code
Public Sub ListAvailableTemplates()

End Sub

Verwandte Codebeispiele

Fn

To Top


Verfügbare Office-Assistenten (act-Dateien) auflisten

.Beschreibung
...

 

Dieses Codebeispiel erstellt eine Liste der Office-Assistenten auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe.

Die Codeausführung dauert zielmlich lange, weil das Einlesen eines Assistent-Dateiinhalts viel Zeit benötigt.

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Common\Assistant"

 

.VBA-Code
Public Sub ListAvailableAssistants()
  Dim objFSO As Object
  Dim objFolder As Object
  Dim objFile As Object
  Dim wksSheet As Worksheet
  Dim strFileContents As String
  Dim strAssistantFolder As String
  Dim strAssistantName As String
  Dim intCounter As Integer
  strAssistantFolder = Application.Path & "\Actors"
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFolder = objFSO.GetFolder(strAssistantFolder)
  If objFolder.Files.Count = 0 Then
    MsgBox "Der Ordner enthält keine Dateien!", vbExclamation
    Set objFolder = Nothing
    Set objFSO = Nothing
    Exit Sub
  End If
  Set wksSheet = ActiveWorkbook.Worksheets.Add
  With wksSheet
    .Range("A1").Value = "Office-Assistenten"
    .Range("A1").Font.Bold = True
    .Range("A3:E3").Value = Array("Datei", "Pfad", "Name", "Grösse", "Datum")
    .Range("A3:E3").Font.Bold = True
  End With
  intCounter = 4
  For Each objFile In objFolder.Files
    strFileContents = ""
    strAssistantName = ""
    If LCase$(objFSO.GetExtensionName(objFile.Path)) = "act" Then
      Open objFile.Path For Binary Access Read As #1
        strFileContents = Input(LOF(1), #1)
      Close #1
      strAssistantName = Mid$(strFileContents, 19, InStr(19, strFileContents, vbNullChar) - 19)
      With wksSheet
        .Cells(intCounter, 1).Value = objFile.Name
        .Cells(intCounter, 2).Value = objFile.Path
        .Cells(intCounter, 3).Value = strAssistantName
        .Cells(intCounter, 4).Value = Format$(objFile.Size, "#,##0")
        .Cells(intCounter, 5).Value = Format$(objFile.DateLastModified, "General Date")
      End With
      intCounter = intCounter + 1
    End If
  Next
  wksSheet.Columns("A:E").AutoFit
  Set wksSheet = Nothing
  Set objFolder = Nothing
  Set objFSO = Nothing
End Sub

Verwandte Codebeispiele

Dateiname des aktuellen Office-Assistenten ermitteln

Dateiname des aktuellen Office-Assistenten ohne ein Microsoft Office-Programm ermitteln

To Top


Prüfen, ob die Datei eines Office-Assistenten (act-Datei) existiert

.Beschreibung
Dieses Codebeispiel erstellt eine Liste der Office-Assistenten auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe.

Die Codeausführung dauert zielmlich lange, weil das Einlesen eines Assistent-Dateiinhalts viel Zeit benötigt.

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Common\Assistant"

 

.VBA-Code
Public Sub CheckIfAssistantExists()

End Sub

Verwandte Codebeispiele

Verfügbare Office-Assistenten (act-Dateien) auflisten

Dateiname des aktuellen Office-Assistenten ermitteln

Dateiname des aktuellen Office-Assistenten ohne ein Microsoft Office-Programm ermitteln

To Top


Dateiname des aktuellen Office-Assistenten ermitteln

.Beschreibung
...

.VBA-Code
Public Sub GetAssistantFileName()

End Sub

Verwandte Codebeispiele

Name des aktuellen Office-Assistenten ermitteln

Dateiname des aktuellen Office-Assistenten ohne ein Microsoft Office-Programm ermitteln

To Top


Dateiname des aktuellen Office-Assistenten ohne ein Microsoft Office-Programm ermitteln

.Beschreibung
...

.VBA-Code
Public Sub GetAssistantFileName()

End Sub

Verwandte Codebeispiele

Dateiname des aktuellen Office-Assistenten ermitteln

To Top


Name des aktuellen Office-Assistenten ermitteln

.Beschreibung
Die Name-Eigenschaft des Assistant-Objektes enthält den Namen des aktuellen Assistenten.

.VBA-Code
Public Sub GetAssistantName()
  MsgBox "Name des aktuellen Office-Assistenten: " & Application.Assistant.Name, vbInformation
End Sub

Verwandte Codebeispiele

Fn

To Top


Name des Office-Assistenten direkt aus einer Assistent-Datei (act-Datei) auslesen

.Beschreibung
Die Assistenten von Microsoft Office sind in Form von Dateien mit der Dateinamenerweiterung "act" in einem Unterordner des Microsoft Office-Programmordners gespeichert. Sie besitzen Dateinamen wie "clippit.act" oder "logo.act". Der tatsächliche Name eines Assistenten ist in 'seiner' Datei abgelegt (z.B. "Karl Klammer"; Datei "clippit.act"). Das hier vorgestellte Codebeispiel zeigt, wie man den Namen eines Assistenten direkt aus der act-Datei holt.

Der Name des Assistenten beginnt in der act-Datei immer bei Byte Nr. 19 und endet beim nächstfolgenden Byte, welches den Wert 0 besitzt (vbNullChar). Anstelle von vbNullChar kann man im Programmcode auch Chr(0) schreiben.

» Codebeispiel #1: Der Name wird aus der act-Datei ausgelesen, wobei der Verzeichnispfad des Assistenten-Ordners aus Application.Path und "\Actors" zusammengesetzt wird. Es wird der gesamte Dateiinhalt in eine Variable eingelesen (LOF(1)).

» Codebeispiel #2: Hier wird der Pfad des Assistenten-Ordners aus der Windows Registry geholt. Zudem werden nur die ersten 274 Bytes des Dateiinhaltes eingelesen, da der Assistent-Name bei Byte 19 beginnt und höchstens 255 Zeichen lang ist (19 + 255 = 274).

In den Beispielen wird der Assistent-Name der Datei "clippit.act" ermittelt (abgelegt als Konstante strAssistantFileName).

.VBA-Code #1
Public Sub GetAssistantName1()
  Const strAssistantFileName As String = "clippit.act"
  Dim strAssistantFolder As String
  Dim strAssistantName As String
  Dim strFileContents As String
  strAssistantFolder = Application.Path & "\Actors"
  Open strAssistantFolder & "\" & strAssistantFileName For Binary Access Read As #1
    strFileContents = Input(LOF(1), #1)
  Close #1
  strAssistantName = Mid$(strFileContents, 19, InStr(19, strFileContents, vbNullChar) - 19)
  MsgBox "Name des Office-Assistenten aus Datei '" & strAssistantFileName & "': " & strAssistantName, vbInformation
End Sub

.VBA-Code #2
Public Sub GetAssistantName2()
  Const strAssistantFileName As String = "Clippit.act"
  Dim strAssistantFolder As String
  Dim strAssistantName As String
  Dim strFileContents As String
  strAssistantFolder = CreateObject("WScript.Shell").RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Common\Assistant\AsstPath")
  strAssistantFolder = IIf(Right$(strAssistantFolder, 1) <> "\", strAssistantFolder & "\", strAssistantFolder)
  Open strAssistantFolder & strAssistantFileName For Binary Access Read As #1
    strFileContents = Input(19 + 255, #1)
  Close #1
  strAssistantName = Mid$(strFileContents, 19, InStr(19, strFileContents, vbNullChar) - 19)
  MsgBox "Name des Office-Assistenten aus Datei '" & strAssistantFileName & "': " & strAssistantName, vbInformation
End Sub

Verwandte Codebeispiele

Name des aktuellen Office-Assistenten ermitteln

To Top


Datei des Office-Assistenten (act-Datei) festlegen

.Beschreibung
...

.VBA-Code
Public Sub SetOfficeAssistant()

End Sub

Verwandte Codebeispiele

Datei des Office-Assistenten (act-Datei) ohne ein Microsoft Office-Programm festlegen

To Top


Datei des Office-Assistenten (act-Datei) ohne ein Microsoft Office-Programm festlegen

.Beschreibung
...

HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Common\Assistant\AsstFile

enthält z.B. "CLIPPIT.ACT"

.VBA-Code
Public Sub SetOfficeAssistant()

End Sub

Verwandte Codebeispiele

Datei des Office-Assistenten (act-Datei) festlegen

To Top


Dateipfad der aktuellen AutoKorrektur-Datei (acl-Datei) abfragen/ändern

.Beschreibung
...

HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Common\AutoCorrect\Path

enthält z.B. "D:\WinNT\Administrator.acl"

.VBA-Code #1
Public Sub GetAutoCorrect()

End Sub

.VBA-Code #2
Public Sub SetAutoCorrect()

End Sub

Verwandte Codebeispiele

Datei des Office-Assistenten (act-Datei) festlegen

To Top


Profil-Verzeichnis des aktuellen Windows-Benutzers abfragen

.Beschreibung
Mit der Environ-Funktion von VBA kann man das Profil-Verzeichnis des angemeldeten Windows-Benutzers herausfinden. Die dazu benötigte Umgebungsvariable heisst "USERPROFILE".

Wenn beispielsweise der Administrator in Windows NT 4 angemeldet ist, gibt das folgende Codebeispiel den Pfad "C:\WinNT\Profiles\Administrator" aus.

.VBA-Code
Public Sub GetUserProfilDirectory()
  MsgBox "Profil-Verzeichnis: " & Environ("USERPROFILE")
End Sub

Verwandte Codebeispiele

Fn

To Top


Profil-Verzeichnisse der Windows-Benutzer abfragen

.Beschreibung
...

.VBA-Code
Public Sub GetUserProfilDirectories()

End Sub

Verwandte Codebeispiele

Fn

To Top


Typ der CPU abfragen

.Beschreibung
...

.VBA-Code
Public Sub GetCPUType()

End Sub

Verwandte Codebeispiele

Fn

To Top


Merkmale der CPU auflisten

.Beschreibung
...

.VBA-Code
Public Sub ListCPUProperties()

End Sub

Verwandte Codebeispiele

Fn

To Top


Anzahl CPUs des Computers abfragen

.Beschreibung
...

.VBA-Code
Public Sub GetNumberOfCPUs()

End Sub

Verwandte Codebeispiele

Fn

To Top


Anzahl Farben der Farbpalette von Windows ermitteln

.Beschreibung
...

.VBA-Code
'Deklarationsbereich
Declare Function GetDC Lib "User32" (ByVal hWnd As Long) As Long
Declare Function GetDeviceCaps Lib "GDI32" (ByVal hDC As Long, ByVal nIndex As Long) As Long

'Codemodul
Public Sub GetNumberOfColors()
  Const PLANES = 14
  Const BITSPIXEL = 12
  Dim hDC As Long
  hDC = GetDC(0&)
  MsgBox "Anzahl Farben: " & 2 ^ (GetDeviceCaps(hDC, PLANES) * GetDeviceCaps(hDC, BITSPIXEL))
End Sub

To Top


CLSID einer Dokument-Datei abfragen

.Beschreibung
...

CLSID = ClassID

.VBA-Code
Public Sub GetDocumentCLSID()

End Sub

Verwandte Codebeispiele

Fn

To Top


CLSID eines Dateityps/ProgID abfragen

.Beschreibung
...

CLSID = ClassID

HKEY_CLASSES_ROOT\Excel.Sheet.8\CLSID

Eintrag "(Standard)" enthält die CLSID, z.B. {00020820-0000-0000-C000-000000000046}

.VBA-Code
Public Sub GetFileTypeCLSID()

End Sub

Verwandte Codebeispiele

Fn

To Top


Nummer des Standardsymbols (DefaultIcon) eines Dateityps/ProgID abfragen

.Beschreibung
...

CLSID = ClassID

HKEY_CLASSES_ROOT\Excel.Sheet.8\DefaultIcon

Eintrag "(Standard)" enthält den Pfad der ausführbaren Datei und die Nummer des Symbols, z.B. D:\Programme\Microsoft Office\Office\excel.exe,1

.VBA-Code
Public Sub GetFileTypeDefaultIconNumber()

End Sub

Verwandte Codebeispiele

Fn

To Top


Dateisymbol einer Datei anzeigen

.Beschreibung
...

(siehe FileInfo.vbp)

.VBA-Code
Public Sub ShowFileIcon()

End Sub

Verwandte Codebeispiele

Dateisymbol einer Dokument-Datei anzeigen

To Top


Dateisymbol einer Datei als Bilddatei speichern

.Beschreibung
...

(siehe FileInfo.vbp)

Erstellt eine Grafikdatei, Windows Bitmap, True Color (24 bit), 32 x 32 Pixel, 3'072 Bytes.

Zur Zeit nur mit Visual Basic möglich.

Picture-Control, Height=480, Width=480, BorderStyle=0-None, BackColor=&H00FFFFFF&

.VBA-Code
Public Sub SaveFileIconToFile()

End Sub

Verwandte Codebeispiele

Dateisymbol einer Dokument-Datei anzeigen

To Top


Dateisymbol einer Dokument-Datei anzeigen

.Beschreibung
...

(siehe DSOFile-Codebeispiele.xls)

.VBA-Code
Public Sub ShowDocumentFileIcon()

End Sub

Verwandte Codebeispiele

Dateisymbol einer Datei anzeigen

Dateisymbol einer Dokument-Datei als Bilddatei speichern

To Top


Dateisymbol einer Dokument-Datei als Bilddatei speichern

.Beschreibung
...

(siehe ODPR - PropDemovbp)

Erstellt eine Grafikdatei, Windows Bitmap, True Color (24 bit), 32 x 32 Pixel, 3'072 Bytes.

Zur Zeit nur mit Visual Basic möglich.

Picture-Control, Height=480, Width=480, BorderStyle=0-None, BackColor=&H00FFFFFF&

.VBA-Code
Public Sub SaveDocumentFileIconToFile()

End Sub

Verwandte Codebeispiele

Dateisymbol einer Dokument-Datei anzeigen

To Top


Dateisymbol(e) einer ausführbaren Datei anzeigen

.Beschreibung
...

(Für Standardsymbol siehe FileInfo.vbp, für alle Symbole noch keine Lösung gefunden)

.VBA-Code
Public Sub ShowProgramFileIcon()

End Sub

Verwandte Codebeispiele

Fn

To Top


Standardsymbol (DefaultIcon) eines Dateityps/ProgID anzeigen

.Beschreibung
...

.VBA-Code
Public Sub ShowFileTypeDefaultIcon()

End Sub

Verwandte Codebeispiele

Fn

To Top


Vorschaugrafik einer Dokument-Datei anzeigen

.Beschreibung
Dokument-Dateien von Microsoft Office und von ein paar weiteren Anwendungen anderer Hersteller können eine so genannte Vorschaugrafik enthalten.

Im Dialogfenster "Eigenschaften" (Menü Datei/Eigenschaften) kann man durch Aktivieren der Option "Vorschaugrafik speichern" (Registerseite "Datei-Info") eine so genannte Vorschaugrafik in der Exceldatei ablegen.

Die beiden Eigenschaften Thumbnail (enthält die Vorschaugrafik) und Icon (enthält das Dateisymbol) geben ein Objekt vom Typ StdPicture zurück. StdPicture ist ein Objekt von VBA/VB, das zum Erstellen einer Grafik benötigt wird.

Die Vorschaugrafik wird auf einem Benutzerformular angezeigt. Fügen Sie daher ein Anzeige-Steuerelement einem Benutzerformular hinzu. Ändern Sie den Namen des Anzeige-Steuerelementes in imgPreview. Stellen Sie die Steuerelement-Eigenschaften wie folgt ein:

- AutoSize: False
- BackColor: &H00FFFFFF&
- BackStyle: 1-fmBackStyleOpaque
- Height: 93
- PictureSizeMode: 1-fmPictureSizeModeStretch
- Width: 198

 

Wenn die Datei keine Vorschaugrafik enthält, wird das Anzeige-Steuerelement ausgeblendet.

.VBA-Code
Public Sub ShowDocumentPreviewPicture()
  Dim objDSOReader As Object
  Dim objDSODocument As Object
  Dim objPicture As StdPicture
  Set objDSOReader = CreateObject("DSOleFile.PropertyReader")
  Set objDSODocument = objDSOReader.GetDocumentProperties("C:\Daten\EineMappe.xls")
  If IsEmpty(objDSODocument.Thumbnail) = True Then
    'Keine Vorschaugrafik vorhanden
    imgPreview.Visible = False
  Else
    Set objPicture = objDSODocument.Thumbnail
    If objPicture Is Nothing Then
      'Vorschaugrafik fehlerhaft
      imgPreview.Visible = False
    Else
      'Vorschaugrafik vorhanden
      Set imgPreview.Picture = objPicture
      imgPreview.Visible = True
    End If
    Set objPicture = Nothing
  End If
  Set objDSODocument = Nothing
  Set objDSOReader = Nothing
End Sub

Verwandte Codebeispiele

Vorschaugrafik einer geöffneten Arbeitsmappe anzeigen

Prüfen, ob eine Dokument-Datei eine Vorschaugrafik enthält

Vorschaugrafik einer Arbeitsmappe generieren/entfernen

To Top


Vorschaugrafik einer geöffneten Arbeitsmappe anzeigen

.Beschreibung
...

.VBA-Code
Public Sub ShowWorkbookPreviewPicture()

End Sub

Verwandte Codebeispiele

Vorschaugrafik einer Dokument-Datei anzeigen

Prüfen, ob eine Dokument-Datei eine Vorschaugrafik enthält

Vorschaugrafik einer Arbeitsmappe generieren/entfernen

To Top


Vorschaugrafiken von mehreren Arbeitsmappendateien generieren/entfernen

.Beschreibung
...

Ablauf:
1. Arbeitsmappe in Microsoft Excel öffnen
2. Eigenschaften-Dialog öffnen und "Vorschaugrafik speichern"-Option aktivieren
3. Arbeitsmappe speichern
4. Arbeitsmappe schliessen

.VBA-Code #1
Public Sub CreatePreviewPictures()
  SendKeys "%r{+}{enter}"
  'SendKeys "%v{+}{enter}"   'Englische Excel-Version
  Application.Dialogs(xlDialogProperties).Show
End Sub

.VBA-Code #2
Public Sub RemovePreviewPictures()
  SendKeys "%r-{enter}"
  'SendKeys "%v-{enter}"   'Englische Excel-Version
  Application.Dialogs(xlDialogProperties).Show
End Sub

Verwandte Codebeispiele

Vorschaugrafik einer Dokument-Datei anzeigen

Prüfen, ob eine Dokument-Datei eine Vorschaugrafik enthält

Vorschaugrafik einer Arbeitsmappe generieren/entfernen

To Top


Vorschaugrafik einer Dokument-Datei als Bilddatei speichern

.Beschreibung
Mit diesem Programmcode können die in einer Dokument-Datei enthaltene Vorschaugrafik extrahieren und als Bilddatei speichern.

Funktioniert zur Zeit nur in Visual Basic.

.VBA-Code
Public Sub SavePreviewPictureToFile()

End Sub

Verwandte Codebeispiele

Vorschaugrafik einer Dokument-Datei anzeigen

Prüfen, ob eine Dokument-Datei eine Vorschaugrafik enthält

Vorschaugrafik einer Arbeitsmappe generieren/entfernen

To Top


Name der zugeordneten Anwendung einer Dokument-Datei abfragen

.Beschreibung
...

Dokumente beispielsweise des Dateityps "Excel.Sheet" sind Microsoft Excel zugeordnet. Der Name der Anwendung lautet in diesem Fall "Microsoft Excel".

Der Anwendungsname ist in der Datei abgelegt. Er wird nicht via Dateinamenerweiterung/Dateityp/ProgID/CLSID aus der Windows Registry geholt. Es kann sein, dass in der Datei kein Anwendungsname gespeichert ist. Das kann sogar bei ganz 'gewöhnlichen' Dateien wie beispielsweise einer Microsoft Excel-Arbeitsmappe der Fall sein.

 

.VBA-Code #1
Public Sub GetDocumentAppName1()
  Dim objDSOReader As Object
  Dim objDSODocument As Object
  Set objDSOReader = CreateObject("DSOleFile.PropertyReader")
  Set objDSODocument = objDSOReader.GetDocumentProperties("C:\Daten\EineMappe.xls")
  MsgBox "Anwendungsname: " & objDSODocument.AppName
  Set objDSODocument = Nothing
  Set objDSOReader = Nothing
End Sub

.VBA-Code #2
Public Sub GetDocumentAppName2()
  MsgBox CreateObject("DSOleFile.PropertyReader").GetDocumentProperties("C:\Daten\EineMappe.xls").AppName
End Sub

Verwandte Codebeispiele

Fn

To Top


Prüfen, ob ein Programm bereits ausgeführt wird

.Beschreibung
...

- Mit AppActivate probieren, ob ein LFZ-Fehler auftritt.

- Mit FindWindow Fenstertitel suchen.

- Mit FindWindow ClassName suchen.

- Word.Tasks durchlaufen und prüfen.

 

.VBA-Code
Public Sub CheckProgramIsRunning()

End Sub

Verwandte Codebeispiele

Fn

To Top


Prüfen, ob ein zuvor mit VBA gestartetes Programm beendet wurde

.Beschreibung
...

- Programm mit WSH.Run Wait starten und Rückgabewert überprüfen.

 

.VBA-Code
Public Sub CheckProgramExit()

End Sub

Verwandte Codebeispiele

Fn

To Top


Prüfen, ob ein zuvor mit VBA gestartetes Programm abgeschossen wurde

.Beschreibung
...

- Programm mit WSH.Run Wait starten und Rückgabewert überprüfen.

 

.VBA-Code
Public Sub CheckProgramKill()

End Sub

Verwandte Codebeispiele

Fn

To Top


Prüfen, ob ein ausgeführtes Programm hängt/nicht mehr reagiert

.Beschreibung
...

- Programm-Instanz mittels GetObject ansprechen.

 

.VBA-Code
Public Sub CheckProgramIsResponging()

End Sub

Verwandte Codebeispiele

Fn

To Top


Prüfen, ob ein abgeschossener Prozess tatsächlich nicht mehr läuft

.Beschreibung
...

- Rückmeldung von Kill.exe in eine Textdatei schreiben und dann auswerten.

- Oder mit OpenProcess und ProcessID kontrollieren.

.VBA-Code
Public Sub CheckIfKilledProcessHasEnded()

End Sub

Verwandte Codebeispiele

Fn

To Top


Prüfen, ob ein Prozess ausgeführt wird (anhand ProcessID)

.Beschreibung
...

- OpenProcess mit ProcessID kontrollieren (siehe basMisc7, Original von Herber).

.VBA-Code
Public Sub CheckIfProcessIsRunning()

End Sub

Verwandte Codebeispiele

Fn

To Top


Prüfen, ob ein Fenstertitel mehrfach vorhanden ist

.Beschreibung
...

 

.VBA-Code
Public Sub CheckWindowTitle()

End Sub

Verwandte Codebeispiele

Fn

To Top


Beenden von Microsoft Excel sperren

.Beschreibung
...

 

.VBA-Code
Public Sub DisableExcelQuit()

End Sub

Verwandte Codebeispiele

Fn

To Top


Beenden des VBA-Editors sperren

.Beschreibung
...

.VBA-Code
Public Sub DisableVBEQuit()

End Sub

Verwandte Codebeispiele

Fn

To Top


Beenden einer anderen Anwendung sperren

.Beschreibung
...

.VBA-Code
Public Sub DisableAppQuit()

End Sub

Verwandte Codebeispiele

Fn

To Top


Programm anhand TaskID beenden

.Beschreibung
...

1. Anwendungsfenster aktivieren mit AppActivate

2. Fenster-Handle ermitteln mit GetActiveWindow

3. Schliessen-Nachricht senden mit SendMessage Close

.VBA-Code
Public Sub QuitProgramWithTaskID()

End Sub

Verwandte Codebeispiele

Fn

To Top


ProcessID eines laufenden Windows-Prozesses ermitteln

.Beschreibung
...

(noch keine Lösung)

.VBA-Code
Public Sub GetProcessID()

End Sub

Verwandte Codebeispiele

Fn

To Top


ProcessID/TaskID eines zuvor mit VBA gestarteten Programmes ermitteln

.Beschreibung
...

Programm muss mit Shell gestartet werden -> zurückgegebene TaskID merken.

.VBA-Code
Public Sub GetProcessID()

End Sub

Verwandte Codebeispiele

Fn

To Top


Fenstertitel zu einem Fenster-Handle (hwnd) ermitteln

.Beschreibung
...

.VBA-Code
Public Sub GetWindowTitle()

End Sub

Verwandte Codebeispiele

Fn

To Top


ProcessID zu einem Fenster-Handle (hwnd) ermitteln

.Beschreibung
...

.VBA-Code
Public Sub GetProcessID()

End Sub

Verwandte Codebeispiele

Fn

To Top


ThreadID zu einem Fenster-Handle (hwnd) ermitteln

.Beschreibung
...

.VBA-Code
Public Sub GetThreadID()

End Sub

Verwandte Codebeispiele

Fn

To Top


ProcessID zu einem Fenstertitel ermitteln

.Beschreibung
...

.VBA-Code
Public Sub GetProcessID()

End Sub

Verwandte Codebeispiele

Fn

To Top


Fenster-Handle (hwnd) eines Fensters anhand ClassName ermitteln

.Beschreibung
...

Der Handle eines Fensters (Window Handle; hwnd) wird am einfachsten mit der API-Funktion FindWindow (alias FindWindowA) herausgefunden. Man kann der Funktion den Fenstertitel, den ClassName oder sogar auch beides übergeben. Als Resultat wird der gesuchte Fenster-Handle zurückgegeben.

Das nachstehende Codebeispiel zeigt, wie man den Handle anhand eines ClassName ermitteln kann.

 

Anwendung/Fenster ClassName
Rechner scicalc
Editor notepad
Windows Explorer explorwclass
Internet Explorer (5.50) ieframe
Microsoft Paint mspaintapp
Microsoft Access ?
Microsoft Excel xlmain
Microsoft FrontPage (Editor) frontpageeditorwindow
Microsoft Outlook (97) rctrl_renwnd32
Microsoft Outlook Express (4.72) thorbrowserwndclass
Microsoft Word opusapp
Microsoft Photo Editor msphotoeditor32mainclass
Microsoft BIFFView testclass
Microsoft PowerPoint (97) pp97frameclass
VBA-Editor wndclass_desked_gsk
VBA-Editor Werkzeugsammlung f3 minframe 60000000
VBA-Benutzerformular (97) thunderxframe
VBA-Benutzerformular (ab 2000) thunderdframe
Windows Taskleiste shell_traywnd
Crystal Reports (6.0) afx:400000:8:10008:0:1d0378
Crystal Reports (8.0) afx:400000:8:10008:0:b02e2

 

.VBA-Code
'Deklarationsbereich
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long

'Codemodul
Public Sub GetWindowHandle()
  Dim lngHwnd As Long
  lngHwnd = FindWindow("scicalc", vbNullString)
  If lngHwnd <> 0 Then

    MsgBox "Fenster-Handle von Rechner: " & lngHwnd
  End If
End Sub

Verwandte Codebeispiele

Fn

To Top


Benutzerformular beim Beenden einer anderen Anwendung schliessen

.Beschreibung
...

 

 

.VBA-Code
'Deklarationsbereich des Benutzerformulares
Private Declare Function FindWindowA Lib "user32.dll" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Private Declare Function SetParent Lib "user32.dll" (ByVal hWndChild As Long, _

   ByVal hWndNewParent As Long) As Long

'Codebereich des Benutzerformulares
Private Sub UserForm_Initialize()
  Dim lRetCode As Long
  Dim hWndForm As Long
  Dim hWndApp As Long
  hWndForm = FindWindowA("ThunderXFrame", vbNullString)
  hWndApp = FindWindowA("Notepad", vbNullString)
  lRetCode = SetParent(hWndForm, hWndApp)
End Sub

Verwandte Codebeispiele

Fn

To Top


Zellbearbeitungsmodus aktivieren

.Beschreibung
...

Bekanntlich kann man in Microsoft Excel in den Zellbearbeitungsmodus (Edit Mode) wechseln, indem man eine Zelle markiert und dann die Funktionstaste F2 drückt oder einen Doppelklick auf die Zelle ausführt. Mit VBA lässt sich der Edit Mode am einfachsten durch (simuliertes) Drücken der F2-Taste aktivieren. Dies erreicht man mithilfe von SendKeys.

Das Codebeispiel zeigt, wie der Zellbearbeitungsmodus aktiviert wird.

.VBA-Code
Public Sub ActivateCellEditMode()
  AppActivate "Microsoft Excel"
  SendKeys "{F2}", True
End Sub

Verwandte Codebeispiele

Zellbearbeitungsmodus aktivieren und Zellinhalt markieren

To Top


Zellbearbeitungsmodus aktivieren und Zellinhalt markieren

.Beschreibung
Bekanntlich kann man in Microsoft Excel in den Zellbearbeitungsmodus (Edit Mode) wechseln, indem man eine Zelle markiert und dann die Funktionstaste F2 drückt oder einen Doppelklick auf die Zelle ausführt. Mit VBA lässt sich der Edit Mode am einfachsten durch (simuliertes) Drücken der F2-Taste aktivieren. Dies erreicht man mithilfe von SendKeys.

» Das Codebeispiel #1 markiert den Inhalt der aktiven Zelle. Wenn der Zelltext mehrzeilig ist, dann wird nur die letzte Zeile markiert. Die Textmarke befindet sich am Schluss des Zelltextes.

» Das Codebeispiel #2 markiert den gesamten Inhalt der aktiven Zelle, d.h. auch wenn der Zelltext mehrzeilig ist. Die Textmarke befindet sich am Schluss des Zelltextes.

» Bei Codebeispiel #3 wird ebenfalls der gesamte Zellinhalt markiert, wobei die Textmarke vor das erste Zeichen des Zelltextes gesetzt wird.

.VBA-Code #1
Public Sub SelectCellContents1()
  AppActivate "Microsoft Excel"
  SendKeys "{F2}{Home}+{End}", True
End Sub

.VBA-Code #2
Public Sub SelectCellContents2()
  AppActivate "Microsoft Excel"
  SendKeys "{F2}^{Home}^+{End}", True
End Sub

.VBA-Code #3
Public Sub SelectCellContents3()
  AppActivate "Microsoft Excel"
  SendKeys "{F2}^+{Home}", True
End Sub

Verwandte Codebeispiele

Zellbearbeitungsmodus aktivieren

To Top


Zellbearbeitungsmodus aktivieren und Texteinfügemarke positionieren

.Beschreibung
Bekanntlich kann man in Microsoft Excel in den Zellbearbeitungsmodus (Edit Mode) wechseln, indem man eine Zelle markiert und dann die Funktionstaste F2 drückt oder einen Doppelklick auf die Zelle ausführt. Mit VBA lässt sich der Edit Mode am einfachsten durch (simuliertes) Drücken der F2-Taste aktivieren. Dies erreicht man mithilfe von SendKeys.

» Das Codebeispiel #1 zeigt, wie der Zellbearbeitungsmodus aktiviert wird.

» Das Codebeispiel #2 aktiviert ebenfalls den Zellbearbeitungsmodus. Zusätzlich wird der gesamte Inhalt der Zelle markiert.

.VBA-Code #1
Public Sub ActivateCellEditMode()
  AppActivate "Microsoft Excel"
  SendKeys "{F2}", True
End Sub

.VBA-Code #2
Public Sub SelectCellContents()
  AppActivate "Microsoft Excel"
  SendKeys "{F2}{Home}+{End}", True
End Sub

Verwandte Codebeispiele

Zellbearbeitungsmodus aktivieren

Zellbearbeitungsmodus aktivieren und Zellinhalt markieren

To Top


Mauszeiger von Microsoft Excel ändern

.Beschreibung
...

Application.Cursor = xlDefault / xlWait / xlIBeam / xlNorthwestArrow

Die Konstante xlDefault besitzt den Wert -4143. Man kann aber auch False oder 0 verwenden.

 

.VBA-Code
Public Sub SetMouseCursor()

End Sub

Verwandte Codebeispiele

Fn

To Top


Tastenkombination Alt+F4 für die aktuelle Excel-Sitzung sperren

.Beschreibung
Mit der Tastenkombination Alt+F4 kann in Microsoft Excel gewöhnlich das Anwendungsfenster oder das geöffnete Benutzerformular geschlossen werden. Anhand der OnKey-Methode des Application-Objektes lässt sich die Tastenkombination sperren. Nach dem Aktivieren der Sperre besitzt die Tastenkombination keine Wirkung mehr.

» Codebeispiel #1: Sperrt die Tastenkombination Alt+F4.

» Codebeispiel #2: Entsperrt die Tastenkombination Alt+F4.

.VBA-Code #1
Public Sub LockAltF4()
  Application.OnKey "%{F4}", ""
End Sub

.VBA-Code #2
Public Sub UnlockAltF4()
  Application.OnKey "%{F4}"
End Sub

Verwandte Codebeispiele

Fn

To Top


Tastenkombination Alt+F8 für die aktuelle Excel-Sitzung sperren

.Beschreibung
Mit der Tastenkombination Alt+F8 wird das Dialogfenster "Makro" von Microsoft Excel aufgerufen (analog Menübefehl Extras/Makro/Makros). Anhand der OnKey-Methode des Application-Objektes lässt sich die Tastenkombination sperren. Nach dem Aktivieren der Sperre besitzt die Tastenkombination keine Wirkung mehr.

» Codebeispiel #1: Sperrt die Tastenkombination Alt+F8.

» Codebeispiel #2: Entsperrt die Tastenkombination Alt+F8.

.VBA-Code #1
Public Sub LockAltF8()
  Application.OnKey "%{F8}", ""
End Sub

.VBA-Code #2
Public Sub UnlockAltF8()
  Application.OnKey "%{F8}"
End Sub

Verwandte Codebeispiele

Fn

To Top


Tastenkombination Alt+F11 für die aktuelle Excel-Sitzung sperren

.Beschreibung
Die Tastenkombination Alt+F11 dient in Microsoft Excel zum Öffnen des VBA-Editors (analog Menübefehl Extras/Makro/Visual Basic-Editor). Anhand der OnKey-Methode des Application-Objektes lässt sich die Tastenkombination sperren. Nach dem Aktivieren der Sperre besitzt die Tastenkombination keine Wirkung mehr.

» Codebeispiel #1: Sperrt die Tastenkombination Alt+F11.

» Codebeispiel #2: Entsperrt die Tastenkombination Alt+F11.

.VBA-Code #1
Public Sub LockAltF11()
  Application.OnKey "%{F11}", ""
End Sub

.VBA-Code #2
Public Sub UnlockAltF11()
  Application.OnKey "%{F11}"
End Sub

Verwandte Codebeispiele

Fn

To Top


Funktionstasten für die aktuelle Excel-Sitzung sperren

.Beschreibung
...

.VBA-Code
Public Sub LockFunctionKeys()

End Sub

Verwandte Codebeispiele

Fn

To Top


Dateisuche von Microsoft Outlook anzeigen

.Beschreibung
...

D:\Programme\Microsoft Office\Office\finder.exe

.VBA-Code
Public Sub ShowOutlookFinder()

End Sub

Verwandte Codebeispiele

Gespeicherter Office-Suchlauf ausführen

To Top


Gespeicherter Office-Suchlauf ausführen

.Beschreibung
...

Schalter "/f" ('f' steht für engl. File).

D:\Programme\Microsoft Office\Office\Finder.exe /f C:\Daten\Suchlauf.oss

Wenn die beim Programmstart angegebene Suchlauf-Datei nicht vorhanden ist, erscheint die Fehlermeldung "Outlook kann diese Datei nicht finden. Bitte überprüfen Sie, ob Pfad und Dateiname korrekt angegeben wurden.".

 

.VBA-Code
Public Sub ExecuteOfficeSavedSearch()

End Sub

Verwandte Codebeispiele

Dateisuche von Microsoft Outlook anzeigen

To Top


Registrierte Windows-Programme auflisten

.Beschreibung
...

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
z.B. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ACDSee.exe
Eintrag "(Standard)": D:\Programme\ACD Systems\ACDSee Trial-Version\ACDSee.exe
Eintrag "Path": D:\Programme\ACD Systems\ACDSee Trial-Version
Der Eintrag "Path" muss nicht zwingend existieren.

.VBA-Code
Public Sub ListRegisteredPrograms()

End Sub

Verwandte Codebeispiele

Fn

To Top


Bildschirm aktualisieren

.Beschreibung
Durch das Setzen von ScreenUpdating auf True wird die Aktualisierung des Bildschirmes ausgelöst. Es ist unerheblich, ob ScreenUpdating bereits auf True war.

.VBA-Code
Public Sub UpdateScreen()
  Application.ScreenUpdating = True
End Sub

Verwandte Codebeispiele

Bildschirmaktualisierung aktivieren/deaktivieren

To Top


Bildschirmaktualisierung aktivieren/deaktivieren

.Beschreibung
...

Mit der ScreenUpdating-Eigenschaft des Application-Objektes wird der Bildschirmaktualisierungsmodus eingestellt.

.VBA-Code #1
Public Sub ActivateScreenUpdating()
  Application.ScreenUpdating = True
End Sub

.VBA-Code #2
Public Sub DeactivateScreenUpdating()
  Application.ScreenUpdating = False
End Sub

Verwandte Codebeispiele

Bildschirm aktualisieren

To Top


Prüfen, ob die Muster-Vorlagemappe (Mappe.xlt) existiert

.Beschreibung
...

Liegt im XlStart-Ordner.

.VBA-Code
Public Sub CheckBookTemplate()

End Sub

Verwandte Codebeispiele

Prüfen, ob die Muster-Vorlagetabelle (Tabelle.xlt) existiert

To Top


Prüfen, ob die Muster-Vorlagetabelle (Tabelle.xlt) existiert

.Beschreibung
...

Liegt im XlStart-Ordner.

.VBA-Code
Public Sub CheckSheetTemplate()

End Sub

Verwandte Codebeispiele

Prüfen, ob die Muster-Vorlagemappe (Mappe.xlt) existiert

To Top


Bilddatei direkt drucken

.Beschreibung
...

Direktes Ausdrucken eines Bildes mit dem Microsoft Photo Editor.

"C:\Programme\Gemeinsame Dateien\Microsoft Shared\PhotoEd\PhotoEd.exe" /p C:\Daten\EineBilddatei.gif

» Codebeispiel #1: Asynchrones Drucken

» Codebeispiel #2: Asynchrones Drucken (ausgeblendet/im Hintergrund)

» Codebeispiel #3: Synchrones Drucken

» Codebeispiel #4: Synchrones Drucken (ausgeblendet)

 

.VBA-Code #1
Public Sub PrintPictureFile1()
  Shell """C:\Programme\Gemeinsame Dateien\Microsoft Shared\PhotoEd\PhotoEd.exe"" /p C:\Daten\Bilddatei.jpg", vbNormalFocus
End Sub

.VBA-Code #2
Public Sub PrintPictureFile2()
  Shell """C:\Programme\Gemeinsame Dateien\Microsoft Shared\PhotoEd\PhotoEd.exe"" /p C:\Daten\Bilddatei.jpg", vbHide
End Sub

.VBA-Code #3
Public Sub PrintPictureFile3()
  CreateObject("WScript.Shell").Run """C:\Programme\Gemeinsame Dateien\Microsoft Shared\PhotoEd\PhotoEd.exe""" & _

     " /p C:\Daten\Bilddatei.jpg", vbNormalFocus, True
End Sub

.VBA-Code #4
Public Sub PrintPictureFile4()
  CreateObject("WScript.Shell").Run """C:\Programme\Gemeinsame Dateien\Microsoft Shared\PhotoEd\PhotoEd.exe""" & _

     " /p C:\Daten\Bilddatei.jpg", vbHide, True
End Sub

Verwandte Codebeispiele

Pt

To Top


Arbeitsblatt basierend auf den Werksvorgabeeinstellungen für Tabellen hinzufügen

.Beschreibung
...

.VBA-Code
Public Sub AddWorksheet()
  Sheets.Add
End Sub

Verwandte Codebeispiele

Arbeitsblatt basierend auf dem Arbeitsblatt einer anderen Arbeitsmappe hinzufügen

Arbeitsblatt basierend auf einer Tabellenvorlage hinzufügen

To Top


Arbeitsblatt basierend auf der Muster-Vorlagetabelle (Tabelle.xlt) hinzufügen

.Beschreibung
...

Wenn man für das Type-Argument nicht "Tabelle" angibt, wird ein Arbeitsblatt basierend auf den Werksvorgabeeinstellungen für Tabellen hinzugefügt.

Die Datei "Tabelle.xlt" muss im XlStart-Ordner liegen. Anderenfalls wird ein Arbeitsblatt basierend auf den Werksvorgabeeinstellungen für Tabellen hinzugefügt.

.VBA-Code
Public Sub AddWorksheet()
  Sheets.Add Type:="Tabelle"
End Sub

Verwandte Codebeispiele

Arbeitsblatt basierend auf dem Arbeitsblatt einer anderen Arbeitsmappe hinzufügen

Arbeitsblatt basierend auf einer Tabellenvorlage hinzufügen

Prüfen, ob die Muster-Vorlagetabelle (Tabelle.xlt) existiert

To Top


Arbeitsblatt basierend auf einer Tabellenvorlage hinzufügen

.Beschreibung
...

.VBA-Code #1
Public Sub AddWorksheet1()
  Sheets.Add Type:="C:\Programme\Microsoft Office\Vorlagen\Tabellenvorlagen\Tabelle.xls"

End Sub

.VBA-Code #2
Public Sub AddWorksheet2()
  Sheets.Add Type:=Application.TemplatesPath & "Tabellenvorlagen\Tabellenvorlage.xls"
End Sub

Verwandte Codebeispiele

Arbeitsblatt basierend auf dem Arbeitsblatt einer anderen Arbeitsmappe hinzufügen

To Top


Arbeitsblatt basierend auf dem Arbeitsblatt einer anderen Arbeitsmappe hinzufügen

.Beschreibung
...

.VBA-Code
Public Sub AddWorksheet()

End Sub

Verwandte Codebeispiele

Arbeitsblatt basierend auf einer Tabellenvorlage hinzufügen

To Top


Mehrere Arbeitsblätter hinzufügen

.Beschreibung
...

.VBA-Code
Public Sub AddWorksheets()

End Sub

Verwandte Codebeispiele

Arbeitsblatt basierend auf dem Arbeitsblatt einer anderen Arbeitsmappe hinzufügen

Arbeitsblatt basierend auf einer Tabellenvorlage hinzufügen

To Top


Arbeitsblätter einer anderen Arbeitsmappe einer Arbeitsmappe hinzufügen

.Beschreibung
...

.VBA-Code
Public Sub AddWorksheets()

End Sub

Verwandte Codebeispiele

An

To Top


Arbeitsblätter einer anderen mit einem Dateikennwort geschützten Arbeitsmappe einer Arbeitsmappe hinzufügen

.Beschreibung
...

.VBA-Code
Public Sub AddWorksheets()

End Sub

Verwandte Codebeispiele

An

To Top


Arbeitsblätter einer anderen mit einem Schreibschutzkennwort geschützten Arbeitsmappe einer Arbeitsmappe hinzufügen

.Beschreibung
...

.VBA-Code
Public Sub AddWorksheets()

End Sub

Verwandte Codebeispiele

An

To Top


Windows Desktop-Hintergrundbild abfragen/ändern

.Beschreibung
...

 

.VBA-Code #1
Public Sub GetWindowsDesktopPicture()
  MsgBox "Windows Desktop-Hintergrundbild: " & CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper")
End Sub

.VBA-Code #2
'Deklarationsbereich
Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As String, ByVal fuWinIni As Long) As Long

'Codemodul
Public Sub SetWindowsDesktopPicture()
  Dim lngRetCode As Long
  Dim strWallpaperFile As String
  strWallpaperFile = "C:\Windows\Schwimmbad.bmp"
  lngRetCode = SystemParametersInfo(20, 0, strWallpaperFile, 1)
  If lngRetCode <> 0 Then
    MsgBox "Das Windows Desktop-Hintergrundbild wurde geändert.", vbInformation
  Else
    MsgBox "Das Windows Desktop-Hintergrundbild konnte nicht geändert werden!", vbExclamation
  End If
End Sub

Verwandte Codebeispiele

Windows Desktop-Symbole ausblenden

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Diagrammblatt als Microsoft Excel-Diagrammdatei (xlc-Datei) speichern

.Beschreibung
...

"Der ausgewählte Dateityp unterstützt keine Arbeitsmappen, die mehrere Blätter enthalten."

Das Diagrammblatt kann nur gespeichert werden, wenn das Diagramm keine Bezüge auf andere Blätter in der Mappe besitzt.

 

.VBA-Code
Public Sub SaveChartAsChartFile()
  ActiveWorkbook.SaveAs Filename:="C:\Daten\Diagramm.xlc", FileFormat:=xlExcel4
End Sub

Verwandte Codebeispiele

Pt

To Top


Fenster-Handles (hwnd) aller Fenster auflisten

.Beschreibung
Dieses Codebeispiel dient zum Auflisten der Fenster-Handles sämtlicher offenen Fenster.

Zuerst wird anhand der API-Funktion GetNextWindow mit Parameter GW_HWNDFIRST, ausgehend vom Fenster-Handle des VBA-Editors, der Handle des ersten Fensters gesucht und im Direktfenster des VBA-Editors ausgegeben. Anschliessend wird in einer Schleife immer das nächstfolgende Fenster gesucht (Parameter GW_HWNDNEXT) und dessen Handle ausgegeben, und zwar so lange, bis das letzte Fenster erreicht ist.

.VBA-Code
'Deklarationsbereich
Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hWnd As Long, _
   ByVal wFlag As Long) As Long
Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2

'Codemodul
Public Sub ListWindowHandles()
  Dim hWnd As Long
  Dim lRet As Long
  hWnd = GetNextWindow(Application.VBE.MainWindow.hWnd, GW_HWNDFIRST)

  Debug.Print hWnd
  If hWnd <> 0 Then
    Do
      hWnd = GetNextWindow(hWnd, GW_HWNDNEXT)
      If hWnd <> 0 Then
        Debug.Print hWnd
      Else
        Exit Do
      End If
    Loop
  End If
End Sub

Verwandte Codebeispiele

Fenster-Handles (hwnd) und ClassNames aller Fenster auflisten

To Top


Fenster-Handles (hwnd) und ClassNames aller Fenster auflisten

.Beschreibung
Dieses Codebeispiel dient zum Auflisten der Fenster-Handles und ClassNames sämtlicher offenen Fenster.

Zuerst wird anhand der API-Funktion GetNextWindow mit Parameter GW_HWNDFIRST, ausgehend vom Fenster-Handle des VBA-Editors, der Handle des ersten Fensters gesucht und im Direktfenster des VBA-Editors ausgegeben. Anschliessend wird in einer Schleife immer das nächstfolgende Fenster gesucht (Parameter GW_HWNDNEXT) und dessen Handle ausgegeben, und zwar so lange, bis das letzte Fenster erreicht ist.

.VBA-Code
'Deklarationsbereich
Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hWnd As Long, _
   ByVal wFlag As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, _
   ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2

'Codemodul
Public Sub ListWindowHandlesAndClassNames()
  Dim hWnd As Long
  Dim lRet As Long
  Dim sClass As String
  hWnd = GetNextWindow(Application.VBE.MainWindow.hWnd, GW_HWNDFIRST)
  If hWnd <> 0 Then
    sClass = String(255, 0)
    lRet = GetClassName(hWnd, sClass, Len(sClass))
    sClass = Left(sClass, InStr(1, sClass, Chr(0), vbTextCompare) - 1)
    Debug.Print hWnd, sClass

    Do
      hWnd = GetNextWindow(hWnd, GW_HWNDNEXT)
      If hWnd <> 0 Then
        sClass = String(255, 0)
        lRet = GetClassName(hWnd, sClass, Len(sClass))
        sClass = Left(sClass, InStr(1, sClass, Chr(0), vbTextCompare) - 1)
        Debug.Print hWnd, sClass
      Else
        Exit Do
      End If
    Loop
  End If
End Sub

Verwandte Codebeispiele

Fenster-Handles (hwnd) aller Fenster auflisten

To Top


Laufende Instanzen einer anderen Anwendung auflisten

.Beschreibung
...

Im nachstehenden Beispiel werden alle Instanzen des Windows Explorers aufgelistet. Das Fenster des Windows Explorers besitzt den Klassennamen "explorewclass", der in der Konstante strClassName abgelegt ist.

 

.VBA-Code
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName _
   As String, ByVal lpWindowName As String) As Long
Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hWnd As Long, _

   ByVal wFlag As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, _
   ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Const GW_HWNDNEXT = 2

'Codemodul
Public Sub ListWindowHandlesOfAppInstances()
  Const strClassName As String = "explorewclass"

  Dim hWnd As Long
  Dim lRet As Long
  Dim iCounter As Integer
  Dim sClass As String
  hWnd = FindWindow(strClassName, vbNullString)
  If hWnd <> 0 Then
    iCounter = iCounter + 1
    Debug.Print iCounter, hWnd
    Do
      hWnd = GetNextWindow(hWnd, GW_HWNDNEXT)
      If hWnd = 0 Then
        Exit Do
      End If
      sClass = String(255, 0)
      lRet = GetClassName(hWnd, sClass, Len(sClass))
      sClass = Left(sClass, InStr(1, sClass, Chr(0), vbTextCompare) - 1)
      If LCase(sClass) = strClassName Then
        iCounter = iCounter + 1
        Debug.Print iCounter, hWnd
      End If
    Loop
  End If
End Sub

Verwandte Codebeispiele

Fenster-Handles (hwnd) aller Fenster auflisten

Laufende Windows-Tasks auflisten

Sichtbare Anwendungstasks auflisten

To Top


Dateiname der Vorlage einer Microsoft Word Dokument-Datei (doc-Datei) ermitteln

.Beschreibung
Ein neues Microsoft Word-Dokument wird immer basierend auf einer Vorlage erstellt. Gewöhnlich ist dies die Vorlagedatei "Normal.dot". Es kann aber auch eine beliebige andere Datei mit Dateinamenerweiterung "dot" verwendet werden.

Dieses Codebeispiel zeigt, wie man den Dateinamen der Vorlage herausfinden kann, welche von einem bestimmten Word-Dokument verwendet wird.

.VBA-Code
Public Sub GetWordDocumentTemplateFileName()

End Sub

Verwandte Codebeispiele

Pt

To Top


Entwurfsmodus aktivieren/deaktivieren

.Beschreibung
Das Einschalten des Entwurfsmodus lässt sich mit VBA nur anhand eines Tricks lösen, und zwar indem ein Klick auf die Entwurfsmodus-Schaltfläche simuliert wird. Dazu verwendet man die Execute-Methode des CommandBarControl-Objektes. Da die FindControl-Methode ein Objekt vom Typ CommandBarControl zurückgibt, kann man diese Methode vorzüglich zum Ermitteln der gesuchten Entwurfsmodus-Schaltfläche anhand ihrer ID (sie besitzt die ID 1605) benutzen.

Bitte beachten Sie, dass nach der Codezeile zum Aktivieren des Entwurfsmodus das Makro sofort beendet wird. Alle nachfolgenden Codezeilen werden somit nicht mehr ausgeführt. Das Aktivieren führt nicht nur zum sofortigen Stopp der Programmausführung sondern auch zur Löschung aller Variablen auf Modulebene (egal ob Private oder Public).

Der Entwurfsmodus wird nur für die aktive Arbeitsmappe aktiviert. Solange der Entwurfsmodus aktiviert ist, werden keine Ereignisprozeduren dieser Mappe ausgeführt.

.VBA-Code #1
Public Sub ActivateDesignMode()
  Application.CommandBars.FindControl(Id:=1605).Execute

  MsgBox "Diese Meldung erscheint nicht."    '<- Diese Codezeile wird nicht ausgeführt!
End Sub

.VBA-Code #2
'Codemodul
Public Sub SetDesignModeTimer()
  Application.OnTime Now + TimeSerial(0, 0, 10), "DeactivateDesignMode"
  Application.CommandBars.FindControl(Id:=1605).Execute
End Sub

Public Sub DeactivateDesignMode()
  'Prozedur ohne VBA-Code!
End Sub

Verwandte Codebeispiele

Pt

To Top


Versionsnummer einer in einem VBA-Projekt verwiesenen Objektbibliothek abfragen

.Beschreibung
...

.VBA-Code
Public Sub GetLibraryVersion()
  Dim strLibraryName As String
  strLibraryName = "Scripting"
  With ThisWorkbook.VBProject.References(strLibraryName)
    MsgBox .Description & ": Version " & .Major & "." & .Minor, vbInformation
  End With
End Sub

Verwandte Codebeispiele

Pt

To Top


Name eines VBA-Projekt abfragen/ändern

.Beschreibung
Das Abfragen und Ändern des Namens eines VBA-Projektes erfolgt über dessen Name-Eigenschaft. Beim Zuweisen eines neuen Projektnamens muss man verschiedene Richtlinien beachten:
1. Der Name kann maximal 128 Zeichen lang sein. Wenn mehr als 128 Zeichen zugewiesen werden, werden die überzähligen Zeichen automatisch abgeschnitten. Es tritt keine Fehlermeldung auf.
2. Der Name muss mit einem Buchstaben beginnen.
3. Nebst Buchstaben sind auch Ziffern, der Unterstrich sowie das Leerzeichen erlaubt, jedoch nicht als erstes Zeichen.
4. Verboten sind alle Interpunktions- und Sonderzeichen, mit Ausnahme der Zeichen §, °, ¦, ¢, ¬ und £. Diese dürfen sogar als erstes Zeichen verwendet werden.

Immer wenn die Richtlinie 2, 3 und/oder 4 verletzt ist, tritt der Laufzeitfehler 50132 "Anwendungs- oder objektdefinierter Fehler" auf.

.VBA-Code #1
Public Sub GetProjectName()
  MsgBox "VBA-Projektname der aktiven Arbeitsmappe: " & ActiveWorkbook.VBProject.Name
End Sub

.VBA-Code #2
Public Sub SetProjectName()
  ActiveWorkbook.VBProject.Name = "MeinProjekt"
End Sub

Verwandte Codebeispiele

Pt

To Top


Module eines VBA-Projektes in ein anderen VBA-Projekt kopieren

.Beschreibung
...

.VBA-Code
Public Sub CopyProjectModule()

End Sub

Verwandte Codebeispiele

Pt

To Top


Öffnen einer anderen Arbeitsmappe erkennen

.Beschreibung
...

.VBA-Code
Public Sub CheckEvent()

End Sub

Verwandte Codebeispiele

Pt

To Top


Speichern einer anderen Arbeitsmappe erkennen

.Beschreibung
...

.VBA-Code
Public Sub CheckEvent()

End Sub

Verwandte Codebeispiele

Pt

To Top


Schliessen einer anderen Arbeitsmappe erkennen

.Beschreibung
...

.VBA-Code
Public Sub CheckEvent()

End Sub

Verwandte Codebeispiele

Pt

To Top


Anlegen einer neuen Arbeitsmappe erkennen

.Beschreibung
...

.VBA-Code
Public Sub CheckEvent()

End Sub

Verwandte Codebeispiele

Pt

To Top


Installieren eines Add-Ins erkennen

.Beschreibung
...

.VBA-Code
Public Sub CheckEvent()

End Sub

Verwandte Codebeispiele

Deinstallieren eines Add-Ins erkennen

To Top


Deinstallieren eines Add-Ins erkennen

.Beschreibung
...

.VBA-Code
Public Sub CheckEvent()

End Sub

Verwandte Codebeispiele

Installieren eines Add-Ins erkennen

To Top


Hinzufügen eines Arbeitsblattes einer anderen Arbeitsmappe erkennen

.Beschreibung
...

.VBA-Code
Public Sub CheckEvent()

End Sub

Verwandte Codebeispiele

Pt

To Top


Löschen eines Arbeitsblattes einer anderen Arbeitsmappe erkennen

.Beschreibung
...

.VBA-Code
Public Sub CheckEvent()

End Sub

Verwandte Codebeispiele

Pt

To Top


Audio-Datei abspielen

.Beschreibung
...

.VBA-Code
'Deklarationsbereich
Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" _
   (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

'Codemodul
Public Sub PlayAudioFile()
  Call sndPlaySound32("C:\Daten\Lied.wav", 1)
End Sub

Verwandte Codebeispiele

Video-Datei abspielen

To Top


Video-Datei abspielen

.Beschreibung
...

.VBA-Code
Public Sub PlayVideoFile()

End Sub

Verwandte Codebeispiele

Audio-Datei abspielen

To Top


Klang ausgeben

.Beschreibung
...

.VBA-Code
'Deklarationsbereich
Declare Sub MessageBeep Lib "User32" (ByVal N As Integer)

'Codemodul
Public Sub PlaySound()
  MessageBeep 0
End Sub

Verwandte Codebeispiele

Audio-Datei abspielen

To Top


Warnton ausgeben

.Beschreibung
...

.VBA-Code
Public Sub PlaySound()
  Beep
End Sub

Verwandte Codebeispiele

Audio-Datei abspielen

To Top


Musik-CD abspielen

.Beschreibung
...

.VBA-Code
Public Sub PlayMusicCD()

End Sub

Verwandte Codebeispiele

Audio-Datei abspielen

Video-Datei abspielen

To Top


Umgebungsvariable hinzufügen/ändern

.Beschreibung
...

HKEY_CURRENT_USER\Volatile Environment

HKEY_CURRENT_USER\Environment

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Variablennamen dürfen Leerzeichen enthalten!

 

.VBA-Code
Public Sub AddSetEnvironmentVariable()
  CreateObject("WScript.Shell").Environment("VOLATILE")("Parameter1") = "Hallo Parameter!"
End Sub

Verwandte Codebeispiele

Umgebungsvariable löschen

To Top


Umgebungsvariable abfragen

.Beschreibung
...

HKEY_CURRENT_USER\Volatile Environment

 

.VBA-Code
Public Sub GetEnvironmentVariable()
  MsgBox CreateObject("WScript.Shell").Environment("VOLATILE")("Parameter1")
End Sub

Verwandte Codebeispiele

Umgebungsvariable hinzufügen

Umgebungsvariable löschen

To Top


Umgebungsvariable löschen

.Beschreibung
...

Laufzeitfehler -2147024894 "Umgebungsvariable "<Variable>" kann nicht entfernt werden".

.VBA-Code
Public Sub RemoveEnvironmentVariable()

End Sub

Verwandte Codebeispiele

Umgebungsvariable hinzufügen

To Top


Anzahl Umgebungsvariablen ermitteln

.Beschreibung
...

.VBA-Code
Public Sub CountEnvironmentVariables()

End Sub

Verwandte Codebeispiele

Umgebungsvariable löschen

To Top


Umgebungsvariablen auflisten

.Beschreibung
Umgebungsvariablen sind Parameter von Windows, die gewöhnlich wichtige Einstellungen enthalten.

 

.VBA-Code #1
Public Sub ListEnvironmentVariables1()
  Dim objWSHShell As Object
  Dim varEnvironment As Variant
  Set objWSHShell = CreateObject("WScript.Shell")
  For Each strEnv In WshShell.Environment("PROCESS")
    Debug.Print varEnvironment
  Next
  Set objWSHShell = Nothing
End Sub

.VBA-Code #2
Public Sub ListEnvironmentVariables2()
  Dim objWSHShell As Object
  Dim intCounter As Integer
  Dim varEnviron As Variant
  Dim astrType As Variant
  astrType = Array("SYSTEM", "PROCESS", "USER", "VOLATILE")
  Set objWSHShell = CreateObject("WScript.Shell")
  For intCounter = 0 To 3
    For Each varEnviron In objWSHShell.Environment(astrType(intCounter))
      Debug.Print astrType(intCounter) & ": " & Mid$(varEnviron, 1, InStr(varEnviron, "=") - 1) & _

          " = " & Mid$(varEnviron, InStr(varEnviron, "=") + 1)
    Next
  Next intCounter
  Set objWSHShell = Nothing
End Sub

Verwandte Codebeispiele

Umgebungsvariable hinzufügen

Umgebungsvariable löschen

Verzeichnis-Pfade der Pfad-Umgebungsvariable auflisten

To Top


Prüfen, ob ein Verzeichnis-Pfad in der Pfad-Umgebungsvariable eingetragen ist

.Beschreibung
Dieses Codebeispiel dient zum Überprüfen, ob ein bestimmter Verzeichnis-Pfad in der System-Umgebungsvariable "Path" eingetragen ist.

Der Programmcode benutzt die InStr-Funktion um festzustellen, ob der zu prüfende Pfad enthalten ist. Dabei muss dem Pfadnamen ein Semikolon angehängt werden, weil sonst auch Teilübereinstimmungen gemeldet werden. Beispielsweise wäre die Suche nach "C:\Daten" erfolgreich, obwohl nicht dieser Pfad sondern "C:\Daten\Excel" eingetragen ist. Weil der gesuchte Pfad am Schluss in der Path-Umgebungsvariable stehen könnte und somit nicht von einem Semikolon gefolgt wird, wird zusätzlich eine Überprüfung anhand der Right-Funktion vorgenommen.

Im Beispiel wird die Existenz des Pfades "C:\Daten" geprüft (abgelegt in der Konstante strDir).

.VBA-Code
Public Sub CheckEnvironmentPathVariable()
  Const strDir As String = "C:\Daten"
  Dim strPath As String
  Dim bolFound As Boolean
  strPath = Environ("Path")
  If InStr(LCase$(strPath), LCase$(strDir) & ";") > 0 Then
    bolFound = True
  Else
    If Right$(LCase$(strPath), Len(strDir)) = LCase$(strDir) Then
      bolFound = True
    End If
  End If
  If bolFound = True Then
    MsgBox "Die Path-Umgebungsvariable enthält '" & strDir & "'.", vbInformation
  Else
    MsgBox "Die Path-Umgebungsvariable enthält '" & strDir & "' nicht.", vbInformation
  End If
End Sub

Verwandte Codebeispiele

Verzeichnis-Pfade der Pfad-Umgebungsvariable auflisten

Umgebungsvariablen auflisten

To Top


Verzeichnis-Pfade der Pfad-Umgebungsvariable auflisten

.Beschreibung
Die System-Umgebungsvariable "Path" enthält die Pfade der Verzeichnisse, die Windows bei der Suche einer Datei berücksichtigen soll. Da die Pfade zusammen in einer einzigen Zeichenfolge, getrennt durch jeweils ein Semikolon, abgelegt sind, ist das Auflisten der einzelnen Pfadnamen vergleichsweise aufwändig. Da zwischen zwei Pfaden immer ein Semikolon steht, könnte man den Path-String nach diesem Zeichen durchsuchen und so die einzelnen Pfadnamen extrahieren. Das Problem ist leider, dass Windows die Verwendung des Semikolons in einem Ordnernamen erlaubt. Das bedeutet, dass ein Verzeichnispfad ein Semikolon enthalten kann. Beim Durchsuchen weiss man folglich nicht, ob ein gefundenes Semikolon noch zum Pfadname gehört oder tatsächlich ein Trennzeichen ist. Das nachstehende Codebeispiel zeigt, wie man dieses Problem elegant umgehen kann.

Der Programmcode durchsucht die "Path"-Umgebungsvariable nicht nach dem Trennzeichen, sprich dem Semikolon, sondern nach dem Doppelpunkt. Weil bei Pfaden vor dem Doppelpunkt immer genau ein Zeichen steht (nämlich der Laufwerksbuchstabe), beginnt der Pfadname immer an der Position des Doppelpunktes minus 1. Er endet drei Zeichen vor dem nächsten Doppelpunkt.

.VBA-Code
Public Sub ListEnvironmentPathVariableDirs()
  Dim intCounter As Integer
  Dim strPath As String
  Dim intPos1 As Integer
  Dim intPos2 As Integer
  strPath = Environ("Path")
  intPos1 = InStr(3, strPath, ":")
  If intPos1 > 0 Then
    Debug.Print "Pfad: " & Mid$(strPath, 1, intPos1 - 3)
    Do
      intPos2 = InStr(intPos1 + 1, strPath, ":")
      If intPos2 > 0 Then
        Debug.Print "Pfad: " & Mid$(strPath, intPos1 - 1, intPos2 - intPos1 - 1)
        intPos1 = intPos2
      Else
        Debug.Print "Pfad: " & Mid$(strPath, intPos1 - 1)
        Exit Do
      End If
    Loop
  Else
    Debug.Print "Pfad: " & strPath
  End If
End Sub

Verwandte Codebeispiele

Umgebungsvariablen auflisten

To Top


Web-Symbolleiste von Microsoft Excel einblenden/ausblenden

.Beschreibung
...

.VBA-Code #1
Public Sub ShowWebCommandBar()

End Sub

.VBA-Code #2
Public Sub HideWebCommandBar()

End Sub

Verwandte Codebeispiele

Un

To Top


Auslastungsgrad (Nutzung) des physischen Speichers ermitteln

.Beschreibung
...

.VBA-Code
Public Sub GetMemoryUsage()

End Sub

Verwandte Codebeispiele

Auslastungsgrad (Nutzung) der Speicherauslagerungsdatei ermitteln

To Top


Auslastungsgrad (Nutzung) der Speicherauslagerungsdatei ermitteln

.Beschreibung
...

.VBA-Code
Public Sub GetPageFileUsage()

End Sub

Verwandte Codebeispiele

Auslastungsgrad (Nutzung) des physischen Speichers ermitteln

To Top


Excel beenden mit Schliessen aller Arbeitsmappen ohne Ausführen von Ereignisprozeduren

.Beschreibung
...

.VBA-Code
Public Sub QuitExcelWithoutEvents()

End Sub

Verwandte Codebeispiele

Excel beenden mit Schliessen aller Arbeitsmappen ohne speichern

To Top


Excel beenden mit Speichern und Schliessen aller Arbeitsmappen

.Beschreibung
...

.VBA-Code
Public Sub SaveWorkbooksAndQuitExcel()

End Sub

Verwandte Codebeispiele

Excel beenden mit Schliessen aller Arbeitsmappen ohne Ausführen von Ereignisprozeduren

Excel beenden mit Schliessen aller Arbeitsmappen ohne speichern

To Top


Excel beenden mit Schliessen aller Arbeitsmappen ohne speichern

.Beschreibung
...

.VBA-Code
Public Sub CloseWorkbooksAndQuitExcel()

End Sub

Verwandte Codebeispiele

Excel beenden mit Speichern und Schliessen aller Arbeitsmappen

To Top


Schliessen einer Arbeitsmappe ohne Ausführung von VBA-Code im BeforeClose-Ereignis

.Beschreibung
...

.VBA-Code
Public Sub CloseWorkbookWithoutEvents()

End Sub

Verwandte Codebeispiele

Excel beenden mit Schliessen aller Arbeitsmappen ohne Ausführen von Ereignisprozeduren

To Top


Schliessen einer Arbeitsmappe verhindern

.Beschreibung
...

.VBA-Code
Public Sub DisableCloseWorkbook()

End Sub

Verwandte Codebeispiele

Schliessen eines Arbeitsmappenfensters verhindern

To Top


Schliessen eines Arbeitsmappenfensters verhindern

.Beschreibung
...

.VBA-Code
Public Sub DisableCloseWorkbookWindow()

End Sub

Verwandte Codebeispiele

Schliessen einer Arbeitsmappe verhindern

To Top


Anzahl in der aktuellen Excel-Sitzung geöffnete Arbeitsmappen abfragen

.Beschreibung
...

.VBA-Code
Public Sub CountOpenWorkbooks()
  MsgBox "Anzahl geöffnete Arbeitsmappen: " & Application.Workbooks.Count
End Sub

Verwandte Codebeispiele

An

To Top


Öffnen eines neuen Arbeitsmappenfensters erkennen

.Beschreibung
...

.VBA-Code
'Codemodul "DieseArbeitsmappe"
Private intWindows As Integer

Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
  If intWindows < ThisWorkbook.Windows.Count Then
    MsgBox "Ein neues Fenster wurde geöffnet.", vbInformation
  End If
  intWindows = ThisWorkbook.Windows.Count
End Sub

Verwandte Codebeispiele

Schliessen eines Arbeitsmappenfensters erkennen

To Top


Schliessen eines Arbeitsmappenfensters erkennen

.Beschreibung
...

.VBA-Code
Public Sub Code()

End Sub

Verwandte Codebeispiele

Öffnen eines neuen Arbeitsmappenfensters erkennen

To Top


Standard-Anzahl Arbeitsblätter in neuen Arbeitsmappen abfragen/ändern

.Beschreibung
Eine neue Arbeitsmappe kann zwischen 1 und 255 Arbeitsblättern enthalten.

.VBA-Code #1
Public Sub GetNumberOfSheets()

End Sub

.VBA-Code #2
Public Sub SetNumberOfSheets()

End Sub

Verwandte Codebeispiele

Ön

To Top


Prüfen, ob ein Makro durch den Benutzer unterbrochen/abgebrochen wurde

.Beschreibung
...

Laufzeitfehler 18 "Unterbrechung durch Benutzer"

.VBA-Code
Public Sub CheckMacroAbort()
  Application.EnableCancelKey = xlErrorHandler

  Do
    DoEvents
  Loop
  Exit Sub
ErrorHandler:

  If Err.Number = 18 Then
    MsgBox "Das Makro wurde durch den Benutzer unterbrochen."
  End If
End Sub

Verwandte Codebeispiele

Unterbrechung eines Makros durch den Benutzer verhindern

To Top


Makro bei Deaktivierung des Anwendungsfensters von Microsoft Excel beenden

.Beschreibung
...

Handle mit GetActiveWindow ermitteln

ClassName zu Handle ermitteln

 

.VBA-Code
Public Sub ExitMakroByExcelDeactivation()

End Sub

Verwandte Codebeispiele

Un

To Top


Prüfen, ob das Anwendungsfenster von Microsoft Excel das aktive Fenster ist

.Beschreibung
...

» Codebeispiel #1: Überprüft, ob das Anwendungsfenster der aktuellen Excel-Sitzung aktiv ist.

» Codebeispiel #2: Wenn man überprüfen möchte, ob irgend ein Excel-Anwendungsfenster das aktive Fenster ist, muss man anstelle von Application.Caption vbNullString verwenden. -> Funktioniert noch nicht!

 

Handle mit GetActiveWindow ermitteln

Handle mit dem Handle von FindWindow(xlmain) vergleichen

 

.VBA-Code #1
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function GetActiveWindow Lib "user32" () As Long
Private datTime As Date

'Codemodul
Private Sub IsCurrentExcelActive()
  If GetActiveWindow() = FindWindow("xlmain", Application.Caption) Then
    Application.StatusBar = "Das Anwendungsfenster der aktuellen Excel-Sitzung ist aktiv"
  Else
    Application.StatusBar = "Das Anwendungsfenster der aktuellen Excel-Sitzung ist nicht aktiv"
  End If
  datTime = Now + TimeValue("00:00:01")
  Application.OnTime datTime, "IsCurrentExcelActive"
End Sub

Private Sub StopIsCurrentExcelActive()
  On Error Resume Next
  Application.OnTime datTime, "IsCurrentExcelActive", , False
  Application.StatusBar = False
End Sub

.VBA-Code #2
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function GetActiveWindow Lib "user32" () As Long
Private datTime As Date

'Codemodul
Private Sub IsExcelActive()
  If GetActiveWindow() = FindWindow("xlmain", vbNullString) Then
    Application.StatusBar = "Ein Excel-Anwendungsfenster ist aktiv"
  Else
    Application.StatusBar = "Es ist kein Excel-Anwendungsfenster aktiv"
  End If
  datTime = Now + TimeValue("00:00:01")
  Application.OnTime datTime, "IsExcelActive"
End Sub

Private Sub StopIsExcelActive()
  On Error Resume Next
  Application.OnTime datTime, "IsExcelActive", , False
  Application.StatusBar = False
End Sub

Verwandte Codebeispiele

Prüfen, ob das Fenster des VBA-Editors das aktive Fenster ist

To Top


Prüfen, ob das Fenster des VBA-Editors das aktive Fenster ist

.Beschreibung
...

Überprüft, ob das Fenster des VBA-Editors der aktuellen Excel-Sitzung aktiv ist.

 

.VBA-Code
'Deklarationsbereich
Declare Function GetActiveWindow Lib "user32" () As Long
Private datTime As Date

'Codemodul
Private Sub IsVBEWindowActive()
  If GetActiveWindow() = Application.VBE.MainWindow.hWnd Then
    Application.StatusBar = "Das VBA-Editor-Fenster ist aktiv"
  Else
    Application.StatusBar = "Das VBA-Editor-Fenster ist nicht aktiv"
  End If
  datTime = Now + TimeValue("00:00:01")
  Application.OnTime datTime, "IsVBEWindowActive"
End Sub

Private Sub StopIsVBEWindowActive()
  On Error Resume Next
  Application.OnTime datTime, "IsVBEWindowActive", , False
  Application.StatusBar = False
End Sub

Verwandte Codebeispiele

Prüfen, ob das Anwendungsfenster von Microsoft Excel das aktive Fenster ist

To Top


Fokus auf das Direktfenster des VBA-Editors setzen

.Beschreibung
Setzt den Fokus auf das Direktfenster des VBA-Editors.

.VBA-Code
'Deklarationsbereich
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long

'Codemodul
Public Sub SetFocusOnImmediateWindow()
  SetFocus FindWindowEx(Application.VBE.MainWindow.hWnd, 0, "vbawindow", vbNullString)
End Sub

Verwandte Codebeispiele

Fokus auf die Startschaltfläche von Windows setzen

To Top


Fokus auf die Startschaltfläche von Windows setzen

.Beschreibung
Aktiviert die Startschaltfläche von Windows.

.VBA-Code #1
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Codemodul
Public Sub SetFocusOnWindowsStartButton1()
  Dim hWnd As Long
  Dim hWnd2 As Long
  Const WM_SETFOCUS = &H7

  hWnd = FindWindow("shell_traywnd", vbNullString)
  hWnd2 = FindWindowEx(hWnd, 0, "button", vbNullString)
  SendMessage32 hWnd2, WM_SETFOCUS, 0&, 0&
End Sub

.VBA-Code #2
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Codemodul
Public Sub SetFocusOnWindowsStartButton2()
  SendMessage32 FindWindowEx(FindWindow("shell_traywnd", vbNullString), 0, "button", vbNullString), &H7, 0&, 0&
End Sub

Verwandte Codebeispiele

Startmenü von Windows öffnen (Startschaltfläche klicken)

To Top


Startmenü von Windows öffnen (Startschaltfläche klicken)

.Beschreibung
Simuliert das Anklicken der Startschaltfläche mit der linken Maustaste. Dadurch wird das Startmenü geöffnet.

.VBA-Code #1
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Codemodul
Public Sub OpenWindowsStartMenu1()
  Dim hWnd As Long
  Dim hWnd2 As Long
  Const WM_LBUTTONDOWN = &H201

  hWnd = FindWindow("shell_traywnd", vbNullString)
  hWnd2 = FindWindowEx(hWnd, 0, "button", vbNullString)
  SendMessage32 hWnd2, WM_LBUTTONDOWN, 0&, 0&
End Sub

.VBA-Code #2
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Codemodul
Public Sub OpenWindowsStartMenu2()
  SendMessage32 FindWindowEx(FindWindow("shell_traywnd", vbNullString), 0, "button", vbNullString), &H201, 0&, 0&
End Sub

Verwandte Codebeispiele

Fokus auf die Startschaltfläche von Windows setzen

To Top


Menü der Arbeitsoberfläche von Microsoft Excel öffnen

.Beschreibung
Wenn in Microsoft Excel kein Arbeitsmappenfenster geöffnet ist und man die rechte Maustaste drückt, und zwar in dem Fensterbereich, in welchem gewöhnlich die Mappenfenster angezeigt werden), so erscheint ein Menü mit den Menübefehlen Neu, Öffnen, Arbeitsbereich speichern, Neu berechnen und ein paar weiteren. Hier erfahren Sie, wie man dieses Menü mit VBA-Code öffnen kann. Es lässt sich auch dann öffnen, wenn der gesamte Fensterbereich des Anwendungsfensters durch ein Arbeitsmappenfenster verdeckt ist.

» Codebeispiel #1: Dieses Beispiel simuliert das Drücken der rechten Maustaste, wodurch das oben beschriebene Menü geöffnet wird. Die letzte Codezeile, welche die Meldung "Fertig!" ausgibt, soll lediglich verdeutlichen, dass die Codeausführung bei SendMessage32 anhält und so lange wartet, bis das Menü geschlossen worden ist.

» Codebeispiel #2: Hier passiert das gleiche wie bei Codebeispiel #1, nur dass hier die API-Funktionen verschachtelt sind und dadurch keine Variablen eingesetzt werden. Die letzte Codezeile, welche die Meldung "Fertig!" ausgibt, soll lediglich verdeutlichen, dass die Codeausführung bei SendMessage32 anhält und so lange wartet, bis das Menü geschlossen worden ist.

» Codebeispiel #3: Dieses Codebeispiel führt den ersten Befehl des Menüs aus. Bei Microsoft Excel 97 ist dies der Menübefehl "Neu".

.VBA-Code #1
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Codemodul
Public Sub ShowExcelDesktopMenu1()
  Dim hWnd As Long
  Dim hWnd2 As Long
  Const WM_RBUTTONDOWN = &H204
  hWnd = FindWindow("xlmain", Application.Caption)
  hWnd2 = FindWindowEx(hWnd, 0, "xldesk", vbNullString)
  SendMessage32 hWnd2, WM_RBUTTONDOWN, 0&, 0&

  MsgBox "Fertig!", vbInformation
End Sub

.VBA-Code #2
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Codemodul
Public Sub ShowExcelDesktopMenu2()
  SendMessage32 FindWindowEx(FindWindow("xlmain", Application.Caption), 0, "xldesk", vbNullString), &H204, 0&, 0&
  MsgBox "Fertig!", vbInformation

End Sub

.VBA-Code #3
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Codemodul
Public Sub ExecuteExcelDesktopMenuItem()
  SendKeys "{down}{enter}"

  SendMessage32 FindWindowEx(FindWindow("xlmain", Application.Caption), 0, "xldesk", vbNullString), &H204, 0&, 0&
End Sub

Verwandte Codebeispiele

Un

To Top


Fokus auf das Namenfeld von Microsoft Excel setzen

.Beschreibung
Setzt den Fokus auf das Namenfeld.

» Codebeispiel #1: Verwendet SendMessage.

» Codebeispiel #2: Verwendet SetFocus.

.VBA-Code #1
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Codemodul
Public Sub SetFocusOnNameBox1()
  Dim hWnd As Long
  Dim hWnd2 As Long
  Dim hWnd3 As Long

  Const WM_SETFOCUS = &H7
  hWnd = FindWindow("xlmain", Application.Caption)
  hWnd2 = FindWindowEx(hWnd, 0, "excel;", vbNullString)
  hWnd3 = FindWindowEx(hWnd2, 0, "combobox", vbNullString)
  SendMessage32 hWnd3, WM_SETFOCUS, 0&, 0&
End Sub

.VBA-Code #2
'Deklarationsbereich
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long

'Codemodul
Public Sub SetFocusOnNameBox2()
  SetFocus FindWindowEx(FindWindowEx(FindWindow("xlmain", Application.Caption), 0, "excel;", vbNullString), 0, "combobox", vbNullString)
End Sub

Verwandte Codebeispiele

DropDown-Liste des Namenfeldes von Microsoft Excel anzeigen

Breite der DropDown-Liste des Namenfeldes von Microsoft Excel ändern

To Top


DropDown-Liste des Namenfeldes von Microsoft Excel anzeigen

.Beschreibung
...

 

.VBA-Code
Public Sub ShowNameBoxDropDownList()

End Sub

Verwandte Codebeispiele

Breite der DropDown-Liste des Namenfeldes von Microsoft Excel ändern

Fokus auf das Namenfeld von Microsoft Excel setzen

To Top


Breite der DropDown-Liste des Namenfeldes von Microsoft Excel ändern

.Beschreibung
...

 

.VBA-Code
Public Sub ChangeNameBoxDropDownListWidth()

End Sub

Verwandte Codebeispiele

DropDown-Liste des Namenfeldes von Microsoft Excel anzeigen

Fokus auf das Namenfeld von Microsoft Excel setzen

To Top


Bildschirmposition des Mauszeigers ermitteln

.Beschreibung
Anhand der API-Funktion GetCursorPos kann man sehr einfach die aktuelle Position des Mauszeigers abfragen. Die Position wird in der Masseinheit Pixel und basierend auf der verwendeten Bildschirmauflösung ermittelt. Wenn Sie beispielsweise in Windows eine Auflösung von 1152 x 864 eingestellt haben, ist in der Bildschirmecke links oben die Mausposition 0/0 und rechts unten 1151/863.

» Codebeispiel #1:

» Codebeispiel #2:

.VBA-Code #1
'Deklarationsbereich
Type POINTAPI
  x As Long
  y As Long
End Type

Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'Codemodul
Public Sub GetMousePos1()
  Dim pTargetPoint As POINTAPI
  GetCursorPos pTargetPoint
  MsgBox "Mausposition: " & pTargetPoint.x & " / " & pTargetPoint.y
End Sub

.VBA-Code #2
'Deklarationsbereich
Type POINTAPI
  x As Long
  y As Long
End Type

Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'Codemodul
Public Sub GetMousePos2()
  Dim pTargetPoint As POINTAPI
  Do
    GetCursorPos pTargetPoint
    DoEvents
    Application.StatusBar = pTargetPoint.x & " / " & pTargetPoint.y
    DoEvents
  Loop
End Sub

Verwandte Codebeispiele

Prüfen, ob eine Maus angeschlossen ist

To Top


Prüfen, ob eine Maus angeschlossen ist

.Beschreibung
In bestimmten Situationen ist es wichtig zu wissen, ob am Computer eine Maus angeschlossen ist. Obwohl dieses Zeigegerät sozusagen standardmässig bei jedem Computer vorhanden ist, darf man nicht immer davon ausgehen, dass dies der Fall ist. Es gibt auch Rechner ohne Maus, wie beispielsweise ein Terminalgerät in einem Serverraum oder ein Computer mit Touchscreen.

Mit diesem Programmcode können Sie überprüfen, ob eine Maus vorhanden ist.

.VBA-Code
'Deklarationsbereich
Declare Function GetSystemMetrics Lib "User32" (ByVal nIndex As Long) As Long
Const SM_MOUSEPRESENT = 19

'Codemodul
Public Sub CheckMouseAvailable()
  If GetSystemMetrics(SM_MOUSEPRESENT) Then
    MsgBox "Maus angeschlossen"
  Else
    MsgBox "Keine Maus angeschlossen"
  End If
End Sub

Verwandte Codebeispiele

Bildschirmposition des Mauszeigers ermitteln

To Top


Prüfen, ob der Excel-Viewer (XLView.exe) installiert ist

.Beschreibung
...

Zuerst wird geprüft, ob der Registry-Eintrag vorhanden ist. Wenn dies der Fall ist, wird der im Eintrag abgelegte Dateipfad genommen und geprüft, ob die Datei vorhanden ist.

 

.VBA-Code
Public Sub CheckExcelViewerInstalled()
  Dim strViewerPath As String
  Dim strViewerFilename As String
  On Error Resume Next
  strViewerPath = CreateObject("WScript.Shell").RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Excel\Viewer\Path")
  If Err.Number = -2147024894 Then
    MsgBox "Der Excel-Viewer ist nicht installiert."
    Exit Sub
  End If
  If strViewerPath <> "" Then
    strViewerFilename = Dir(strViewerPath)
    Select Case Err.Number
      Case 0
        If strViewerFilename <> "" Then
          MsgBox "Der Excel-Viewer ist installiert und vorhanden." & vbCrLf & vbCrLf & "Dateipfad: " & strViewerPath
        Else
          MsgBox "Der Excel-Viewer ist zwar installiert, aber die Programmdatei 'XLView.exe' nicht vorhanden."
        End If
      Case 68
        MsgBox "Der registrierte Dateipfad des Excel-Viewers verweist auf ein nicht verfügbares Gerät."
      Case 76
        MsgBox "Der registrierte Dateipfad des Excel-Viewers verweist auf ein nicht vorhandenes Verzeichnis."
      Case 71
        MsgBox "Der registrierte Dateipfad des Excel-Viewers verweist auf ein nicht bereites Laufwerk."
      Case 53
        MsgBox "Der registrierte Dateipfad des Excel-Viewers verweist auf eine nicht vorhandene Datei."
      Case 70, 75
        MsgBox "Der registrierte Dateipfad des Excel-Viewers verweist auf ein gesperrtes Verzeichnis."
      Case Else
        MsgBox "Beim Überprüfen des registrierten Dateipfades des Excel-Viewers ist ein Fehler aufgetreten."
      End Select
  Else
    MsgBox "Der Excel-Viewer ist zwar installiert, aber der Pfad der Programmdatei 'XLView.exe' nicht registriert."
  End If

End Sub

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Zuletzt geöffnete Dateien des Windows Media Players auflisten

.Beschreibung
...

HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Player\RecentURLList

 

.VBA-Code
Public Sub ListMediaPlayerMRUFiles()

End Sub

Verwandte Codebeispiele

Liste der zuletzt geöffneten Dateien des Windows Media Players löschen

Default-Verzeichnis für 'Öffnen' des Windows Media Players abfragen/ändern

Default-Verzeichnis für 'Speichern unter' des Windows Media Players abfragen/ändern

To Top


Liste der zuletzt geöffneten Dateien des Windows Media Players löschen

.Beschreibung
...

HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Player\RecentURLList

 

.VBA-Code
Public Sub ClearMediaPlayerMRUList()

End Sub

Verwandte Codebeispiele

Zuletzt geöffnete Dateien des Windows Media Players auflisten

To Top


Default-Verzeichnis für 'Öffnen' des Windows Media Players abfragen/ändern

.Beschreibung
...

HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Player\Settings\OpenDir

 

.VBA-Code #1
Public Sub GetDefaultOpenDirectory()

End Sub

.VBA-Code #2
Public Sub SetDefaultOpenDirectory()

End Sub

Verwandte Codebeispiele

Default-Verzeichnis für 'Speichern unter' des Windows Media Players abfragen/ändern

To Top


Default-Verzeichnis für 'Speichern unter' des Windows Media Players abfragen/ändern

.Beschreibung
...

HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Player\Settings\SaveAsDir

 

.VBA-Code #1
Public Sub GetDefaultSaveAsDirectory()

End Sub

.VBA-Code #2
Public Sub SetDefaultSaveAsDirectory()

End Sub

Verwandte Codebeispiele

Default-Verzeichnis für 'Öffnen' des Windows Media Players abfragen/ändern

To Top

 

 

 

 

.Hinweis
Es ist auch möglich, die Benutzer-Reaktion genauer auszuwerten. Alles zu diesem Thema erfahren Sie hier:

Tipp! Tipp!
Mit dem Utility "Windows-Analyzer" erhalten Sie schnell und einfach Window Handles und Class Names von Main Windows und Child Windows.

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

VBA-Spezialthema: FileSystemObject (FSO)

VBA-Spezialthema: OLE Document Properties (DSOFile)

Excel-Objektmodell: Methoden des Workbook-Objektes

Excel-Objektmodell: Eigenschaften des Workbook-Objektes

Excel-Objektmodell: Eigenschaften des Application-Objektes

Excel-Objektmodell: Methoden des Application-Objektes

 

Haben Sie Fragen, Anregungen oder Hinweise?
Mail senden an: philipp_von_wartburg@yahoo.de

Zuletzt aktualisiert am 3.03.2006 / 21:00 Uhr
© 2002-2006 by Philipp von Wartburg, CH-8916 Jonen

Alle Rechte vorbehalten