Windows 32 und 64bit
06.05.2013 09:28:38
Mark
ich habe ein Excel-Dokument das zentral auf einem Server liegt. Mehrere Nutzer können das Dokument öffnen und bearbeiten, speichern, usw..
Leider haben die Nutzer verschiedene Excel Versionen (2003-2010) und jetzt auch verschiedene Bit-Systeme (32+64bit).
Für das Programm habe ich ein VBA-Code von Hajo benutzt. Dieser basiert scheinbar auf einem 32bit Programmiercode. Wenn ich die Datei mit einem 64bit Rechner öffnen möchte, erscheint eine Fehlermeldung (siehe unten).
Gibt es eine Möglichkeit, dass die Datei von 32 und 64 bit Systemen geöffnet werden kann?
Zum besseren Verständnis - hier die Fehlermeldung:
... und hier der Code:
Option Explicit ' Variablendefinition erforderlich
Option Private Module ' damit Makros nich von Hand gestartet werden können
'**************************************************
'* H. Ziplies *
'* 12.08.10 *
'* erstellt von HajoZiplies@web.de *
'* http://Hajo-Excel.de/
*
'* abgeändert von Nepumuk 23.05.2004 *
'* Userform immer im Vordergrund *
'**************************************************
Public Declare
Function FindWindow Lib "User32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public 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 SetActiveWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Public Enum Parameter
HWND_TOPMOST = -1
SWP_NOSIZE = &H1
SWP_NOMOVE = &H2
SWP_NOACTIVATE = &H10
SWP_SHOWWINDOW = &H40
End Enum
Public DaEt As Date ' Prüfzeit für Eingabe in der Tabelle
Public DaET1 As Date ' Prüfzeit für Reaktion in Userform
Public DaET2 As Date ' Zeit zum Wechsel der Anzeige
Public BoZu As Boolean ' Variable Zustand
Public Const DaZeit As Date = "00:00:40" ' Zeitabstand prüfen, Eingabe Tabelle
Public Const DaZeit1 As Date = "00:00:30" ' Zeitabstand prüfen, Userform
Public Const DaZeit2 As Date = "00:00:01" ' Zeitabstand für Restzeit
Public BoEnde As Boolean ' Variable Beenden
Sub Zeitmakro() ' Zeitmakro Eingabe Tabelle
BoZu = False
' Fehlerbehandlung ausschalten
On Error Resume Next
' Makro anhalten
Application.OnTime EarliestTime:=DaET1, Procedure:="Zeitmakro", Schedule:=False
' Fehlerbehandlung einschalten
On Error GoTo 0
' neue Startzeit setzen
DaEt = Now + DaZeit
' Makro zum festgelegten Zeitpunkt starten
Application.OnTime DaEt, "Start"
End Sub
Sub Start() ' Zeitmakro Anzeige Userform
DaET1 = Now + DaZeit1 ' Zeit für das schließen der Datei festlegen
Application.OnTime DaET1, "Schließen" ' Makro zum festgelegten Zeitpunkt starten
SetActiveWindow FindWindow("xlMain", vbNullString)
frm_Abfrage.Show ' UserForm starten
End Sub
Sub Schließen()
'Unload UserForm1
If BoZu = False Then
ThisWorkbook.Save ' Datei speichern
' falls nur eine Datei auf Excel schließen
' ess erfolgt eine Abfrage zum speichern
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End If
End Sub
Sub Zeitabstand() ' Makro für laufende Zeit in UserForm
With frm_Abfrage
' neue Zeit auf das Label schreiben
.LbL_Zeit.Caption = "Restzeit: " & CDate(CDate(Right(.LbL_Zeit.Caption, 8)) _
- DaZeit2)
' Prüfen ob Zeit abgelaufen ist
If CDate(Right(.LbL_Zeit.Caption, 8)) > 0 Then
' neue Startzeit setzen
DaET2 = Now + DaZeit2
' Makro zum festgelegten Zeitpunkt starten
Application.OnTime DaET2, "Zeitabstand"
End If
End With
End Sub