Calc Datei speichern per Makro

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Gast

Calc Datei speichern per Makro

Beitrag von Gast » Mi, 23.08.2017 16:25

Hallo zusammen,
Beruflich arbeite ich mit Excel, doch zu Hause nutze ich LO. Muss nun leider feststellen das VBA und Basic nichts mit einander zu tun haben :-(.
Was ich suche ist ein Makro, das mir eine Tabelle per Knopfdruck speichert. Als Dateiname soll der Zellinhalt von A5, B22, D31, B22, C17, B22, K31, in dieser Reihenfolge verwendet werden. Schön wäre, wenn ich im Makro den Speicherort der Datei festlegen könnte.
Unter Excel sieht das in etwa so aus:

Code: Alles auswählen

Option VBASupport 1
Private Sub CommandButton1_Click()
ActiveWorkbook.SaveAs Range("A5").Value & Range("B22").Value & Range("C17").Value & Range("B22").Value & Range("B31").Value & Range("B22").Value & Range("K31").Value & ".xlsm"
End Sub
Moderation: Zur übersichtlichen Darstellung des Textes und vom Programmcode im Text [​​code][​/code] Tags gesetzt.—lorbass, Moderator

Funktioniert leider in LO nicht. Wenn mir das jemand erstellen könnte wäre mir sehr geholfen, vielen lieben Dank in Voraus für die Mühe.
Gruß
Peter

Benutzeravatar
lorbass
********
Beiträge: 3989
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Calc Datei speichern per Makro

Beitrag von lorbass » Mi, 23.08.2017 18:13

Vielleicht versuchst du's nochmal selbst mit Hilfe von Michael Dannenhöfers StarBasic / OpenOffice.org Basic FAQ, Kapitel 6.1 Öffnen/Speichern?

Gruß
lorbass

Peter hat eine Frage
Beiträge: 6
Registriert: Mi, 23.08.2017 16:13

Re: Calc Datei speichern per Makro

Beitrag von Peter hat eine Frage » Mi, 23.08.2017 19:29

Hallo lorbass,
ich glaube das da nicht das richtige dabei ist oder ich verstehe es nicht. Vielleicht auch beides :lol:
Wäre toll wenn sich jemand der Profis erbarmen könnte, vielen Dank.
Gruß
Peter

Stephan
********
Beiträge: 10058
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc Datei speichern per Makro

Beitrag von Stephan » Mi, 23.08.2017 20:31

z.B.:

Code: Alles auswählen

Sub Main
	blatt = ThisComponent.CurrentController.ActiveSheet
	With blatt
		tmp = .getCellRangeByName("A5").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("C17").String
		tmp = tmp & .getCellRangeByName("C17").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("B31").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("B31").String & ".ods"
	End With 
	ThisComponent.storeAsUrl(ConvertToURL(tmp), Array())
End Sub

Gruß
Stephan

Peter hat eine Frage
Beiträge: 6
Registriert: Mi, 23.08.2017 16:13

Re: Calc Datei speichern per Makro

Beitrag von Peter hat eine Frage » Mi, 23.08.2017 21:03

Hallo Stephan,
Besten Dank! Die einzelnen Zellinhalte werden gefunden, dann diese Fehlermeldung:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.task.ErrorCodeIOException
Message: SfxBaseModel::impl_store <http://20170002-Rechnung-Schlaier-23.08.17.ods/> failed: 0x5032.
Bei der Fehlermeldung öffnet sich das Basic Fenster, ein Pfeil zeigt auf die letzte Zeile:
ThisComponent.storeAsUrl(ConvertToURL(tmp), Array())
Hier muss der Fehler liegen, ich kann nichts erkennen.

Code: Alles auswählen

Sub Main
blatt = ThisComponent.CurrentController.ActiveSheet
	With blatt
		tmp = .getCellRangeByName("B31").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("A5").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("C17").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("K31").String & ".ods"
	End With 
	ThisComponent.storeAsUrl(ConvertToURL(tmp), Array())
End Sub

Stephan
********
Beiträge: 10058
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc Datei speichern per Makro

Beitrag von Stephan » Mi, 23.08.2017 21:10

Hier muss der Fehler liegen, ich kann nichts erkennen.
http://20170002-Rechnung-Schlaier-23.08.17.ods/ ist keine gültige Adresse+Dateiname


Gruß
Stephan

Peter hat eine Frage
Beiträge: 6
Registriert: Mi, 23.08.2017 16:13

Re: Calc Datei speichern per Makro

Beitrag von Peter hat eine Frage » Mi, 23.08.2017 21:12

Das ist mir klar. Aber der Dateiname wird ja durch das Makro erzeugt!? Wo kommt das http her?
Zuletzt geändert von Peter hat eine Frage am Mi, 23.08.2017 21:25, insgesamt 1-mal geändert.

Peter hat eine Frage
Beiträge: 6
Registriert: Mi, 23.08.2017 16:13

Re: Calc Datei speichern per Makro

Beitrag von Peter hat eine Frage » Mi, 23.08.2017 21:13

Wahrscheinlich muss ich irgend wie den Speicherort C:/Test mit angeben, oder?

Stephan
********
Beiträge: 10058
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc Datei speichern per Makro

Beitrag von Stephan » Mi, 23.08.2017 21:38

Wo kommt das http her?
von mehreren Punkten im Dateinamen bei gleichzeitigem Nichtvorhandensein einer Adresse
Wahrscheinlich muss ich irgend wie den Speicherort C:/Test mit angeben, oder?
ja. richtigerweise natürlich C:\Test



Gruß
Stephan

Peter hat eine Frage
Beiträge: 6
Registriert: Mi, 23.08.2017 16:13

Re: Calc Datei speichern per Makro

Beitrag von Peter hat eine Frage » Mi, 23.08.2017 21:52

Hallo Stephan,
OK. die Zelle K31, das Datum mit den Punkten habe ich herausgenommen. Eine Fehlermeldung erscheint nicht mehr :)
Die Datei wird allerdings auch nicht gespeichet.
Wo muss ich den Pfad eingeben?
Gruß
Peter

Stephan
********
Beiträge: 10058
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc Datei speichern per Makro

Beitrag von Stephan » Mi, 23.08.2017 22:08

Wo muss ich den Pfad eingeben?
Das weiß ich doch nicht, denn ich habe keine Ahnung was in den ganzen Zellen steht.

Schreibe eine MsgBox in den Code dann kannst Du kontrollieren, was als Pfad übergeben wird:

Code: Alles auswählen

Sub Main
blatt = ThisComponent.CurrentController.ActiveSheet
	With blatt
		tmp = .getCellRangeByName("B31").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("A5").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("C17").String
		tmp = tmp & .getCellRangeByName("B22").String
		tmp = tmp & .getCellRangeByName("K31").String & ".ods"
	End With 

	Msgbox tmp

	ThisComponent.storeAsUrl(ConvertToURL(tmp), Array())
End Sub

Gruß
Stephan

Peter hat eine Frage
Beiträge: 6
Registriert: Mi, 23.08.2017 16:13

Re: Calc Datei speichern per Makro

Beitrag von Peter hat eine Frage » Mi, 23.08.2017 22:19

Hallo Stephan,
jetzt hab ich das vertanden, der Pfad kann ich auch in eine Zelle schreiben.
Es funktioniert, Danke für deine nicht endenwollende Geduld!
Gruß
Peter

Antworten

Wer ist online?

Mitglieder in diesem Forum: Yahoo [Bot] und 12 Gäste