Registriert seit: 15.01.2020
Version(en): 2019+2010
15.01.2020, 22:08
(Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2020, 22:08 von MMMM.)
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
Registriert seit: 15.08.2017
Version(en): 2016
Der Künstler lebt auch vom Applaus
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
wie wird AltesWorkbook gesetzt?
Gruß Uwe
Registriert seit: 15.01.2020
Version(en): 2019+2010
15.01.2020, 22:20
(Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2020, 22:25 von MMMM.)
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

(15.01.2020, 22: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
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 15.01.2020
Version(en): 2019+2010
(16.01.2020, 00: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
Registriert seit: 15.01.2020
Version(en): 2019+2010
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?
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
18.01.2020, 18:11
(Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2020, 18:11 von maninweb.)
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ß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner