Thema Datum  Von Nutzer Rating
Antwort
Rot Excel VBA-Code soll auch auf 64 bit laufen
28.02.2016 12:04:25 bernd_franken
NotSolved
28.02.2016 18:01:05 Gast70278
NotSolved

Ansicht des Beitrags:
Von:
bernd_franken
Datum:
28.02.2016 12:04:25
Views:
1525
Rating: Antwort:
  Ja
Thema:
Excel VBA-Code soll auch auf 64 bit laufen
Hallo, ich habe eine komplexe Excel-Anwendung zur Bilanzanalyse, die leider "von oben" nicht mehr gepflegt wird. Aber es gibt viele Leute "an der Basis" die darauf angewiesen sind. Sie läuft problemlos auf Office-32-bit-Systemen, die aber kaum mehr einer hat. Bei 64 bit kommt folgende Fehlermeldung: "Fehler beim Kompilieren Der Code in diesem Projekt muß für die Verwendung auf 64-Bit-Systemen aktualisiert werden. Überarbeiten und aktualisieren Sie Declare-Anweisungen und markieren Sie sie mit dem PtrSafe-Attribut." Nun ist meine Hoffnung, daß vielleicht nur wenige Wörtchen ausgetauscht werden müssen und einer von Euch Freaks das erkennt. Hier der VBA-Code: Declare Function GetPrivateProfileStringA Lib "kernel32" _ (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) _ As Long Public FilePC1182ini As String Public CurrentProfile As String Public pfadtba As String Public XP As Boolean Dim StrDatenQuelle As String ' Name der Datei mit den Daten (absoluter Pfad) Public BIT32 As Boolean ' handelt es sich um ein 32bit-System Sub OSTest() pfadtba = "c:\Program Files (x86)" ' Unterscheidungsmerkmal zwischen Windows XP und höheren Versionen pfadtba = Dir(pfadtba, vbDirectory) If pfadtba = "" Then XP = True Else XP = False End If End Sub Sub Oeffnen_spool() Dim Zahl As Integer Dim BS As String Dim EXCEL_Version As String Dim Msg As String Dim Version Dim BenVer Dim mm Dim IniFile As String Dim ix, iy Dim myFenster Dim intRc As Integer Application.ScreenUpdating = False 'On Error GoTo Fehlerbehandlung ' Fehlerbehandlungsroutine aktivieren. Rem anhand der EXCEL-Versionsnummer wird festgestellt ob es ein 32bit oder ein 16bit EXCEL ist Rem EXCEL 5.x ist noch 16bit alles darüber ist bereits 32bit und benötigt dann entsprechend die 32bit DLL's Rem Über z.B Application.OperatingSystem kann man nicht prüfen da es sein kann, daß Rem auf einem 32BIT WINDOWS95 ein 16bit EXCEL läuft CurrentProfile = Environ$("USERPROFILE") FilePC1182ini = CurrentProfile & "\Appdata\Local\Virtualstore\Windows\PC1182$.ini" ' Unter Windows 7 wird Ablage für die PC1182$.ini von C:\Windows in das aktuelle Userprofil umgeleitet IniFile = "PC1182$.INI" Call OSTest 'BS = Application.Version 'EXCEL_Version = Mid$(BS, 1, 2) 'Zahl = Val(EXCEL_Version) 'If Zahl > 5 Then ' BIT32 = True Rem MsgBox "Es ist ein 32bit-System" & Zahl 'Else ' BIT32 = False Rem MsgBox "Es ist kein 32bit-System" & Zahl 'End If Rem Datei Pc1182.ini; i.d.R im Windows-Standardverzeichnis C:\NETWARE\WIN31\, bzw in NT in C:\WINNT Rem Version ist die Versionsnummer des EXCEL-Makros Version = 1 Rem Msg ist bis jetzt nur ein Pointer; hiermit wird jetzt Speicherplatz allokiert Msg = Space(255) 'If BIT32 Then ' intRc = GetPrivateProfileString32("EXCEL", "MSG", " ", Msg, 255, IniFile) 'Else ' intRc = GetPrivateProfileString("EXCEL", "MSG", " ", Msg, 255, IniFile) 'End If If XP Then intRc = GetPrivateProfileStringA("EXCEL", "MSG", " ", Msg, 255, IniFile) Else intRc = GetPrivateProfileStringA("EXCEL", "MSG", " ", Msg, 255, FilePC1182ini) ' --- Windows 7 Kompatibilität End If Rem MsgBox "In der INI-Datei wurde folgender Eintrag gefunden:" & Msg Rem Makroversion mit benötigter Version vergleichen + Fehlerhandlingix = InStr(Msg, "VER=") If ix = 0 Then ' GeheZu endmain End If mm = Mid$(Msg, ix + 4) iy = InStr(mm, " ") If iy <> 0 Then mm = Mid$(mm, 1, iy - 1) End If BenVer = Val(mm) If BenVer <> Version Then ' GeheZu endmain End If ix = InStr(Msg, "DATEN=") If ix = 0 Then ' GeheZu endmain End If mm = Mid$(Msg, ix + 6) iy = InStr(mm, " ") If iy <> 0 Then mm = Mid$(mm, 1, iy - 1) End If StrDatenQuelle = mm Workbooks.Open Filename:="JA_AUSDR.XLS", ReadOnly:=True, UpdateLinks:=0 Workbooks.Open Filename:="AUTOEING.XLS", ReadOnly:=True, UpdateLinks:=0 Workbooks.Open Filename:="BILANZH.XLS", ReadOnly:=True, UpdateLinks:=0 ' Workbooks.Open Filename:="OEKON_B.XLS", ReadOnly:=True, UpdateLinks:=0 ' auskommentiert 9.11.04, Datenübernahme entfällt, Wi. Statsatz_spool Windows("JA_BILAN.XLS").Activate End Sub ' Sub Statsatz_spool() Application.DisplayAlerts = False Application.ScreenUpdating = False Windows("JA_BILAN.XLS").Activate Sheets("Tabelle1").Select Columns("A:L").Select Selection.ClearContents Sheets("Tabelle3").Select Workbooks.OpenText Filename:=StrDatenQuelle, Origin:= _ xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _ :=xlDoubleQuote, ConsecutiveDelimiter:=False, _ Tab:=False, Semicolon:=True, Comma:=False, Space:= _ False, Other:=False, FieldInfo:=Array(Array(1, 1), _ Array(2, 1), Array(3, 1)) Löschen_Zeilen Columns("A:L").Select Selection.Copy Windows("JA_BILAN.XLS").Activate Sheets("Tabelle1").Select Columns("A:L").Select ActiveSheet.Paste ActiveWindow.ActivateNext ActiveWindow.Close Makro13 End Sub

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Excel VBA-Code soll auch auf 64 bit laufen
28.02.2016 12:04:25 bernd_franken
NotSolved
28.02.2016 18:01:05 Gast70278
NotSolved