Hallo allerseits,
bin ganz gut weiter gekommen.
Mein Makro öffnet jetzt die neue Datei, speichert es unter einem variablen Namen und schließt die ursprüngliche Datei.
Was jetzt noch nicht klappt ist folgendes:
1) Ich habe zwei Variablen
,
die ich auch schon zum Speichern unter einem entsprechenden Namen verwende.
Jetzt möchte ich gerne, dass diese Variablen im sheet "anexos" in zwei Zellen geschrieben werden.
Folgendermaßen habe ich es probiert (was aber nur zu einer "0" in der Zelle führt.)
Code: Alles auswählen
Dim product as Object
Dim sproduct as String
[...]
product = ThisComponent.Sheets(0).getCellByPosition(3,2) 'liest die Zelle (3,2) im zuerst geöffneten Dokument aus (klappt auch)
Dim ClientBook as Object
clientBook = StarDesktop.loadComponentFromURL(sURL,"_blank",0 ,NoArgs()) 'öffnet das an neuer Stelle gespeicherte Dokument (klappt auch)
Dim anexos as Object
anexos = clientBook.Sheets.getByName("anexos")
clientBook.CurrentController.setActiveSheet(anexos)
clientBook.CurrentController.ActiveSheet.getCellRangeByName("B1").Value = "product.String"
Ich schätze mal, dass das "productString" falsch ist, stimmts? Habe aber auch schon alle Varianten mit und ohne "String", mit und ohne Anführungszeichen etc. ausprobiert.
2) Wahrscheinlich ein ähnliches Problem (nämlich die Art und Weise wie ich versuche eine Variable zu übergeben)
Je nachdem weches Produkt gewählt ist, benötige ich einige sheets nicht, diese möchte ich löschen.
Hier mein Ansatz:
Code: Alles auswählen
If product = BIOMASSA Then
clientBook.Sheets.removeByName("eolica-fotovoltaica")
clientBook.Sheets.removeByName("result-micro")
Else
End If
Allerdings versteht calc nicht, was ich mit
meine.
3) Alle Dokumente außer dem clientBook sollen geschlossen werden, ohne zu speichern. Im Fall für das NewWorkbook übergeht Calc dies aber einfach.
Ohne euch zu viel Code zumuten zu wollen:
Hier mal das gesamte Makro, das ich bis jetzt habe. Damit werden die Ausschnitte vllt. deutlicher.
Code: Alles auswählen
Sub criarCliente
'open checklist'
Dim oDoc as Object
Dim Filepath as String
Dim DirPath as String
Dim DirPath_1 as String
Dim OpenFile as String
GlobalScope.BasicLibraries.LoadLibrary("Tools")
odoc = thiscomponent
Filepath = oDoc.URL
DirPath = convertfromURL(Filepath)
DirPath_1 = DirectoryNameoutofPath(DirPath,GetPathSeparator())
Dim NewWorkbook as Object
Dim NoArgs()
OpenFile = ConvertToURL(DirPath_1 & "/documentos-adicionais/checklist.ods")
'MsgBox Filepath & CHR(13) & CHR(13) & DirPath & CHR(13)& CHR(13) & DirPath_1 & CHR(13) & CHR(13) & OpenFile
NewWorkbook = StarDesktop.loadComponentFromURL(OpenFile,"_blank",0 ,NoArgs())
'get clients, product-varaiables'
Dim client as Object
Dim sclient as String
Dim product as Object
Dim sproduct as String
Dim sURl as String
client = ThisComponent.Sheets(0).getCellByPosition(1,2)
product = ThisComponent.Sheets(0).getCellByPosition(3,2)
'MsgBox Filepath & CHR(13) & CHR(13) & DirPath & CHR(13)& CHR(13) & DirPath_1 & CHR(13) & CHR(13) & client.String & CHR(13) & product.String & CHR(13) & sUrl
'save checklist under new name'
sUrl = ConvertToURL(DirPath_1 & "/clientes/" & client.String & "-" & product.String & ".ods")
NewWorkbook.storeToURL(sURL, NoArgs())
'open new stored workbook, fill it with variables'
Dim ClientBook as Object
clientBook = StarDesktop.loadComponentFromURL(sURL,"_blank",0 ,NoArgs())
Dim anexos as Object
anexos = clientBook.Sheets.getByName("anexos")
clientBook.CurrentController.setActiveSheet(anexos)
clientBook.CurrentController.ActiveSheet.getCellRangeByName("B1").Value = "product.String"
'delete unused sheets'
If product = BIOMASSA Then
clientBook.Sheets.removeByName("eolica-fotovoltaica")
clientBook.Sheets.removeByName("result-micro")
Else
End If
'close calcular-encomenda.ods, checklist.ods'
NewWorkbook.close(FALSE)
ThisComponent.close(FALSE)
End Sub
Danke,
David