Live-Forum - Die aktuellen Beiträge
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
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
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
Entdecke mehr
Finde genau, was du suchst

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

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige