Text über mehrere Spalten einfügen
Moderator: Moderatoren
Re: Text über mehrere Spalten einfügen
Hallo
Ich kann den Fehler nicht nachvollziehen, tritt der nur bei einzelnen (auch mehrstelligen) Zahlen, oder auch bei Text ohne ; auf ?
Ansonsten würde ich dir empfehlen diese Sub nicht auf Strg+V zu legen, weil Strg ziemlich nah bei der shift-Taste liegt!
___
Füg mal vor der angemeckerten Zeile ein:
On Error goto ErrorHandler
und oberhalb von 'End Sub' die beiden Zeilen:
ErrorHandler:
thiscomponent.currentselection().formulalocal = getclipboard
Gruß Karo
Ich kann den Fehler nicht nachvollziehen, tritt der nur bei einzelnen (auch mehrstelligen) Zahlen, oder auch bei Text ohne ; auf ?
Ansonsten würde ich dir empfehlen diese Sub nicht auf Strg+V zu legen, weil Strg ziemlich nah bei der shift-Taste liegt!
___
Füg mal vor der angemeckerten Zeile ein:
On Error goto ErrorHandler
und oberhalb von 'End Sub' die beiden Zeilen:
ErrorHandler:
thiscomponent.currentselection().formulalocal = getclipboard
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Text über mehrere Spalten einfügen
Hallo Karo,
also bei folgenden Zahlen tritt es auf:
123
12345
Also eigentlich bei allen.
Es sind nur diese Zahlen, ohne ein ;
Einfach 12345 in die Zwischenablage und dann einfügen.
Ich mache derzeit eigentlich alles mit der STRG-V beim einfügen.
Das geht sehr schnell. Und wenn ich mich hier einen anderen Buchstaben verwende,
dann muss ich mich schon wieder verkopfen, wo ich es so mache, und wo nicht.
Oder geht eine Abfrage mit rein, dass wenn kein ; vorkommt, dass dann ganz normal
eingefügt wird, ohne dass der ganze Code durchlaufen wird?
Gruß
Andreas
also bei folgenden Zahlen tritt es auf:
123
12345
Also eigentlich bei allen.
Es sind nur diese Zahlen, ohne ein ;
Einfach 12345 in die Zwischenablage und dann einfügen.
Ich mache derzeit eigentlich alles mit der STRG-V beim einfügen.
Das geht sehr schnell. Und wenn ich mich hier einen anderen Buchstaben verwende,
dann muss ich mich schon wieder verkopfen, wo ich es so mache, und wo nicht.
Oder geht eine Abfrage mit rein, dass wenn kein ; vorkommt, dass dann ganz normal
eingefügt wird, ohne dass der ganze Code durchlaufen wird?
Gruß
Andreas
Re: Text über mehrere Spalten einfügen
Hallo Karo,
sorry, habe die Code-Erweiterung ganz übersehen.
Wenn ich das gemacht habe, dann wird auch die Zahl wieder eingefügt.
Aber die Aufteilung funktioniert nicht mehr richtig. Es wird zwar noch
über die Spalten verteilt, aber in der ersten Spalte steht alles mit dabei.
... ich glaube ich weis, wie du es nachvollziehen kannst.
Kopiere mal irgend eine Zelle vom Calc-Dokument und füge es dann mit
dem Makro ein. Dann kommt die Fehlermeldung.
Wenn ich es von einer externen Datei einfüge, dann kommt die Meldung
nicht und das einfügen geht auch. Es hat also gar nichts damit zu tun,
ob es Zahlen sind, oder ein Text.
Gruß
Andreas
sorry, habe die Code-Erweiterung ganz übersehen.
Wenn ich das gemacht habe, dann wird auch die Zahl wieder eingefügt.
Aber die Aufteilung funktioniert nicht mehr richtig. Es wird zwar noch
über die Spalten verteilt, aber in der ersten Spalte steht alles mit dabei.
... ich glaube ich weis, wie du es nachvollziehen kannst.
Kopiere mal irgend eine Zelle vom Calc-Dokument und füge es dann mit
dem Makro ein. Dann kommt die Fehlermeldung.
Wenn ich es von einer externen Datei einfüge, dann kommt die Meldung
nicht und das einfügen geht auch. Es hat also gar nichts damit zu tun,
ob es Zahlen sind, oder ein Text.
Gruß
Andreas
Re: Text über mehrere Spalten einfügen
Hallo
Tut mir leid bei der Fragestellung kann ich dir nicht weiterhelfen, der OOo-interne Zwischenspeicher kann so nicht übertragen werden.
Freunde dich mit zwei verschiedenen Tastenkombis an, und/oder frag nochmal im Basic-forum an wie man interne - und Betriebssystemzwischenablage unterscheiden kann.
Gruß Karo
Tut mir leid bei der Fragestellung kann ich dir nicht weiterhelfen, der OOo-interne Zwischenspeicher kann so nicht übertragen werden.
Freunde dich mit zwei verschiedenen Tastenkombis an, und/oder frag nochmal im Basic-forum an wie man interne - und Betriebssystemzwischenablage unterscheiden kann.
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Text über mehrere Spalten einfügen
Hallo Karo,
kein Problem.
Das was du mir gemacht hast, ist schon super.
Wenn dir doch noch was einfällt, einfach melden.
Danke noch mal.
Gruß
Andreas
kein Problem.
Das was du mir gemacht hast, ist schon super.
Wenn dir doch noch was einfällt, einfach melden.
Danke noch mal.
Gruß
Andreas
Re: Text über mehrere Spalten einfügen
Hallo
Mir ist noch was brauchbares eingefallen,-- bei einem Fehler wird schlicht aufgezeichneter Code der Aktion: "Einfügen" ausgeführt. Ich fasse hier nochmal alles zusammen:
Korrektur eingefügt: "Exit Sub"
Gruß Karo
Mir ist noch was brauchbares eingefallen,-- bei einem Fehler wird schlicht aufgezeichneter Code der Aktion: "Einfügen" ausgeführt. Ich fasse hier nochmal alles zusammen:
Code: Alles auswählen
sub clipboard_split_and_paste
'15.3.2009 http://de.openoffice.info/viewtopic.php?f=2&t=23238
'Makro zum Einfügen aus der Zwischenablage
'in mehrere Spalten
'unter Benutzung der Function 'GetClipboard → siehe dort
dim osheet as object
dim nlines% , maxs% , startsp% , startze% , endsp% , endze%
tr = ";" 'Spaltentrenner
'die Zwischenablage...
alines() = split( getclipboard,chr(10))'..in Zeilen splitten.
'unter Windows geht auch: ...,chr(13)) ?
On Error goto ErrorHandler
nlines = ubound(alines())'Anzahl der Zeilen Null-basiert
dim iline(nlines)
for iz = 0 to nlines
'Zeilenweise in Array splitten..
iline(iz) = split( alines(iz) , tr )
'...und maximal benötigte Spaltenanzahl ermittteln
if maxs < ubound( iline(iz) ) then
maxs = ubound( iline(iz) )
endif
next iz
for iz = 0 to nlines
atmpline = iline(iz)
redim preserve atmpline(maxs)
for io = ubound(iline(iz))+1 to maxs
atmpline(io) = ""
next io
iline(iz) = atmpline()
next iz
'Startzelle zum Einfügen ist die aktuell selektierte Zelle
with thiscomponent.currentselection().rangeaddress
osheet = thisComponent.sheets(.sheet)
startsp = .startcolumn
startze = .startrow
end with
endsp = startsp + maxs
endze = startze + nlines
'Zielbereich festlegen
ozielbereich = osheet.getcellrangebyposition( startsp , startze , endsp , endze )
'setformulaarray statt setdataarray überschreibt nicht die Formatierungen.
ozielbereich.setdataarray(iline())
ochange = ozielbereich.createReplaceDescriptor()
ochange.searchString = "^[0-9]"
ochange.ReplaceString = "&"
ochange.SearchRegularExpression = true
ozielbereich.replaceall(ochange)
ochange.searchString = ",[0-9]+$"
ochange.ReplaceString = "&€"
ochange.SearchRegularExpression = true
ozielbereich.replaceall(ochange)
Exit sub
ErrorHandler:
paste_dispatcher
end sub
'entnommen aus "Makros für OOo" http://www.galileocomputing.de/1938?GPP=ooo
function GetClipboard
On Error goto ErrorHandler
Dim ClipBoardHandle as Object, DataObj as object
Dim DataTypSeq() as object, sClipBoardString as String
ClipBoardHandle = createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
DataObj = createUnoService("com.sun.star.datatransfer.XTransferable")
DataObj = ClipBoardHandle.getContents()
DataTypSeq = DataObj.getTransferDataFlavors()
sClipBoardString = DataObj.getTransferData(DataTypSeq(0))
getClipboard = sClipBoardString
Exit function
REM Wenn die Zwischenablage Bilder oder Objekte enthält
REM oder leer ist:
ErrorHandler:
GetClipboard = ""
end function
sub paste_dispatcher
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
end sub
Gruß Karo
Zuletzt geändert von Karolus am Mo, 16.03.2009 14:28, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Text über mehrere Spalten einfügen
Hallo Karo,
das Einfügen funktioniert jetzt, aber wenn ein Text zum Splitten mit dabei ist,
wir der ganze Text in die erste Spalte eingefügt und zusätzlich auf die anderen
Spalten aufgeteilt.
Da muss irgendwo noch ein kleiner Fehler sein.
Gruß
Andreas
das Einfügen funktioniert jetzt, aber wenn ein Text zum Splitten mit dabei ist,
wir der ganze Text in die erste Spalte eingefügt und zusätzlich auf die anderen
Spalten aufgeteilt.
Da muss irgendwo noch ein kleiner Fehler sein.
Gruß
Andreas
Re: Text über mehrere Spalten einfügen
Hallo
setze in der 3.letzten Zeile (in die Zeile oberhalb von: ErrorHandler:)
Exit sub
Entschuldige hab ich vergessen.
setze in der 3.letzten Zeile (in die Zeile oberhalb von: ErrorHandler:)
Exit sub
Entschuldige hab ich vergessen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Text über mehrere Spalten einfügen
Hallo Karo,
funktioniert alles wunderbar.
Eine Frage hätte ich noch: Ist es möglich, dieses Makro nur in einer Calc-Tabelle
zu verwenden? Also das Makro und auch die Tastenzuweisung.
Vielleicht geht das ja sogar, dass das Makro und die Tastenzuweisung in der
Calc-Tabelle gespeichert wird.
Gruß
Andreas
funktioniert alles wunderbar.
Eine Frage hätte ich noch: Ist es möglich, dieses Makro nur in einer Calc-Tabelle
zu verwenden? Also das Makro und auch die Tastenzuweisung.
Vielleicht geht das ja sogar, dass das Makro und die Tastenzuweisung in der
Calc-Tabelle gespeichert wird.
Gruß
Andreas
Re: Text über mehrere Spalten einfügen
Hallo
Den Code könntest du schon im Dokument (genauer in einem Basic-modul des Dokuments) speichern - bringt aber nichts da die Tastenkombi mindestens allgemein für Calc gilt und dann meckert wenn das Dok geschlossen ist.
Also wenns denn so sein muss, ruf mit der Tastenkombi eine kleines "Entscheidungsmakro" auf:
Gruß Karo
Den Code könntest du schon im Dokument (genauer in einem Basic-modul des Dokuments) speichern - bringt aber nichts da die Tastenkombi mindestens allgemein für Calc gilt und dann meckert wenn das Dok geschlossen ist.
Also wenns denn so sein muss, ruf mit der Tastenkombi eine kleines "Entscheidungsmakro" auf:
Code: Alles auswählen
sub split_and_paste_or_paste_only
if thiscomponent.url = converttourl("pfad\zu\deinem\spezziellen\dok.sxc") then
clipboard_split_and_paste
else
paste_dispatcher
end if
end sub
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)