Clever-Excel-Forum

Normale Version: Problem mit Excel 2019 64Bit
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
habe schon mit google und hier gesucht aber keine Lösung gefunden.

Ich habe vor ein paar Jahren für die kleine Firma eines Bekannten eine Anwesenheits/Ulraub/usw VBA Excel Datei gemacht.
Die lief auch sehr gut, bis ich vor kurzem einen Anruf bekam. Neue Rechner wurden angeschaft und auf diesen ist die 64bit version von Excel 2019.
Auf alten Systemen mit Excel 2010 32bit und meinem PC Zuhause mit Excel 2019 32bit läuft die Datei immernoch problemlos.

"Long" wurde bereits zu "LongPtr" geändert. "PtrSafe" wurde vor "Function" eingefügt. Andere Änderungen sind mir im moment nicht bekannt.

In Excel 2019 64bit bekommen wir "Runtime Error 40036"
Debug bringt uns zu

AltesWorkbook.Worksheets("Stammdaten").Range("B393:G411").Copy

Tabellenname und Range sind korrekt. Und auch der Rest des codes sieht wie in älteren Dateien aus.
Mehr details kann ich später posten (sind halt nicht meine privaten Dateien). Kann vielleicht jemand schon sag warum dass in 64bit nicht läuft?

Vielen Dank
Hallo

Muss es unbedingt 64 bit sein?

https://answers.microsoft.com/de-de/msof...8507a674a4

Gruss Guschti
Hallo,

wie wird AltesWorkbook gesetzt?

Gruß Uwe
Ich hab auch 32bit vorgeschlagen aber der Chef möchte 64bit für "Zukunftssicherheit usw".
Weiß nicht ob wir den umstimmen können, deshalb wenn irgentwie möchlich muss es in 64bit laufen Confused

(15.01.2020, 21:19)Kuwer schrieb: [ -> ]Hallo,

wie wird AltesWorkbook gesetzt?

Gruß Uwe

Hallo, hier der code der "Import" UserForm

Code:
Private Sub CommandButton_Beides_Click()

Unload UserForm_Import
Unload UserForm_Menu

Dim Datei As Variant
        Dim AltesWorkbook As Workbook
        Dim AkuellesWorkbook As Workbook
       
        Set AkuellesWorkbook = ThisWorkbook
       
        Application.EnableEvents = False
       
        Datei = Application.GetOpenFilename("Excel-Dateien(*.xl*),*.xl*")
        If Datei = False Then Exit Sub
        Set AltesWorkbook = Workbooks.Open(Filename:=Datei)
       
        AltesWorkbook.Worksheets("Stammdaten").Range("B393:G411").Copy
        AkuellesWorkbook.Worksheets("Stammdaten").Range("B33:G51").PasteSpecial Paste:=xlPasteValues
       
       
        AltesWorkbook.Worksheets("Stammdaten").Range("J393:J411").Copy
        AkuellesWorkbook.Worksheets("Stammdaten").Range("J33:J51").PasteSpecial Paste:=xlPasteValues
       
       

        AltesWorkbook.Worksheets("Stammdaten").Range("B3:G21").Copy
        AkuellesWorkbook.Worksheets("Stammdaten").Range("B3:G21").PasteSpecial Paste:=xlPasteValues
       
       

        Application.CutCopyMode = False
       

        AltesWorkbook.Close SaveChanges:=False
       

        Application.EnableEvents = True
               
        Set AltesWorkbook = Nothing
      

Range("A1").Activate
UserForm_Menu.Show

End Sub
Hallöchen,


Zitat:Auf alten Systemen mit Excel 2010 32bit und meinem PC Zuhause mit Excel 2019 32bit läuft die Datei immernoch problemlos.


ich erinnere mich daran, daß es eine Zeit gab, in der sogar MS vor dem Einsatz der eigenen 64Bit-Versionen gewarnt hat.
Inzwischen ist es wohl so, daß man die Bevölkerung immer häufiger lieber mit verschiedensten "neuen" Versionen bombardiert
anstatt einmal eine funktionierende Version zur Verfügung zu stellen.

Wäre ich Dein Chef, würde ich die 32bit Version installieren lassen. Das erspart Magengeschwüre
Hallo,

am Code sollte es nicht liegen.

Hast Du es mal in einer neuen Datei getestet, am besten mal direkt in einem allgemeinen Modul?

Gruß Uwe
(15.01.2020, 23:07)Kuwer schrieb: [ -> ]Hallo,

am Code sollte es nicht liegen.

Hast Du es mal in einer neuen Datei getestet, am besten mal direkt in einem allgemeinen Modul?

Gruß Uwe

Ja, leider gleicher Fehler
Hi,

habe nochmal mit den Kollegen gesprochen und der Chef möchte wirklick bei 64bit blieben.
Hat noch jemand Ideen oder Vorschläge zur Lösung des Problems?
Hallo,

Du könntest probieren ...

Code:
Set AltesWorkbook = Workbooks.Open(Filename:=Datei)

durch folgendes zu ersetzen ...

Code:
Application.Workbooks.Open Filename:=Datei
Set AltesWorkbook = Application.Workbooks(Application.Workbooks.Count)

Ausserdem vielleicht einmal im VBA-Editor Debuggen / Kompilieren wählen und schauen, ob dann eine Fehlermeldung erscheint.
Und, solltest Du Windows API Funktionen verwendet haben, ist es nicht nur damit getan, Long durch LongPtr usw.
zu ersetzen. Es gibt z.B. API's die unterscheiden sich tatsächlich zwischen 32 und 64 Bit.

Gruß