VBA-Makro in OpenOffice konvertieren?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

MarKum
Beiträge: 4
Registriert: Mo, 03.09.2018 13:42

VBA-Makro in OpenOffice konvertieren?

Beitrag von MarKum »

Hallo,

habe eine Excel-Datei mit Makro im I-Net gefunden, die genau macht, was ich will. Jetzt wollen wir dies in ein OpenOffice Calc einfügen, um dieses dann auf mehreren Terminal-Station laufen lassen (auf diesen Terminals ist kein Excel installiert und wir wollen diese Lizenzen eben mit OpenOffice somit umgehen).

Kurz zur Beschreibung:
Werker gibt am Terminal eine 7-stellige Artikel-ID ein, bekommt von der verknüpften Datenbank z.B, Benennung, Zeichnung, Projekt usw. zurück gemeldet. Zu fast jedem Artikel ist auf einem Laufwerk ein kleines Produktbild gespeichert. Dieses Bild sollte jetzt hier angezeigt werden.

Wie gesagt, im angehängten Excel funktioniert es soweit wie gewünscht, nur kommt beim konvertieren in OO beim Ausführen immer wieder die Fehlermeldung "Laufzeitfehler 91, Objektvariable nicht belegt".
"Option VBASupport 1" sind gesetzt

Leider sind meine VBA, bzw. StarBasic-Kenntnisse absolut nicht die Besten.

Hoffe, der ein oder andere findet etwas Zeit, sich den Code mal anzusehen, und kann mir paar Tipps zum Umschreiben auf StarBasic geben.
Code aus dem Excel hänge ich unten mal an


Schon mal Vielen Dank für die Mühen

MarKum

Code: Alles auswählen

Option Explicit                                     ' Variablendefinition erforderlich
' Option VBASupport 1
' Konstante für Ablagepfad Bilder
Const StPfad As String = "I:\Bilder_Arbeitsplan\"

Private Sub Worksheet_Change(ByVal Target As Range)
    '**************************************************
    '* H. Ziplies                                     *
    '* 06.08.10                                       *
    '* erstellt von HajoZiplies@web.de                *
    '* http://Hajo-Excel.de/                          *
    '**************************************************
    Dim StBild As String                            ' Variable für Bildname
    Dim InI As Integer                              ' Schleifenvariable
    Dim RaBereich As Range                          ' Bereich der Wirksamtkeit
    Dim RaZelle As Range                            ' Zelle die in der Schleife bearbeitet wird
    Set RaBereich = Range("A10,A20,A30,A40")        '   Bereich der Wirksamkeit
    '   noch mehr Bereiche
    '    Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
    '        Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
    '        Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
    '        Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
    '        Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
    '        Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
    '        Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
    ' nur die Zellen Prüfen die im überwachten Bereich liegen
    Set RaBereich = Intersect(RaBereich, Range(Target.Address))
    If Not RaBereich Is Nothing Then                ' prüfen ob eine Zelle im überwachten Bereich
        ' Schleife über alle veränderten Zellen im überwachten Bereich
        For Each RaZelle In RaBereich
            ' Reaktion auf Zellveränderung abschalten
            Application.EnableEvents = False
            RaZelle.Offset(0, 1) = ""               ' Text "kein Bild" löschen
            ' Reaktion auf Zellveränderung einschalten
            Application.EnableEvents = True
            ' Bildname erstellen
            StBild = "Bild " & RaZelle.Address(False, False)
            ' altes Bild löschen
            Bilder_loeschen StBild, ActiveSheet.Name
            If RaZelle.Value <> "" Then             ' es wurde was eingegeben
                ' Bildname
                StBild = StPfad & Format(RaZelle.Value, "0") & ".jpg"
                If Dir(StBild) = "" Then            ' Prüfen ob Datei vorhanden
                    ' Reaktion auf Zellveränderung abschalten
                    Application.EnableEvents = False
                    Target.Offset(0, 1) = "kein Bild"
                    ' Reaktion auf Zellveränderung einschhalten
                    Application.EnableEvents = True
                Else
                    ' einfügen ohne select von  Bert Körn
                    ' Ausdruck.AddPicture(FileName, Verknüpfung, in Mappe speichern,
                    ' Pos. Links, Pos. Oben, Breite, Höhe)
                    ' von Klausimausi64 Bildname
                    ' erstes Offset Pos. Links 0 Zeilen und eine Spalte nach rechts
                    ' zweites Offset Pos. Oben 0 Zeilen tiefer und 0 Spalten nach rechts
                    With ActiveSheet.Shapes.AddPicture(StBild, True, True, _
                        RaZelle.Offset(0, 0).Left, RaZelle.Offset(1, 0).Top, 100, 100)
                        sngHoehe = .Height  ' Bildhöhe an Variable übergeben Hinweis von Uwe (:o)
                        ' Makro das bei klick auf das Bildausgeführt wird,
                        ' Makro in mdl_BeiKlick
                        .OnAction = "Bild_BeiKlick"
                        ' von Klausimausi64 Bildname
                        .Name = "Bild " & RaZelle.Address(False, False)
                    End With
                    ' ********
                End If
            End If
        Next RaZelle
    End If
    Set RaBereich = Nothing                         ' Variable leeren
End Sub

Dateianhänge
bild_einfuegen_mehrere.xls
(78 KiB) 133-mal heruntergeladen
win7prof - LO 6.0.6.2 (x64) - AOO 4.1.5
MarKum
Beiträge: 4
Registriert: Mo, 03.09.2018 13:42

Re: VBA-Makro in OpenOffice konvertieren?

Beitrag von MarKum »

Danke schon mal

Werde natürlich weiterhin die Suche benutzen und auch weiter testen...

Vllt. wäre dann mein Beitrag in dem Unterforum "Makros und allgemeine Programmierung" besser aufgehoben.

Ich weiß nicht, ob ich es verschieben kann/darf?
win7prof - LO 6.0.6.2 (x64) - AOO 4.1.5
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: VBA-Makro in OpenOffice konvertieren?

Beitrag von mikeleb »

Hallo,
du kannst den Thread nicht verschieben. Am einfachsten wäre es ihn dort neu zu erstellen.
Dabei kannst du dann gleich ergänzen:
Mit welcher version arbeitest du? Libreoffice Calc (Version: 4.3.7.2) hat z. B. kein Problem mit den Makros - sie laufen.
An welcher Stelle kommt die Fehlermeldung? Welche Objektvariable ist nicht belegt?
Gruß,
mikeleb
MarKum
Beiträge: 4
Registriert: Mo, 03.09.2018 13:42

Re: VBA-Makro in OpenOffice konvertieren?

Beitrag von MarKum »

Vielen Dank,

hab es jetzt nochmal im richtigen Unterforum erstellt.

Hier geht´s weiter

Versionen usw. jetzt in meiner Signatur
win7prof - LO 6.0.6.2 (x64) - AOO 4.1.5
Antworten