Collapse column

Autor Thema: Limit Code-Größe  (Gelesen 2148 mal)

Offline RainerW

  • Newbie
  • *
  • Beiträge: 12
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2010
Limit Code-Größe
« am: Juni 19, 2017, 09:58:24 Vormittag »
Hallo,

ich habe folgendes Problem.

In einer Exceldatei habe ich mehrere Subs in einem Modul. Das Ganze ist sehr umfangreich (insgesamt ca. 4000 Programmzeilen).

Die Subs werden über einen Schedulerjob angestoßen. Neuerdings erhalte ich die Meldung am Server mit dem Schedulerjob:
"Fehler beim Kompilieren: Prozedur zu groß"

Wenn ich das ganze lokal auf meinem Rechner laufen lasse, erhalte ich die Fehlermeldung nicht.

Beide Maschinen laufen mit Excel 2010, auf dem Server allerdings die 32bit Version, auf meinem Rechner 64bit.

Ich kann natürlich (mit einigem Aufwand) die kritische Sub in mehrere Subs aufteilen um das Problem zu umgehen. Allerdings wüsste ich gerne, wo genau mein Problem liegt. Dazu finde ich leider nirgendwo folgende Informationen:
- Unterschied in der 64k Kompilatgröße bei 32-/64bit Versionen?
- wo kann ich die Größe des erzeugten Kompilats feststellen (Anzahl von Zeilen sind ja beliebig und haben nichts mit dem ausführbaren Code zu tun)?

Ich bin über jeden Hinweis dankbar!

Vielen Dank und Grüße
Rainer
Wo ich bin, ist oben und vorn!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline lupo1

  • Sr. Member
  • ****
  • Beiträge: 250
    • Profil anzeigen
  • Office-KnowHow: Anfänger
  • VBA-KnowHow- : Ohne
  • Version [Office] : Office 2010
Antw: Limit Code-Größe
« Antwort #1 am: Juni 19, 2017, 20:04:02 Nachmittag »
Vermutlich kannst Du den Code auch inhaltlich stark kürzen.

Keine Antwort auf Deine Code-Größen-Frage.
MfG Lupo1 (und natürlich gern auch Hallo!)

Offline RainerW

  • Newbie
  • *
  • Beiträge: 12
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2010
Antw: Limit Code-Größe
« Antwort #2 am: Juni 20, 2017, 08:26:38 Vormittag »
Hallo Lupo1,

Danke für den Hinweis. Wie immer ist der Code optimierbar. Da ich aber bis auf wenige Ausnahmen keinen Makrorecorder-Code verwende und versuche, einigermaßen effektiv zu programmieren, ist das Kürzungspotential mit meinen Mitteln nicht stark sondern ehr mäßig.

Ich bin schon dabei, die betroffene Prozedur in zwei aufzuteilen. Mich interessiert einfach nur, warum das auf einem Rechner funktioniert und auf dem andern nicht (mich machen Zufallsergebnisse immer ein wenig nervös). Ferner würde ich auch gerne sehen, inwieweit ich die 64k bereits ausnutze. Dann könnte ich bzw. man reagieren, bevor eine Auswertung auf die Bretter geht.

BG, Rainer
Wo ich bin, ist oben und vorn!

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw: Limit Code-Größe
« Antwort #3 am: Juni 20, 2017, 09:32:05 Vormittag »
Hallo,

meines Wissens ist die 64K-Begrenzung unabhängig von der Bit-Version für Office.
Was den Fehler betrifft, schau' mal hier...

https://support.microsoft.com/en-us/help/983044/-compile-error-procedure-too-large-error-message-when-you-try-to-run-a-vba-macro-in-a-32-bit-version-of-an-office-2010-program

Besagt letztlich, entwickle die VBA-Anwendung mit einer 32-Bit-Office-Version.
Das Aufteilen kann zudem nicht schaden.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline RainerW

  • Newbie
  • *
  • Beiträge: 12
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2010
Antw: Limit Code-Größe
« Antwort #4 am: Juni 20, 2017, 11:13:39 Vormittag »
Hallo maninweb,

vielen Dank für Deine Hilfe!

Das Ergebnis ist aber ein Armutszeugnis seinens Microsoft. Als Entwickler soll ich eine 32bit Version zum Entwickeln benutzen, kann also keine 64bit optimierte Version nutzen, wenn es z. B. um große Datenmengen geht. Das geht nicht an mich.

Aber was soll es, Microsoft wird das soviel interessieren wie der berühmte Sack Reis, der in China aufplatzt ...

Nochmal Danke

BG, Rainer
Wo ich bin, ist oben und vorn!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw: Limit Code-Größe
« Antwort #5 am: Juni 20, 2017, 11:27:39 Vormittag »
Hallo Rainer,

naja, man muss auch bedenken, dass VBA zu einer Zeit entwickelt wurde, wo von 64 Bit noch geträumt wurde.
VBA ist in diesem Sinne letztlich eine veraltete Technologie, weshalb MS - so denke ich mal - nicht mehr allzu
viel darin investieren wird und sich eher um die Pflege kümmert, wie z.B. Anbinden neuer Excel-Features
oder Sicherheitspatches usw. Und VBA bleibt uns auch sicherlich noch eine ganze Weile erhalten.

