ich hoffe jemand kann mir helfen. Ich kenne mich nicht mit StarBasic aus und habe es auch nicht vor zu lernen. Nur leider muss ich ein Makro schreiben, ich dachte mir das ich dies durch "Makro aufzeichen" bewerkstelligen kann.
Das Makro soll alle Leerzeichen entfernen, den automatischen Zeilenumbruch rausnehmen und die Spalten in optimaler Breite darstellen.
Der Quelltext den mir das aufgezeichnete Makro lieft ist folgender.
Sub ZeilenumbruchRaus
Dim oDoc, aktivesBlatt, oSpalte as Object
oDoc = ThisComponent
aktivesBlatt=oDoc.CurrentController.getActiveSheet
oSpalte = aktivesBlatt.Columns(0)' 0 für Spalte A, 1 für B usw.
oSpalte.isTextWrapped=false 'true bricht um
End Sub
Leider funktioniert das Makro bei mir nicht. Den Kommentar
oSpalte = aktivesBlatt.Columns(0)' 0 für Spalte A, 1 für B usw.
habe ich doch richtig verstanden, das 0 für alle Spalten steht, oder?
Evtl sollte ich hinzufügen das die Option grau hinterlegt ist.
Die Daten kommen aus einer Excel-Tabelle, da man leider unter Access 2.0 seine Daten nur in eine solche exportieren kann.
Ich habe die einen Bruchteil der Datei mal hochgeladen. Es wäre wirklich super wenn sich das jemand mal anschauen könnte. http://migges.mi.funpic.de/WG33_S.ods
ich habe das ganze an deiner datei getestet und es funktioniert. das makro habe ich erweitert. nun wirst du nach des 1. und letzten spalte gefragt. im anschluss daran wird allen spalten, die dazwischen liegen, der zeilenumbruch entfernt und die spaltenbreite auf optimale größe eingestellt.
wenn du mir deine email nennst, kann ich dir die datei mit dem makro mailen.
Sub ZeilenumbruchRausBreiteSpalteOptimal
Dim oDoc, aktivesBlatt, oSpalte as Object
Dim intSpalteVon as Integer
Dim intSpalteBis as Integer
Dim i as Integer
oDoc = ThisComponent
aktivesBlatt=oDoc.CurrentController.getActiveSheet
intSpalteVon=InputBox ("Zahl der 1. Spalte eingeben.","1.Spalte festlegen",2)
intSpalteBis=InputBox("Zahl der letzten Spalte eingeben.","letzte Spalte festlegen",4)
' msgbox(intSpalteVon)
' msgbox(intSpalteBis)
For i=intSpalteVon-1 to intSpalteBis-1
oSpalte = aktivesBlatt.Columns(i)' 0 für Spalte A, 1 für B usw.
' oSpalte.isTextWrapped=true
oSpalte.isTextWrapped=false 'true bricht um
' oSpalte.OptimalWidth=false
oSpalte.OptimalWidth=True
next i
End Sub
Und zwar müssen alle Leerzeichen gelöscht werden. Ich habe es mal selber versucht mit "rtrim" aber das war ein Schuss in den Ofen. Ich kenne mich nur mit VB aus deswegen bereitet mir das echt Probleme. Ich meine das Makro was ich mir aufgezeichnet habe funktioniert.
Sub ZeilenumbruchRausBreiteOptimalLeerzeichenRaus
Dim oDoc, aktivesBlatt, oSpalte, oBereich, oSuche as Object
Dim intSpalteVon as Integer
Dim intSpalteBis as Integer
Dim int1 as Integer
Dim int2 as Integer
Dim i as Integer
oDoc = ThisComponent
aktivesBlatt=oDoc.CurrentController.getActiveSheet
intSpalteVon=InputBox ("Zahl der 1. Spalte eingeben.","1.Spalte festlegen",2)
intSpalteBis=InputBox("Zahl der letzten Spalte eingeben.","letzte Spalte festlegen",4)
' msgbox(intSpalteVon)
' msgbox(intSpalteBis)
For i=intSpalteVon-1 to intSpalteBis-1
oSpalte = aktivesBlatt.Columns(i)' 0 für Spalte A, 1 für B usw.
' oSpalte.isTextWrapped=true
oSpalte.isTextWrapped=false 'true bricht um
' oSpalte.OptimalWidth=false
oSpalte.OptimalWidth=True
'--Leerzeichen suchen und ersetzen
oBereich = oSpalte
oSuche = oBereich.createReplaceDescriptor()
with oSuche
.setSearchString(" ")
.setReplaceString("")
end with
oBereich.replaceAll(oSuche)
next i
End Sub
Das mit den Leerzeichen ist für das aktuelle Dokument ok! Aber es kann auch passieren das Leerzeichen gewollt sind, ergo wäre eine Funktion die nur die Leerzeichen am Ende eines Eintrags wegnimmt besser. Wenn du mir dabei noch helfen könntest wäre das super! Aber das hat ein wenig mehr Zeit!