[gelöst] VBA in Starbasic umwandeln

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] VBA in Starbasic umwandeln

Re: VBA in Starbasic umwandeln

von Stephan » Mo, 28.07.2008 23:57

1. Problem: Die Funktionen laufen nur, wenn ich sie in ein öffentliches Modul stelle. Stelle ich die Funktionen in eine passwortgeschützte Library, laufen die Funktionen nicht. Woran liegt das? Die Funktionen sollen vor Veränderungen geschützt werden. Wie mache ich das?[/qu[te]

Ja die Beobachtung ist richtig. Das Ganze hat Gründe die das Gesamtkonzept betreffen, die Bibliothek "Standard" isr deswegen beispielsweise auch nicht schützbar.

Vorgehen ist eine Aufruf der Funktion in die (ungeschützte) Bibliothek Standard zu legen, also nur den unmittelbaren Aufruf ggf. sogar nur den Aufruf eines (ebenfalls geschützten) Makros.
Vor dem Aufruf müssen aber die Geschützten bibliotheken explizit geladen werden, in der OOo-Hilfe steht wie das geht, Stichwort "LoadLibrary"

[quote[2. Problem: Das Öffnen der Arbeitsmappe dauert bis zu 4 Minuten. Kann ich den Start irgendwie beschleunigen?[

Die Geschwindigkeit hängt vom Inhalt der Arbeitsmappe ab, im Normalen wie bei Fehlfunktion. Letzteres kann beispielsweise auftreten wenn in der DAtei registrierte Netzwerkdrucker beim Öffnen nicht zur Verfügung stehen.

[qu[te]3. Problem. Beim Kopieren von verbundenen Zellen erhalte ich die Fehlermeldung Zusammenfassen nicht verschachteln. Was hat das zu bedeuten? Wie kann ich doch noch kopieren? 364 Formeln manuell zu schreiben ist sehr mühsam.[

Das hat zu bedeuten das sich OOo weigert zu kopieren wenn beim Verbinden von Zellen Verschachtelungen vorhanden sind.
Kopieren ist möglich wenn mn diese vorher auflöst oder es gibt meines Wissens auch eine Extension die das Kopieren ermöglicht, ich weiß momentan nicht wo, vielleichtr weiß es jemand anderes.

[quot[]1. Ich habe weiter oben schon geschrieben, dass ich OOo 3.0 Beta habe. Das ich mit WinXP arbeite, dürfte logisch sein. Wer mich kennt, dürfte wissen, dass ich eigentlich bekennenter OpenSource-Gegner bin.[/[uote]
Diese Logik solltest Du bitte erklären - da OOo 3.0 Beta mit diversen Windows-Versionen funktioniert kann ich nicht ohne Weiteres erkennen woraus man auf XP schlussfolgen soll.



Gruß
Stephan

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 22:01

Ist recht. Neues Thema in Arbeit.

Re: VBA in Starbasic umwandeln

von komma4 » Mo, 28.07.2008 21:28

ich lerme Dich langsam kennen...

Du verlängerst hier mit neuen Fragen :-/
Das hat mit "VBA in Starbasic umwandeln" nichts mehr zu tun.

Deshalb von mir hier keine längeren Antworten.

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 20:55

Da meine Suche im Forum nicht erfolgreich war, frage ich mal direkt.

1. Wie hebt man einen Tabellenschutz temporär auf und setzt ihn zum Schluß wieder? Soll mit UnprotectSheets gehen. Habe hier im Forum etwas von Tools-Bibliothek gelesen, nur finde ich das bei mir nicht.

Code: Alles auswählen

Sub JanuarEin
Rem Schutz aufheben?
ThisComponent.Sheets(0).GetCellRangeByName("A12:A73").getRows.IsVisible = True
ThisComponent.Sheets(0).GetCellRangeByName("A74:A743").getRows.IsVisible = False
Rem Schutz wieder setzen?
End Sub
2. Wie aktiviert man eine Tabelle per Code?

Danke!

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 20:33

1. Ich habe weiter oben schon geschrieben, dass ich OOo 3.0 Beta habe. Das ich mit WinXP arbeite, dürfte logisch sein. Wer mich kennt, dürfte wissen, dass ich eigentlich bekennenter OpenSource-Gegner bin.

2. Und wie kann man den Start beschleunigen? Ein simples Ja oder "geht bestimmt" ist nicht aussagekräftig.

Re: VBA in Starbasic umwandeln

von komma4 » Mo, 28.07.2008 19:49

Tipp: stelle Deine Fragen in einzelnen threads, jeweils mit einem aussagekräftigem Betreff und in richtiguen Bereich.

mumpel hat geschrieben: 1. Problem: Die Funktionen laufen nur, wenn ich sie in ein
geht bestimmt

mumpel hat geschrieben:2. Problem: Das Öffnen der Arbeitsmappe dauert bis zu 4 Minuten.
Kann ich den Start irgendwie beschleunigen?[
ja.


mumpel hat geschrieben:3. Problem. Beim Kopieren von verbundenen Zellen erhalte ich die
keine Ahnung.


mumpel hat geschrieben:(in Excel schon)
bei mit auch (2.4.1 Linux).

Noch'n Tipp: immer OOo Version und Betriebssystem angeben.


Viel Erfolg! (zu 1.Problem hätte ich schon 'ne Idee)



P.S. ja, das Forum hat Probleme mit dem Zitieren.

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 18:14

So, konnte jetzt zumindest die UDF zum Laufen bringen. Allerdings gibt es noch kleinere Probleme.

1. Problem: Die Funktionen laufen nur, wenn ich sie in ein öffentliches Modul stelle. Stelle ich die Funktionen in eine passwortgeschützte Library, laufen die Funktionen nicht. Woran liegt das? Die Funktionen sollen vor Veränderungen geschützt werden. Wie mache ich das?

2. Problem: Das Öffnen der Arbeitsmappe dauert bis zu 4 Minuten. Kann ich den Start irgendwie beschleunigen?

3. Problem. Beim Kopieren von verbundenen Zellen erhalte ich die Fehlermeldung Zusammenfassen nicht verschachteln. Was hat das zu bedeuten? Wie kann ich doch noch kopieren? 364 Formeln manuell zu schreiben ist sehr mühsam.

Noch eine kleine Frage. Wie kann ich in OOo mit der Maus horizontal scrollen? Meine Maus hat zwar ein horizontales Scrollrad, aber das funktioniert in OOo nicht (in Excel schon)

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 12:42

So, habe jetzt meinen alten Nickname wieder. Weshalb hat in meinem letzten Beitrag das Zitieren nicht korrekt funktioniert? Eigentlich wollte ich mehrere Zitate anbringen. Irgendwie scheint der Forenparser hier etwas durcheinanderzubringen.

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 12:33

Wenn Du hingegen die Funktion in einer Tabellenzelle aufrufen willst, müßte ich erstmal nachdenken ob es da eine direkte Möglichkeit gäbe.[/qu[te]

Eigentlich muss ich darüber nicht nachdenken, da es ja so funktioniert. Dieses Problem wäre also gelöst.

[qu[te]
Kann ich nicht konkret beantworten da ich zu wenig über Ribbons weiß. Die Symbolleiste im Dokument ist beim ODF technisch letzlich eine XML-Datei.[/[uote]

Ist in Office 2007 genauso. Die benutzerdefinierten Ribbon sind Dokumentgebunden. Nur mit dem Unterschied, dass diese extern über XML programmiert werden.

[[uote]
..auch das deutete ich Dir im anderen Forum bereits an - der ganze Code Deiner Exceldatei, inklusive Dialoge, geschützter Blätter etc. ist in OOo einsehbar ohne ein Passwort zu kennen. [/[uote]
Das ist mir bekannt. "Geheim" sollen eigentlich nur die Kennwörter, Computernamen ( Environ("COMPUTERNAME") ) und Registryschlüssel sein, also alles, was in den Quellcodedateien mit "xxxxxx" geschrieben ist. Damit niemand die Einstellungen ändert (was er nicht soll) und sich hinterher beschwehrt, wenn die Arbeitsmappe nicht mehr funktioniert.

Der Code aus XL2007-Arbeitsmappen kann nicht mehr ausgelesen werden. Hierzu muss man nur die Arbeitsmappe mit einem Kennwort schützen. Und schon verweigern OOo/Staroffice und Winzip dass öffnen der Datei. Somit ist der Code ziemlich sicher. Es sei denn, man speichert die *.xlsm als *.xls. Ohne Arbeitsmappenschutz lässt sich die *.xlsm öffnen. Getestet mit OOo 3.0 Beta

Re: VBA in Starbasic umwandeln

von Stephan » Mo, 28.07.2008 12:12

Das mit dem Manko ist leicht erklärt. In Excel habe ich eine Funktion mit dem Namen PFünf. In Starbasic wird das Ü angemeckert.
Sofern Du es nur für Basic brauchst gehört es in eckige Klammern, also so:

Code: Alles auswählen

Function [PFünf] (x As String)
Msgbox x
End Function
und Aufrufen dann so:

Code: Alles auswählen

Sub Main()
[PFünf] ("BlaBla")
End Sub
Wenn Du hingegen die Funktion in einmer Tabellenzelle aufrufen willst, müßte ich erstmal nachdenken ob es da eine direkte Möglichkeit gäbe.
Wenn ich das richtig verstehe, dann verhalten sich die benutzerdefinierten Symbolleisten ähnlich wie die benutzerdefinierten Ribbon in Office 2007?
Kann ich nicht konkret beantworten da ich zu wenig über Ribbons weiß. Die Symbolleiste im Dokument ist beim ODF technisch letzlich eine XML-Datei.
Allerdings befürchte ich, dass ich es nicht so hinbekomme wie in Excel.
im Detail kann ich das aus dem Handgelenk natürlich nicht sagen, aber ich bin sehr zuversichtlich das das möglich ist.
Vor allem die Dialoge (Userformen) werden ein Problem.
Nee, im Konkreten eher nicht. In OOo 2.4 werden die Userformen aus Deinem Dokument so gut importiert das ich sie aus DEiner Excel-Datei direkt in ein leere Bibliothek ziehen kann, ich muß die also nichtmal neu entwerfen.
(Natürlich muß noch der Code angepasst werden.)
Denn Quellcode hänge ich mal an.
auch das deutete ich Dir im anderen Forum bereits an - der ganze Code Deiner Exceldatei, inklusive Dialoge, geschützter Blätter etc. ist in OOo einsehbar ohne ein Passwort zu kennen.
Sicherheitsrelevante Daten wurden unkenntlich gemacht
nachdem ich kurz den Orginalcode überflogen habe, sehe ich zunächst keine. In jedem Fall gilt das jeder der OOo hat den VBA-Code aus Deiner Exceldatei vollständig einsehen kann, stehen da also Geheimnisse im Code sind diese sichtbar.
Gibt es dieses Buch irgendwo als Printmedium käuflich zu erwerben?
Weiß ich nicht. Früher war wohl für einige der SUN-Materialien von den SUN-Seiten aus direkt ein Anbieter zu erreichen, ich weiß aber nicht ob das noch der Fall ist oder für dieses spezielle material jemals zutraf.


Gruß
Stephan

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 12:05

Noch eine Frage zum Starbasic-Programmierhandbuch Staroffice 8.0. Gibt es dieses Buch irgendwo als Printmedium käuflich zu erwerben? Zumindest bei Amazon finde ich es nicht.

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 11:13

Das mit dem Manko ist leicht erklärt. In Excel habe ich eine Funktion mit dem Namen PFünf. In Starbasic wird das Ü angemeckert. Nach dem Umbennen in PFuenf funktionieren auch die UDF aus Excel problemlos.

Wenn ich das richtig verstehe, dann verhalten sich die benutzerdefinierten Symbolleisten ähnlich wie die benutzerdefinierten Ribbon in Office 2007? Hört sich gut an.

Allerdings befürchte ich, dass ich es nicht so hinbekomme wie in Excel. Die Excel-Arbeitsmappen sind sehr komplex programmiert. Vor allem die Dialoge (Userformen) werden ein Problem. Das Excel-Projekt (kostenlos), von welchem ich hier spreche, ist sogar offiziell bei Heise.de gelistet. Wäre natürlich schön, wenn ich das selbe auch für OOo/Staroffice anbieten könnte.
Für alle, die Excel haben und es mal testen möchten: Arbeitszeiten berechnen mit Excel. Damit bekommt man eine Vorstellung, was alles passieren soll. Denn Quellcode hänge ich mal an. Damit man sieht, was auf mich zukommt. Sicherheitsrelevante Daten wurden unkenntlich gemacht.

..
Dateianhänge
Quellcode.zip
(35.28 KiB) 272-mal heruntergeladen

Re: VBA in Starbasic umwandeln

von Stephan » Mo, 28.07.2008 10:35

Ein kleines Manko hat Starbasic->Es werden keine Umlaute unterstütz.
verstehe ich nicht was konkret gemeint ist
Jetzt muss ich nur noch lernen, wie man eine temporäre Symbolleiste erstellt, welche beim Öffnen der Arbeitsmappe erstellt und beim Schließen der Arbeitsmappe wieder gelöscht wird.
Nein, das übliche Vorgehen ist ein anderes, Symbolleisten werden in solchen Fällen nicht erzeugt und wieder gelöscht, sondern komplett fertig in den Dokumenten gespeichert und weitergegeben. Sie sind dann nur nur beim Öffnen des Dokuments verfügbar und tauchen nur in diesem auf, also auch wenn mehrere Dokumente gleichzeitig offen sind ist die Symbolleiste nur sichbar wenn das betreffende Dokument geradfe den Fokus hat.
Wenn ich hier von "üblich" spreche meine ich genau das, es ist wohl auch möglich Symbolleisten so wie Du es von MSO kennst beim Öffnen per Code zu erzeugen und beim Schliessen per Code zu löschen, nur es ist so unüblich (denn es macht ja unnötig Arbeit) das ich nicht einmal sofort einen Beispielcode parat habe.

In anliegendes Dokument habe ich eine Symbolleiste mit 2 Schaltflächen die im Dokument gespeicherte Makros starten integriert. Öffne das dokument und Du siehst die Leiste.

natürlich könnte die Leiste auch Icons haben, auch selbstdefiniertem, ich habe darauf verzichtet.

Problem:
derzeitig besteht noch das Problem das die Position der Symbolleiste nicht im Dokument gespeichert wird, d.h. sie wird beim erstmaligen Öffnen des Dokumentes auf einem fremden System in Defaultposition auftauchen, das ist integriert/angedockt an eine der Standardsymbolleisten. Das ist teilweise blöd weil so kleine Leisten kaum auffällig sind, das Problem ist aber schon gemeldet.
Sobald Du aber die im Dokument gespeicherte Symbolleiste an einen anderen Platz ziehst, wird dieser gespeichert und wenn Du das Dokument erneut öffnest ist die Leiste wieder dort sichtbar, geht aber nur auf demselben REchner, weil die Speicherung dieser Info derzeitig eben nicht in der Datei erfolgt.
Andererseits hjat wohl nur noch niemand darüber nachgedacht, ich kenne jedenfalls noch kein Makkrobeispiel dafür, denn es sollte wohl möglich sein die Leiste auch beim ersten Öffnen per Autostartmakro 'zurechtzurücken'.



Gruß
Stephan
Dateianhänge
zeitfunktion.ods
mit integrierter Symbolleiste
(12.14 KiB) 274-mal heruntergeladen

Re: VBA in Starbasic umwandeln

von mumpel » Mo, 28.07.2008 09:00

Danke, es funktioniert problemlos. Die Originalfunktion stammt von Hans W. Herber. Diese berücksichtigt allerdings keine Pausen, sodass ich die 3 Pausenfenster als optionale Angaben eingebaut habe.
Ein kleines Manko hat Starbasic->Es werden keine Umlaute unterstütz. Aber damit kann ich leben. Jetzt muss ich nur noch lernen, wie man eine temporäre Symbolleiste erstellt, welche beim Öffnen der Arbeitsmappe erstellt und beim Schließen der Arbeitsmappe wieder gelöscht wird. Dann kann ich endlich meine Excel-Arbeitsmappe auf Starbasic umbauen. Für alle Kollegen, die kein Excel haben.

Re: VBA in Starbasic umwandeln

von Stephan » So, 27.07.2008 23:29

auch wenns Dich nicht freuen wird - das Problem steckt in Deinem benutzerdefinierten Typ:

Code: Alles auswählen

Type PeriodStartStop
      Start As Double
      Stop_ As Double
End Type
OOo kommt damit offensichtlich nicht so richtig klar, ist zumindest ein Problem möglicherweise ein ein echter Fehler in OOo, ich bin noch nicht völlig sicher.
Hier ists leider so warm (26 Grad Innentemperatur) das ich heute auch nichts Vernünftiges mehr herausfinde :-(
Vielleicht hat jemand anderes hier eine Idee.

In jedem Fall läuft das Ganze wenn Du das auf normale Variablen bzw. Arrays umschreibst, dazu sind dann eigentlich auch keine besonderen StarBasic-Kenntnisse nötig.
Ich bin nicht sicher ob das was ich schnell zusasammengefrickelt habe schon fehlerfrei läuft, aber Datei hängt an.
Kennt jemand eine vernünftige deutschsprachige Starbasic-Dokumentation?
Würde Dir wohl hier für das konkrete Problem wohl nicht helfen, ansonsten bleibts bei meinem Empfehlungen die ich Dir schon an anderer Stelle gab. Der Autor des einen Buches ist hier im Forum übrigens auch Moderator --> nickname: "Toxitom"

Gruß
Stephan
Dateianhänge
zeitfunktion.ods
(11.08 KiB) 294-mal heruntergeladen

Nach oben