Gruß
« Letzte Änderung: Juni 20, 2017, 11:30:04 Vormittag von maninweb »
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline RainerW

  • Newbie
  • *
  • Beiträge: 12
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2010
Antw: Limit Code-Größe
« Antwort #6 am: Juni 20, 2017, 14:21:39 Nachmittag »
Hallo maninweb,

ja ja, ich weiß - ich bin mal wieder zu wenig nachsichtig  8)

Bin halt nur der Meinung, dass dies einem modernen System nicht gerecht wird.

Natürlich will ich nicht nachtreten - aber die 64k Grenze erinnert mich doch stark an MS-DOS  :P
Scheint wirklich schon etwas in die Jahre gekommen zu sein.

Was ist denn die Alternative - außerhalb mit den Produkten des .net-Framework (z. B. vb.net) Add-Ins programmieren? Oder gibt es bereits Planung von Nachfolgeprodukten zu VBA?

BG
Rainer
Wo ich bin, ist oben und vorn!

Offline mumpel

  • Spezialist für RibbonX-Programmierung
  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 195
    • Profil anzeigen
    • Microsoft-Office-Add-Ins
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: Limit Code-Größe
« Antwort #7 am: Juni 20, 2017, 17:21:15 Nachmittag »
Hallo!

Die 64-bit-Version von Office ist m.E. auch nicht besser als die 32-bit-Version, solange man nicht mit Dateien jenseits der 2GB arbeiten muss. Die 64-bit-Version hat sogar mehr Nachteile als Vorteile. Z.B. wenn es um Add-Ons geht. Es gibt nur extrem wenige Softwarehersteller die ihre Office-Add-Ons für 64-bit-Office optimieren, die allermeisten laufen nur unter einem 32-bit-Office. Zudem ist die 64-bit-Officeversion unter Windows 64-bit auch nicht wirklich schneller als die 32-bit-Officeversion.

Zudem gibt es nicht wirklich viele Anwender die so umfangreich programmieren dass die Module die 64kbit sprengen. 64kbit ist schon reichlich Code. Vielleicht solltest Du schauen ob Du etwas optimieren kannst.

Gruß, René
« Letzte Änderung: Juni 20, 2017, 17:25:23 Nachmittag von mumpel »

Offline RainerW

  • Newbie
  • *
  • Beiträge: 12
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2010
Antw: Limit Code-Größe
« Antwort #8 am: Juni 21, 2017, 07:34:39 Vormittag »
Hallo René,

das mit der 64bit Version hat sich bei mir ergeben, da ich in unserem Migrationsprojekt unseres ERP-Systems sehr große Datenmengen ausgelesen, geprüft und bewegt habe. Aktuell Programmiere ich ein Projektcontrolling auf Basis von SQL-Durchgriffen auf die SQL Datenbank des ERP-Systems. Als Abfallprodukt ist aktuell eine Kapazitätsplanung auch noch auf Basis des Projektcontrollings dran.

Da kommen große Mengen Programmcode aber auch Daten zusammen. Das Ganze läuft als Nachtjob im Scheduler.

Abschließend empfiehlt EPlan (System zur Erstellung von Elektroplänen) - hier lese ich Excel-Elektrostücklisten in unser ERP-System ein - auch noch die 64bit Version.

Da komme ich nicht um die 64bit Version herum und ein "Mischbetrieb mit 32bit" ist ja bekanntlich nicht möglich.

Mein Problem habe ich dahingehend gelöst, dass ich die betroffene Prozedur auf zwei Prozeduren aufgeteilt habe.

Wie gesagt, mein Code kann sicherlich optimiert werden, habe mich aber zum Aufsplitten entschieden.

Vielen Dank für Deinen Hinweis

Herzliche Grüße
Rainer
Wo ich bin, ist oben und vorn!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw: Limit Code-Größe
« Antwort #9 am: Juni 21, 2017, 09:41:34 Vormittag »
Hallo Rainer,

Jep, VBA ist schon etwas in die Jahre gekommen. Alternativen, die ohne größeren Aufwand einsatzbar sind gibt's meiner
Meinung eigentlich keine. Es wären da...

- VSTO, Excel-Add-Ins mit .Net entwickeln, setzt die Installation von Libraries voraus, macht nicht jedes Unternehmen.
- Office JS (JavaScript), im kommen, bei weitem nicht so leistungsfähig wie VBA, das dauert noch.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline mumpel

  • Spezialist für RibbonX-Programmierung
  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 195
    • Profil anzeigen
    • Microsoft-Office-Add-Ins
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: Limit Code-Größe
« Antwort #10 am: Juni 21, 2017, 10:24:35 Vormittag »
Office JS wird doch hoffentlich parallel laufen, und VBA aus Kompatibilitätsgrunden noch ein paar Jahre/Jahrzehnte erhalten bleiben? Wenn VBA stirbt dann fliegt bei mir Office raus. Mit JS schlage ich mich nicht mehr rum, keine Lust mehr noch etwas anderes zu lernen. ;)

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw: Limit Code-Größe
« Antwort #11 am: Juni 21, 2017, 10:32:09 Vormittag »
Hallo René,

Office JS läuft parallel zu VBA. Und VBA bleibt uns sicherlich noch eine Weile erhalten,
nur Investitionen in VBA dürfte man meiner Meinung nach nicht erwarten.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.