Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler beim Kompilieren

Fehler beim Kompilieren
04.08.2017 09:17:53
Fred
Hallo Experten,
wenn ich mit Office 2016 / 64-Bit meine Excelmappe ( erstellt mit Office 2010) öffne, erscheinen sofort Fehlerhinweise.
Beispiel;
Fehler beim Kompilieren
Der Code muss auf 64-Bit-Systemen aktualisiert werden. Überarbeiten und aktualisieren Sie Declaire-Anweisungen und markieren Sie sie mit PtrSafe-Attribut.
Beispiel-Code
Private Declare Function beep _
Lib "kernel32" _
Alias "Beep" (ByVal dwFreq As _
Long, ByVal dwDuration As _
Long) As Long
Kann mir jemand sagen, wie ich vorzugehen habe?
mit freundlichen Gruß
Fred
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim Kompilieren
04.08.2017 09:53:29
Sven
So viel ich weiss, wird das nicht mehr unterstützt und Du musst den Sound manuell implementieren:
z.B.:
Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String,  _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
Sub TestPlaySound
PlaySound "C:\windows\media\windows ding.wav", 0, 0
End sub
Bin mir jetzt aber nicht zu 100% sicher.
Anzeige
AW: Fehler beim Kompilieren
04.08.2017 10:43:14
mumpel
"Beep" funktioniert schon noch. Muss nur umgestellt werden, Stichwort PtrSafe.
AW: Fehler beim Kompilieren
04.08.2017 10:42:00
mumpel
Hallo!
#If Win64 Then
  Private Declare PtrSafe Function beep Lib "kernel32" Alias "Beep" _
                                            (ByVal dwFreq As LongPtr, _
                                             ByVal dwDuration As LongPtr) As LongPtr
#Else
  Private Declare Function beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, _
                                                             ByVal dwDuration As Long) As Long
#End If

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß, René
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehler beim Kompilieren in Excel VBA auf 64-Bit-Systemen


Schritt-für-Schritt-Anleitung

Wenn Du bei der Nutzung von Excel VBA auf einem 64-Bit-System den Fehler beim Kompilieren siehst, musst Du einige Anpassungen vornehmen. Hier sind die Schritte, die Du befolgen solltest:

  1. Öffne Deine Excel-Datei in Office 2016 oder höher.
  2. Öffne den Visual Basic for Applications (VBA) Editor durch Drücken von ALT + F11.
  3. Finde die Declaire-Anweisungen in Deinem Code. Diese könnten etwa so aussehen:
    Private Declare Function beep _
    Lib "kernel32" _
    Alias "Beep" (ByVal dwFreq As _
    Long, ByVal dwDuration As _
    Long) As Long
  4. Aktualisiere die Declaire-Anweisungen. Füge das PtrSafe-Attribut hinzu:
    #If Win64 Then
    Private Declare PtrSafe Function beep _
    Lib "kernel32" _
    Alias "Beep" (ByVal dwFreq As LongPtr, _
    ByVal dwDuration As LongPtr) As LongPtr
    #Else
    Private Declare Function beep _
    Lib "kernel32" _
    Alias "Beep" (ByVal dwFreq As Long, _
    ByVal dwDuration As Long) As Long
    #End If
  5. Speichere Deine Änderungen und schließe den VBA-Editor.

Häufige Fehler und Lösungen

  • Fehler: Der Code in diesem Projekt muss für die Verwendung auf 64-Bit-Systemen aktualisiert werden.

    • Lösung: Stelle sicher, dass alle Declaire-Anweisungen das PtrSafe-Attribut enthalten.
  • Fehler: VBA gibt eine Fehlermeldung beim Kompilieren aus.

    • Lösung: Überprüfe, ob alle Variablen korrekt deklariert sind und ob die Datentypen mit LongPtr für 64-Bit-Systeme übereinstimmen.

Alternative Methoden

Falls das Beep-Geräusch nicht zwingend erforderlich ist, kannst Du auch alternative Methoden für die Soundausgabe verwenden. Eine gängige Methode ist die Verwendung der PlaySound-Funktion:

Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Sub TestPlaySound()
    PlaySound "C:\windows\media\windows ding.wav", 0, 0
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du die Beep-Funktion auf einem 64-Bit-System korrekt implementieren kannst:

#If Win64 Then
Private Declare PtrSafe Function beep _
Lib "kernel32" _
Alias "Beep" (ByVal dwFreq As LongPtr, _
ByVal dwDuration As LongPtr) As LongPtr
#Else
Private Declare Function beep _
Lib "kernel32" _
Alias "Beep" (ByVal dwFreq As Long, _
ByVal dwDuration As Long) As Long
#End If

Sub TestBeep()
    beep 1000, 500 ' Frequenz 1000 Hz für 500 ms
End Sub

Tipps für Profis

  • Verwende die #If Win64-Anweisung, um sicherzustellen, dass Dein Code sowohl auf 32-Bit- als auch auf 64-Bit-Systemen funktioniert.
  • Überprüfe regelmäßig Deinen VBA-Code, um sicherzustellen, dass er mit den neuesten Versionen von Excel kompatibel ist.
  • Teste Deine Änderungen in einer sicheren Umgebung, um unerwartete Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Was ist das PtrSafe-Attribut?
Das PtrSafe-Attribut ist erforderlich, um sicherzustellen, dass der VBA-Code auf 64-Bit-Systemen korrekt funktioniert.

2. Wie kann ich meine Excel-Datei auf 64-Bit-Kompatibilität überprüfen?
Öffne den VBA-Editor und überprüfe die Declaire-Anweisungen auf das Vorhandensein des PtrSafe-Attributs.

3. Was tun, wenn ich weiterhin Fehler beim Kompilieren erhalte?
Stelle sicher, dass alle Declaire-Anweisungen aktualisiert wurden und dass Du die richtigen Datentypen für 64-Bit-Systeme verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige