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
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
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
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
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
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
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
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
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
.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 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 eines anderen laufenden VBA-Programmes schliessen
.Beschreibung
Dieses Codebeispiel schliesst das Benutzerformular eines
anderen VBA-Programmes.
.VBA-Code
Public Sub CloseUserForm()
End Sub
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
.Beschreibung
...
.VBA-Code
Public Sub ImportUserForm()
End Sub
Verwandte Codebeispiele |
|
Benutzerformular in Datei drucken (Ausdruck in Datei umleiten)
.Beschreibung
...
.VBA-Code
Public Sub PrintUserFormToFile()
End Sub
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
.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 |
|
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
.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
.Beschreibung
...
.VBA-Code
Public Sub SaveChartsAsPictureFiles()
End Sub
Verwandte Codebeispiele |
|
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
.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 |
|
|
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
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
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
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
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
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
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 |
|
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 |
|
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 |
|
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
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
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
Prüfen, ob die Verweise eines VBA-Projektes gültig sind
.Beschreibung
Beschreibung folgt.
.VBA-Code
Public Sub CheckReferences()
End Sub
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
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
Prüfen, ob ein bestimmter Name bereits von einem anderen VBA-Projekt verwendet wird
.Beschreibung
Beschreibung folgt.
.VBA-Code
Public Sub CheckProjectName()
End Sub
Merkmale eines VBA-Projektes auflisten
.Beschreibung
Beschreibung folgt.
.VBA-Code
Public Sub ListProjectSettings()
End Sub
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
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
.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
.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
.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
Microsoft Management Console starten
.Beschreibung
Beschreibung folgt.
MMC.exe liegt im Systemverzeichnis von Windows.
.VBA-Code
Sub RunMSManagementConsole()
Shell "mmc.exe", vbNormalFocus
End Sub
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
Arbeitsmappe über eine Datei-Verknüpfung (lnk-Datei) öffnen
.Beschreibung
...
.VBA-Code
Public Sub OpenWorkbookWithLinkFile()
End Sub
Verwandte Codebeispiele |
|
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 |
|
.Beschreibung
...
.VBA-Code
Public Sub SaveWorkbookAddToMRUList()
ActiveWorkbook.SaveAs Filename:="C:\Daten\EineMappe.xls", AddToMru:=True
End Sub
Verwandte Codebeispiele |
|
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
.Beschreibung
...
.VBA-Code
Public Sub SaveWorkbookReadOnlyRecommended()
ActiveWorkbook.SaveAs Filename:="C:\Daten\EineMappe.xls",
ReadOnlyRecommended:=True
End Sub
Verwandte Codebeispiele |
|
|
Arbeitsmappe als Vorlage speichern
.Beschreibung
...
.VBA-Code
Public Sub SaveWorkbookAsTemplate()
End Sub
Verwandte Codebeispiele |
|
Arbeitsmappe als Vorlage ohne externe Datenbezüge speichern
.Beschreibung
...
.VBA-Code
Public Sub SaveAsTemplateWithoutExternalData()
End Sub
Verwandte Codebeispiele |
|
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 |
|
|
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
.Beschreibung
Mit diesem Beispiel wird das Fenster einer anderen Anwendung
gesperrt.
.VBA-Code
Public Sub LockWindow()
End Sub
Verwandte Codebeispiele |
|
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 |
|
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 |
|
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 |
|
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 |
|
Verschieben eines anderen Anwendungsfensters sperren
.Beschreibung
...
.VBA-Code
Public Sub LockMoveWindow()
End Sub
Verwandte Codebeispiele |
|
Ändern der Grösse eines anderen Anwendungsfensters sperren
.Beschreibung
...
.VBA-Code
Public Sub LockResizeWindow()
End Sub
Verwandte Codebeispiele |
|
Minimieren/Maximieren/Wiederherstellen eines anderen Anwendungsfensters sperren
.Beschreibung
...
.VBA-Code
Public Sub LockChangeWindowState()
End Sub
Verwandte Codebeispiele |
|
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 |
|
Ä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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Datei öffnen-Dialog anzeigen und einen Dateityp-Filter voreinstellen
.Beschreibung
...
.VBA-Code
Public Sub ShowOpenDialogAndSetFilter()
End Sub
Verwandte Codebeispiele |
|
Datei öffnen-Dialog anzeigen und die den Suchkriterien entsprechenden Dateien auflisten
.Beschreibung
...
.VBA-Code
Public Sub ShowOpenDialogWithFoundFiles()
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
.VBA-Code
Public Sub ShowOpenDialogWithFoundFiles()
End Sub
Verwandte Codebeispiele |
|
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
.Beschreibung
...
.VBA-Code
Public Sub OpenWorkbookWithCalculation()
End Sub
Verwandte Codebeispiele |
|
|
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 |
|
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 |
|
.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 |
|
|
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 |
|
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
.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 |
|
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
.Beschreibung
Dieser Programmcode gibt die gewohnte Schreibweise eines
UNC-Dateipfades aus.
.VBA-Code
Public Sub GetPathOfUNCPath()
End Sub
Verwandte Codebeispiele |
|
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 |
|
Anzahl Revisionen einer freigegebenen Arbeitsmappe abfragen
.Beschreibung
...
.VBA-Code
Public Sub GetNumberOfRevisions()
End Sub
Verwandte Codebeispiele |
|
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 |
|
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
.Beschreibung
...
.VBA-Code
Public Sub ConvertHyperlinkToAbsolutePath()
End Sub
Verwandte Codebeispiele |
|
|
Verfügbare Excel-Vorlagen (xlt-Dateien) auflisten
.Beschreibung
...
.VBA-Code
Public Sub ListAvailableTemplates()
End Sub
Verwandte Codebeispiele |
|
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 |
|
|
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
Dateiname des aktuellen Office-Assistenten ermitteln
.Beschreibung
...
.VBA-Code
Public Sub GetAssistantFileName()
End Sub
Verwandte Codebeispiele |
|
|
Dateiname des aktuellen Office-Assistenten ohne ein Microsoft Office-Programm ermitteln
.Beschreibung
...
.VBA-Code
Public Sub GetAssistantFileName()
End Sub
Verwandte Codebeispiele |
|
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 |
|
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 |
|
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
.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 |
|
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 |
|
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 |
|
Profil-Verzeichnisse der Windows-Benutzer abfragen
.Beschreibung
...
.VBA-Code
Public Sub GetUserProfilDirectories()
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
.VBA-Code
Public Sub GetCPUType()
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
.VBA-Code
Public Sub ListCPUProperties()
End Sub
Verwandte Codebeispiele |
|
Anzahl CPUs des Computers abfragen
.Beschreibung
...
.VBA-Code
Public Sub GetNumberOfCPUs()
End Sub
Verwandte Codebeispiele |
|
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
CLSID einer Dokument-Datei abfragen
.Beschreibung
...
CLSID = ClassID
.VBA-Code
Public Sub GetDocumentCLSID()
End Sub
Verwandte Codebeispiele |
|
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 |
|
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 |
|
Dateisymbol einer Datei anzeigen
.Beschreibung
...
(siehe FileInfo.vbp)
.VBA-Code
Public Sub ShowFileIcon()
End Sub
Verwandte Codebeispiele |
|
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
.Beschreibung
...
(siehe DSOFile-Codebeispiele.xls)
.VBA-Code
Public Sub ShowDocumentFileIcon()
End Sub
Verwandte Codebeispiele |
|
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(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 |
|
Standardsymbol (DefaultIcon) eines Dateityps/ProgID anzeigen
.Beschreibung
...
.VBA-Code
Public Sub ShowFileTypeDefaultIcon()
End Sub
Verwandte Codebeispiele |
|
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
.Beschreibung
...
.VBA-Code
Public Sub ShowWorkbookPreviewPicture()
End Sub
Verwandte Codebeispiele |
|
|
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 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 |
|
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Prüfen, ob ein Fenstertitel mehrfach vorhanden ist
.Beschreibung
...
.VBA-Code
Public Sub CheckWindowTitle()
End Sub
Verwandte Codebeispiele |
|
Beenden von Microsoft Excel sperren
.Beschreibung
...
.VBA-Code
Public Sub DisableExcelQuit()
End Sub
Verwandte Codebeispiele |
|
Beenden des VBA-Editors sperren
.Beschreibung
...
.VBA-Code
Public Sub DisableVBEQuit()
End Sub
Verwandte Codebeispiele |
|
Beenden einer anderen Anwendung sperren
.Beschreibung
...
.VBA-Code
Public Sub DisableAppQuit()
End Sub
Verwandte Codebeispiele |
|
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 |
|
ProcessID eines laufenden Windows-Prozesses ermitteln
.Beschreibung
...
(noch keine Lösung)
.VBA-Code
Public Sub GetProcessID()
End Sub
Verwandte Codebeispiele |
|
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 |
|
Fenstertitel zu einem Fenster-Handle (hwnd) ermitteln
.Beschreibung
...
.VBA-Code
Public Sub GetWindowTitle()
End Sub
Verwandte Codebeispiele |
|
ProcessID zu einem Fenster-Handle (hwnd) ermitteln
.Beschreibung
...
.VBA-Code
Public Sub GetProcessID()
End Sub
Verwandte Codebeispiele |
|
ThreadID zu einem Fenster-Handle (hwnd) ermitteln
.Beschreibung
...
.VBA-Code
Public Sub GetThreadID()
End Sub
Verwandte Codebeispiele |
|
ProcessID zu einem Fenstertitel ermitteln
.Beschreibung
...
.VBA-Code
Public Sub GetProcessID()
End Sub
Verwandte Codebeispiele |
|
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 |
|
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 |
|
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
.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 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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Funktionstasten für die aktuelle Excel-Sitzung sperren
.Beschreibung
...
.VBA-Code
Public Sub LockFunctionKeys()
End Sub
Verwandte Codebeispiele |
|
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
.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 |
|
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 |
|
.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
.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 |
|
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
.Beschreibung
...
Liegt im XlStart-Ordner.
.VBA-Code
Public Sub CheckSheetTemplate()
End Sub
Verwandte Codebeispiele |
|
.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 |
|
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 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
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
.Beschreibung
...
.VBA-Code
Public Sub AddWorksheet()
End Sub
Verwandte Codebeispiele |
|
Mehrere Arbeitsblätter hinzufügen
.Beschreibung
...
.VBA-Code
Public Sub AddWorksheets()
End Sub
Verwandte Codebeispiele |
|
|
Arbeitsblätter einer anderen Arbeitsmappe einer Arbeitsmappe hinzufügen
.Beschreibung
...
.VBA-Code
Public Sub AddWorksheets()
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
.VBA-Code
Public Sub AddWorksheets()
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
.VBA-Code
Public Sub AddWorksheets()
End Sub
Verwandte Codebeispiele |
|
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 |
|
Weitere Informationen |
|
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 |
|
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
.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 |
|
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 |
|
|
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 |
|
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 |
|
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 |
|
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 |
|
Module eines VBA-Projektes in ein anderen VBA-Projekt kopieren
.Beschreibung
...
.VBA-Code
Public Sub CopyProjectModule()
End Sub
Verwandte Codebeispiele |
|
Öffnen einer anderen Arbeitsmappe erkennen
.Beschreibung
...
.VBA-Code
Public Sub CheckEvent()
End Sub
Verwandte Codebeispiele |
|
Speichern einer anderen Arbeitsmappe erkennen
.Beschreibung
...
.VBA-Code
Public Sub CheckEvent()
End Sub
Verwandte Codebeispiele |
|
Schliessen einer anderen Arbeitsmappe erkennen
.Beschreibung
...
.VBA-Code
Public Sub CheckEvent()
End Sub
Verwandte Codebeispiele |
|
Anlegen einer neuen Arbeitsmappe erkennen
.Beschreibung
...
.VBA-Code
Public Sub CheckEvent()
End Sub
Verwandte Codebeispiele |
|
Installieren eines Add-Ins erkennen
.Beschreibung
...
.VBA-Code
Public Sub CheckEvent()
End Sub
Verwandte Codebeispiele |
|
Deinstallieren eines Add-Ins erkennen
.Beschreibung
...
.VBA-Code
Public Sub CheckEvent()
End Sub
Verwandte Codebeispiele |
|
Hinzufügen eines Arbeitsblattes einer anderen Arbeitsmappe erkennen
.Beschreibung
...
.VBA-Code
Public Sub CheckEvent()
End Sub
Verwandte Codebeispiele |
|
Löschen eines Arbeitsblattes einer anderen Arbeitsmappe erkennen
.Beschreibung
...
.VBA-Code
Public Sub CheckEvent()
End Sub
Verwandte Codebeispiele |
|
.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 |
|
.Beschreibung
...
.VBA-Code
Public Sub PlayVideoFile()
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
.VBA-Code
'Deklarationsbereich
Declare Sub MessageBeep Lib "User32" (ByVal N As
Integer)
'Codemodul
Public Sub PlaySound()
MessageBeep 0
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
.VBA-Code
Public Sub PlaySound()
Beep
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
.VBA-Code
Public Sub PlayMusicCD()
End Sub
Verwandte Codebeispiele |
|
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 |
|
.Beschreibung
...
HKEY_CURRENT_USER\Volatile Environment
.VBA-Code
Public Sub GetEnvironmentVariable()
MsgBox
CreateObject("WScript.Shell").Environment("VOLATILE")("Parameter1")
End Sub
Verwandte Codebeispiele |
|
.Beschreibung
...
Laufzeitfehler -2147024894 "Umgebungsvariable "<Variable>" kann nicht entfernt werden".
.VBA-Code
Public Sub RemoveEnvironmentVariable()
End Sub
Verwandte Codebeispiele |
|
Anzahl Umgebungsvariablen ermitteln
.Beschreibung
...
.VBA-Code
Public Sub CountEnvironmentVariables()
End Sub
Verwandte Codebeispiele |
|
.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 |
|
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
.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 |
|
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 |
|
Auslastungsgrad (Nutzung) des physischen Speichers ermitteln
.Beschreibung
...
.VBA-Code
Public Sub GetMemoryUsage()
End Sub
Verwandte Codebeispiele |
|
|
Auslastungsgrad (Nutzung) der Speicherauslagerungsdatei ermitteln
.Beschreibung
...
.VBA-Code
Public Sub GetPageFileUsage()
End Sub
Verwandte Codebeispiele |
|
|
Excel beenden mit Schliessen aller Arbeitsmappen ohne Ausführen von Ereignisprozeduren
.Beschreibung
...
.VBA-Code
Public Sub QuitExcelWithoutEvents()
End Sub
Verwandte Codebeispiele |
|
|
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 speichern
.Beschreibung
...
.VBA-Code
Public Sub CloseWorkbooksAndQuitExcel()
End Sub
Verwandte Codebeispiele |
|
|
Schliessen einer Arbeitsmappe ohne Ausführung von VBA-Code im BeforeClose-Ereignis
.Beschreibung
...
.VBA-Code
Public Sub CloseWorkbookWithoutEvents()
End Sub
Verwandte Codebeispiele |
|
|
Schliessen einer Arbeitsmappe verhindern
.Beschreibung
...
.VBA-Code
Public Sub DisableCloseWorkbook()
End Sub
Verwandte Codebeispiele |
|
Schliessen eines Arbeitsmappenfensters verhindern
.Beschreibung
...
.VBA-Code
Public Sub DisableCloseWorkbookWindow()
End Sub
Verwandte Codebeispiele |
|
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 |
|
Ö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
.Beschreibung
...
.VBA-Code
Public Sub Code()
End Sub
Verwandte Codebeispiele |
|
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 |
|
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 |
|
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 |
|
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
.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 |
|
|
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
.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)
.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 |
|
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 |
|
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
.Beschreibung
...
.VBA-Code
Public Sub ShowNameBoxDropDownList()
End Sub
Verwandte Codebeispiele |
|
|
Breite der DropDown-Liste des Namenfeldes von Microsoft Excel ändern
.Beschreibung
...
.VBA-Code
Public Sub ChangeNameBoxDropDownListWidth()
End Sub
Verwandte Codebeispiele |
|
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
.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 |
|
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 |
|
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
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 |
|
|
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
.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 |
|
|
.Hinweis
Es ist auch möglich, die Benutzer-Reaktion genauer
auszuwerten. Alles zu diesem Thema erfahren Sie hier:
Tipp!
Mit dem Utility "Windows-Analyzer" erhalten Sie schnell und
einfach Window Handles und Class Names von Main Windows und Child Windows.
Zuletzt aktualisiert
am 3.03.2006 / 21:00 Uhr
© 2002-2006 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten