VisualBasic VBA Multi Thread fähig machen?
- Ersteller Tudeski
- Erstellt am
ich bin mir nicht sicher, aber ist ein vba programm nicht ein Programm das reihe für reihe durchläuft?
daher würde ich sagen nein
sorry muss mich korrigieren: hier ein link dazu. scheint zu gehen.
aber ohne größeres umschreiben denke ich nicht. denn du musst dafür sorgen, dass alle variaben die du nutzt zu entsprechendem zeitpunkt verfügbar sind. und das ist nicht immer gegeben.
da könntest zum beispiel wenn du die quersumme und die quadradsumme berechnest das parallelisieren, weil du dafür die gleichen variablen brauchst. das ist nur die formel unterschiedlich.
daher würde ich sagen nein
sorry muss mich korrigieren: hier ein link dazu. scheint zu gehen.
aber ohne größeres umschreiben denke ich nicht. denn du musst dafür sorgen, dass alle variaben die du nutzt zu entsprechendem zeitpunkt verfügbar sind. und das ist nicht immer gegeben.
da könntest zum beispiel wenn du die quersumme und die quadradsumme berechnest das parallelisieren, weil du dafür die gleichen variablen brauchst. das ist nur die formel unterschiedlich.
Zuletzt bearbeitet:
Grantig
Captain
- Registriert
- Okt. 2008
- Beiträge
- 3.552
Falsch.cuco schrieb:scheint zu gehen.
VBA (Visual Basic for Applications) ist nicht das gleiche wie VB (Visual Basic)
@Tudeski
Nichtmal wenn du das Prgoramm umschreibst kannst du ein VBA Prgoramm multithreaded machen, weil es nicht unterstützt wird. (bzw. nur unter speziellen Bedingungen) --> Quelle
sebastian23
Ensign
- Registriert
- Juni 2008
- Beiträge
- 180
Das ist generell nicht möglich mit VBA.
Ich sehe darin auch keinen Sinn.
VBA ist dafür gedacht, mal ein kleines Makro zu schreiben, aber nicht für große Sachen die Multi-Threading erfordern.
Ich sehe darin auch keinen Sinn.
VBA ist dafür gedacht, mal ein kleines Makro zu schreiben, aber nicht für große Sachen die Multi-Threading erfordern.
Erdmännchen
Commander
- Registriert
- Dez. 2008
- Beiträge
- 2.242
Du kannst aber statt VBA auch VB.NET nehmen, um addins für office-produkte zu schreiben. in VB.NET ist es dann ganz einfach (wenn man weiß wie) das multithreading zu machen.
wozu man es braucht? um tabellen werte und eine simulation rascher zu berechnen, nur um tabelle zu erstellen dauert es 10min. simulation komplett durchrechnen gut 1-2h.
(ich habe es nicht geschrieben)
kannst du die befehle für VB.net aufschreiben oder link posten? bitte? *liebguck*
ps. an alle die sinn und unsinn kommentare abgeben, bitte behaltet das für euch, ok? ich suche hilfe und keine kritik.
hmmm... mysql wird verwendet - ich oute mich als noob. also zusammengefasst. mysql im access mit vba.
(ich habe es nicht geschrieben)
kannst du die befehle für VB.net aufschreiben oder link posten? bitte? *liebguck*
ps. an alle die sinn und unsinn kommentare abgeben, bitte behaltet das für euch, ok? ich suche hilfe und keine kritik.
hmmm... mysql wird verwendet - ich oute mich als noob. also zusammengefasst. mysql im access mit vba.
Zuletzt bearbeitet:
1
1668mib
Gast
Vor allem hängt es vom Programm ab, ob Multi-Threading überhaupt was bringt... und nur daran kann man auch den Aufwand abschätzen...
Erdmännchen
Commander
- Registriert
- Dez. 2008
- Beiträge
- 2.242
was ist das für ein VBA-Makro, was eine ganze Simulation macht?
Normalerweise würde man VBA hier wirklich nur nehmen, um die Tabelle z.B. graphisch zu visualisieren auf knopfdruck...
Normalerweise würde man VBA hier wirklich nur nehmen, um die Tabelle z.B. graphisch zu visualisieren auf knopfdruck...
es simuliert irgendeine produktion (wo etwas gebaut wird) mit seriellen und parallelen arbeitsprozessen.
ein durchlauf wird ca. 1-2h dauern und bei kleinen veränderungen an den zahlen, wird jeder weitere run weiter 1-2h dauern.
das programm steht. wozu man vba/sql üblicherweise verwendet etc. daran kann ich nichts ändern, weil ich das programm nicht geschrieben habe. :-(
schade, dass ich kritik einstecken muss, obwohl ich hifel suche.
nichts für ungut und vielen dank für die die es probiert haben ohne zu kritisieren.
falls sich doch jemand entschliesst zu versuchen zu helfen, würde ich mich freuen.
ein durchlauf wird ca. 1-2h dauern und bei kleinen veränderungen an den zahlen, wird jeder weitere run weiter 1-2h dauern.
das programm steht. wozu man vba/sql üblicherweise verwendet etc. daran kann ich nichts ändern, weil ich das programm nicht geschrieben habe. :-(
schade, dass ich kritik einstecken muss, obwohl ich hifel suche.
nichts für ungut und vielen dank für die die es probiert haben ohne zu kritisieren.
falls sich doch jemand entschliesst zu versuchen zu helfen, würde ich mich freuen.
Erdmännchen
Commander
- Registriert
- Dez. 2008
- Beiträge
- 2.242
also wie 1668mib schon gesagt hat, eine software muss von der aufgabe und der architektur her auch multithreading-fähig sein.
Wenn du deine Software in einzelne Aufgaben unterteilen kannst, die von einander weitestgehend unabhängig sind, dann kann man das parallelisieren.
Also stell dir vor, du kannst die einzelnen Schritte in deinem Programm auch zu Packeten schnüren und in einen Sack schmeißen. Wenn du jetzt reingreifst und egal ist, was du bekommst, dann kann man das parallelisieren. Also wenn du alle Aufgaben auch wirklich parallel machen könntest. Sobald Zwischenschritte nötig sind, kann es sein, dass das schon schief geht...
Für mehr braucht man auch mehr Einblick in die Software. Also was passiert wann und warum...
Für einfache Parallele Aufgaben gibt es den Backgroundworker. Einfach mal googeln. Auch sonst gibts ganz viel in der Microsoft-Hilfe...
Wenn du deine Software in einzelne Aufgaben unterteilen kannst, die von einander weitestgehend unabhängig sind, dann kann man das parallelisieren.
Also stell dir vor, du kannst die einzelnen Schritte in deinem Programm auch zu Packeten schnüren und in einen Sack schmeißen. Wenn du jetzt reingreifst und egal ist, was du bekommst, dann kann man das parallelisieren. Also wenn du alle Aufgaben auch wirklich parallel machen könntest. Sobald Zwischenschritte nötig sind, kann es sein, dass das schon schief geht...
Für mehr braucht man auch mehr Einblick in die Software. Also was passiert wann und warum...
Für einfache Parallele Aufgaben gibt es den Backgroundworker. Einfach mal googeln. Auch sonst gibts ganz viel in der Microsoft-Hilfe...
Yuuri
Fleet Admiral
- Registriert
- Okt. 2010
- Beiträge
- 13.928
Darum geht es doch gar nicht, aber mir war der Sinn von Multithreading in Excel oder Word überhaupt nicht bewusst. Mir erschließt sich hier halt nicht, wozu man Excel für so etwas komplexes verwendet. Sicherlich ist es komfortabel, darum werdet ihr es auch verwenden und daran zweifel ich auch nicht, aber speziell wenn es so extrem lange dauert für eine komplette Berechnung, springt es mir nicht in den Sinn, wieso man dann nicht von Anfang an auf eine angepasste Lösung in C++, C#, Java o.ä.Tudeski schrieb:schade, dass ich kritik einstecken muss, obwohl ich hifel suche.
Was mir dabei jetzt auf Anhieb ins Auge sticht: http://social.msdn.microsoft.com/forums/en-US/vsto/thread/735c8f26-2129-4b46-8c1a-aad385cab2ed/. Anscheinend beherrscht VBA kein selbstständiges MT, weshalb man dies irgendwie auf COM-Modelle ummodeln muss.
Kenne mich mit VBA aber nicht wirklich gut aus, von daher wäre dies nur Rätselraten.
Grantig
Captain
- Registriert
- Okt. 2008
- Beiträge
- 3.552
Leider kann man dir nicht helfen, denn wie schon mehrmals gesagt, unterstützt VBA kein Threading.Tudeski schrieb:falls sich doch jemand entschliesst zu versuchen zu helfen, würde ich mich freuen.
Die beste Möglichkeit wäre es wohl die ganze Sache in einer "richtigen" Programmiersprache neu zu schreiben und nicht in einer Skriptsprache wie VBA.
Wenn du hier etwas mehr und vor allem detailliertere Infos postest, wie das Programm im Moment aufgebaut ist und wie die Arbeitsprozesse in etwa aussehen, dann kann dir vllt. weitergeholfen werden, bzw. man könnte dir zumindest sagen wie es am einfachsten umzusetzen ist.
Aber mit den wenigen Infos die du uns zur Verfügung stellst artet das eben wirklich in Rätselraten aus.
danke nicht hilfreich! ich habe es immer noch nicht programmmiert!
ehrlich jungs, ich habe ein LEBEN und somit keine zeit diese simulation in c++ neuzuschreiben (was bestimmt 2-4 wochen rundumdie uhr an zeit benötigen würde ohne debugging! es handelt sich hier nicht um ein 10 zeilen simulation - was ist daran nicht zu verstehen? schreibe ich etwa japanisch?
hätte ich es programmiert, hätte ich es in c++ geschrieben! dennoch danke fürs kritisieren.
danke, dass es nicht geht.
komischerweise ist ja office 2007 multithreading optimiert worden und es sind SQL abfragen wohl in VBA geschrieben. egal. dennoch danke.
ehrlich jungs, ich habe ein LEBEN und somit keine zeit diese simulation in c++ neuzuschreiben (was bestimmt 2-4 wochen rundumdie uhr an zeit benötigen würde ohne debugging! es handelt sich hier nicht um ein 10 zeilen simulation - was ist daran nicht zu verstehen? schreibe ich etwa japanisch?
hätte ich es programmiert, hätte ich es in c++ geschrieben! dennoch danke fürs kritisieren.
danke, dass es nicht geht.
komischerweise ist ja office 2007 multithreading optimiert worden und es sind SQL abfragen wohl in VBA geschrieben. egal. dennoch danke.
Zuletzt bearbeitet:
Grantig
Captain
- Registriert
- Okt. 2008
- Beiträge
- 3.552
Ja das stimmt, Office 2007 unterstützt Multithreading. Das ändert aber nichts an der Tatsache, dass VBA kein Multithreading unterstützt und nur sequenziell ausgeführt werden kann!Tudeski schrieb:komischerweise ist ja office 2007 multithreading optimiert worden
Es gibt zwar Möglichkeiten in deinem VBA Script mehrere Threads zu benutzen, aber das ist imo eine Frickellösung. Aber wenn du willst kannst du es dir ja mal anschaun: klick
Ohne umschreiben des VBA Scripts oder komplettes neuschreiben in einer Programmiersprache die Multithreading unterstützt gehts eben nicht.
Damit musst du wohl leben, auch wenn es dir nicht schmeckt.
F
Flup
Gast
Ich finds sehr merkwürdig, dass besonders in diesem Forum viele Leute ausfallend werden, wenn man ihnen erzählt, dass ihr Vorhaben nicht geht oder dass man dafür erstmal was lernen müsste. Immer nach dem Motto "Was seid ihr für ne doofe Community, keiner hilft!".
Zurück zum Thema: Das ganze in VB.NET umzuschreiben sollte nicht allzu schwer sein, die Sprachen sind immerhin recht verwandt, aber wenn dir auch das zu viel Arbeit ist, musst du wohl mit dem langsamen single-thread Makro leben.
Noch zwei generelle Sachen:
1. Du hast dein Problem immer noch nicht genau beschrieben, keiner hier kann dir sagen, ob das überhaupt parallelisierbar ist.
2. VBA ist (wie sebastian23 schon gesagt hat) einfach nicht für sowas ausgelegt. Wenn du mehr Leistung haben willst musst du wohl oder übel in einer Compilersprache neu schreiben.
Zurück zum Thema: Das ganze in VB.NET umzuschreiben sollte nicht allzu schwer sein, die Sprachen sind immerhin recht verwandt, aber wenn dir auch das zu viel Arbeit ist, musst du wohl mit dem langsamen single-thread Makro leben.
Noch zwei generelle Sachen:
1. Du hast dein Problem immer noch nicht genau beschrieben, keiner hier kann dir sagen, ob das überhaupt parallelisierbar ist.
2. VBA ist (wie sebastian23 schon gesagt hat) einfach nicht für sowas ausgelegt. Wenn du mehr Leistung haben willst musst du wohl oder übel in einer Compilersprache neu schreiben.
Erdmännchen
Commander
- Registriert
- Dez. 2008
- Beiträge
- 2.242
Ich fühl mich hier auch ein bisschen verarscht ehrlich gesagt, da hat jemand ne Frage, man hilft ihm und weil er mit der Lösung nicht zufrieden ist, macht er hier die Leute dumm an.
Was hast du erwartet? Dass dir jemand auf Grund deines Startposts das Programm fertig in einer Hochsprache multithreadingfähig präsentiert?
Wenn du hier die Leute, die dir hier umsonst und kostenlos ihre Zeit opfern nicht achtest und respektierst, dann finde ich solltest du dich lieber nach einem Softwarehaus umschauen, die dir das umschreiben. Kostet bestimmt ne menge Geld, aber da darfst du dann ruhig meckern, denn du bezahlst ja das Endprodukt.
Bodenlose Frechheit meiner Meinung nach.
Sorry, aber das musste jetzt mal raus.
Auch wenn ich hier ne Verwarnung riskiere...
EDIT: Wenn du noch weitere konstruktive Kritik wünscht, können wir das per PM ausmachen.
Wenn du endlich mal deine Software genauer beschreiben willst, um zu analysieren, ob dass von der Architektur überhaupt möglich ist, ganz von VBA jetzt abgesehen, dann meld dich, wir helfen wirklich gerne, aber nur wenn man uns gut behandelt...
Was hast du erwartet? Dass dir jemand auf Grund deines Startposts das Programm fertig in einer Hochsprache multithreadingfähig präsentiert?
Wenn du hier die Leute, die dir hier umsonst und kostenlos ihre Zeit opfern nicht achtest und respektierst, dann finde ich solltest du dich lieber nach einem Softwarehaus umschauen, die dir das umschreiben. Kostet bestimmt ne menge Geld, aber da darfst du dann ruhig meckern, denn du bezahlst ja das Endprodukt.
Bodenlose Frechheit meiner Meinung nach.
Sorry, aber das musste jetzt mal raus.
Auch wenn ich hier ne Verwarnung riskiere...
EDIT: Wenn du noch weitere konstruktive Kritik wünscht, können wir das per PM ausmachen.
Wenn du endlich mal deine Software genauer beschreiben willst, um zu analysieren, ob dass von der Architektur überhaupt möglich ist, ganz von VBA jetzt abgesehen, dann meld dich, wir helfen wirklich gerne, aber nur wenn man uns gut behandelt...
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 10
- Aufrufe
- 549
- Antworten
- 390
- Aufrufe
- 80.974
- Antworten
- 200
- Aufrufe
- 45.670
- Antworten
- 167
- Aufrufe
- 33.085