Brauchen Sie Hilfe?
Web:     Online-Formular
E-Mail:  
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
Tel:       +49(0)151 / 164 55 914

Nutzen Sie für Ihre Anfrage unser Online-Formular oder senden Sie uns eine E-Mail an Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!. Gerne können Sie aber auch direkt telefonisch Kontakt aufnehmen.

   
     Referenzen
 Bosch 
  T-Systems
  Hagebau
  Siemens
 Areva  VW
 Haufe-Lexware  British American Tobacco
  nagel group farbe
   

Verwendung von API Bibliotheken in Office 2010/2013 32bit und 64bit Versionen

Per VBA können API-Bibliotheken relativ einfach eingebunden werden. Bei einer API (Application Programming Interface) handelt es sich um DLL- oder EXE-Dateien die eine Schnittstelle zum Betriebssystem oder zu anderen Anwendungen darstellt. Per VBA können Daten über die API-Schnittstellen ausgetauscht werden um das Betriebssystem oder andere Anwendungen entsprechend zu steuern.

Mit Hilfe des folgenden VBA-Codes kann beispielsweise die aktuelle Bildschirmauflösung aus dem Betriebssystem ausgelesen werden.

 

Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Sub Bildschirmauflösung()
'** Bildschirmauflösung auslesen
gWidth = GetSystemMetrics(SM_CXSCREEN)
gHeight = GetSystemMetrics(SM_CYSCREEN)

'** Ausgabe
MsgBox "Bildschirmbreite: " & gWidth & vbLf & _
  "Bildschirmhöhe: " & gHeight
End Sub

Dieser Code funktioniert grundsätzlich in einer 32bit Office-Installationen.

Sobald dieser Code mit einer 64bit Office-Version aufgerufen wird kommt es zu folgender Fehlermeldung:

(Fehler beim Kompilieren: Der Code in diesem Projekt muss für die Verwendung auf 64-Bit-Systemen aktualisiert werden. Überarbeiten und aktualisieren Sie Declare-Anweisungen, und markieren  Sie sie mit dem PtrSafe-Attribut.)

Wenn der oben aufgeführte Code in einer 64bit Office-Version verwendet werden soll, ist nur eine kleine Anpassung erforderlich. Die Declare Funktion Anweisung wird einfach um das Attribut PtrSafe erweitert. Die dritte Codezeile sieht nach der Anpassung für ein 64bit System wie folgt aus:

Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Mit dieser Anpassung läuft der Code sowohl unter einer 32bit als auch unter einer 64bit Office-Version.

Der gesamte Code für die 64bit Office-Installation sieht demnach folgendermaßen aus:

Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Sub Bildschirmauflösung()
'** Bildschirmauflösung auslesen
gWidth = GetSystemMetrics(SM_CXSCREEN)
gHeight = GetSystemMetrics(SM_CYSCREEN)

'** Ausgabe
MsgBox "Bildschirmbreite: " & gWidth & vbLf & _
  "Bildschirmhöhe: " & gHeight
End Sub

Hinweis:

Die Anpassung ist nur für 64bit Office-Versionen notwendig. Die Version des Betriebssystems ist dabei irrelevant. Wenn beispielsweise unter Windows 8 eine 32bit Office-Version installiert ist, kann der Zusatz PtrSafe entfallen.

   

Relevante Artikel

  • Tastencodes für die Funktion OnKey()

    108040 Möchten Sie bspw. das Makro "Test_Makro" über die Tastenkombination [Strg] + [t] starten, dann können Sie dies mit dem OnKey-Befehl per VBA erledigen. Gehen Sie dazu wie folgt vor. Erfassen Sie...

  • UserName ermitteln

    Dieses Makro liest den UserName (Benutzernamen) des eingeloggten Benutzers aus. Dies ist für Dateien/Programme interessant, die nur für bestimmte Benutzer freigegeben werden sollen. Damit lässt sich eine...

  • Gruppieren und Filtern trotz Blattschutz

    Sobald der Blattschutz aktiviert ist, gibt es keine Möglichkeit mehr, die Gruppierungsfunktion bzw. die Autofilterfunktion über Excel-Standards zu nutzen. Gleichgültig, welche Schutzoption aktiviert bzw....

  • Funktion zur gleichzeitigen Addition und Multiplikation

    112017 Diese Funktion addiert die beiden angegebenen Wert und multipliziert sie in diesem Fall mit 2! In der Tabelle ist einfach folgendes einzugeben:=summemult(a1;a3)Public Function summemult(Wert1, Wert2)    summemult = (CDbl(Wert1) + CDbl(Wert2)) * 2End FunctionDieser Code ist...

  • Sicherheitseinstellungen für Makros

    Nachfolgend erhalten Sie eine Übersicht über die Einstellmöglichkeiten der Makrosicherheit in den unterschiedlichen Excel-Versionen: Die jeweiligen Einstellungen können Sie wie folgt verändern:...

   

Excel-Inside auf Facebook Excel-Live News blog Excel-Inside RSS-Feed Twitter Account für Excel-Inside Mail an Excel-Inside 

Programmierung
Excel Auftragsprogrammierung Access Auftragsprogrammierung
Word Auftragsprogrammierung Outlook Auftragsprogrammierung
   
Unsere Produkte
Office Schulungen VBA, Excel, Access
E-Book Formeln und Funktionen Excel 2013