Komplettes Tabellenblatt zwischen 2 Dateien kopieren

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

Moderator: Moderatoren

Blaukraut
**
Beiträge: 22
Registriert: So, 11.01.2009 15:59
Wohnort: Allgäu

Komplettes Tabellenblatt zwischen 2 Dateien kopieren

Beitrag von Blaukraut »

Hallo,

Ein Problem in CALC:
Mein Makro wird von Datei_A aufgerufen.
In Datei_B befindet sich ein Tabellenblatt "T_Quelle", welches ich komplett in meine Datei_A hineinkopieren möchte.

Innerhalb meiner Datei_A habe ich keinerlei Problem ein Tabellenblatt zu kopieren.
Das geht mit dem Beispiel von Michael Dannenhöfer wunderbar, z.B.:

myDoc = thisComponent
myDoc.Sheets.CopyByName("T_Quelle","T_Ziel",0)

Aber wenn meine Quelltabelle "T_Quelle" in einer anderen Datei steckt (welche ich auch wunderbar per Makro öffnen und darauf zugreifen kann), dann weiß ich nicht, wie ich eine derartige Kopierfunktion hinbekomme.
Da bin ich einfach zu blöd dazu.

Weiß das jemand von Euch versierten Nutzern?
Danke vorab!

OOo3.1.1
WinXP ServicePack3
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Komplettes Tabellenblatt zwischen 2 Dateien kopieren

Beitrag von komma4 »

Andrew hat mal wieder die Antwort

Code: Alles auswählen

Sub Main
  Dim sNewURL$    'URL For a NEW calc document "private:factory/scalc"
  Dim oNewDoc     'New Document
  Dim oFrame      'Frame that can perform the dispatch
  Dim oDispatcher 'The dispatcher to use
  Dim oSheet      'The current active sheet
  Dim i%          'General Index Variable
  Dim iActive%    'Currently active sheet
  REM This will copy FROM ThisComponent
  oFrame = ThisComponent.CurrentController.Frame
  oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  oSheet = ThisComponent.CurrentController.getActiveSheet()
  iActive = -1 : i = 0
  Do While iActive < 0
    If ThisComponent.Sheets(i).Name = oSheet.Name Then
      iActive = i
    Else
      i = i + 1
    End If
  Loop

  sNewURL = "private:factory/scalc"
  oNewDoc = StarDesktop.loadComponentFromURL(sNewURL, "_blank", 0, Array())

  Dim args(2) as new com.sun.star.beans.PropertyValue
  args(0).Name  = "DocName"               
  args(0).Value = "Untitled1"   'This copies to the document named Untitled1
  args(1).Name  = "Index"
  args(1).Value = iActive
  args(2).Name  = "Copy"
  args(2).Value = True          'Set to Flase to perform a Move
     
  oDispatcher.executeDispatch(oFrame, ".uno:Move", "", 0, args())
End Sub
Quelle: http://www.oooforum.org/forum/viewtopic.phtml?t=7027
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Blaukraut
**
Beiträge: 22
Registriert: So, 11.01.2009 15:59
Wohnort: Allgäu

Re: Komplettes Tabellenblatt zwischen 2 Dateien kopieren

Beitrag von Blaukraut »

Tausend Dank. Das probiere ich aus.
In Andrew's famous document habe ich natürlich auch versucht etwas zu finden, aber da steht das wohl so nicht drin.
Gut dass der Herr offenbar auch in diversen Foren unterwegs ist.
Mit dem dispatcher habe ich es auch selbst kurz versucht, bin aber aus Mangel an Erfahrung gescheitert.
Aber den Code zieh ich mir dann rein.

Gruß, Blaukraut
Antworten