Seite 1 von 1

Verknüpfung im Makro zum Tabellenblatt

Verfasst: Fr, 06.01.2012 18:11
von 12dis02424
Hallo,

ich komme bei folgendem Problem nicht weiter und wäre dankbar wenn mir jemand helfen könnte.
Ich möchte über ein Makro einen Datensatz exportieren.
Der Exportpfad ist aber immer ein anderer und kann daher nicht im Makro fest hinterlegt werden.

Ich möchte nun das im Makro auf die Zelle A1 im Tabellenblatt mit dem Namen "Test" zugreift und sich von dort den Pfad holt.
Normalerweise kein Problem da ich bei vielen Makros diese Option für Datenimporte benutze aber beim export komme ich ins stocken.

Hier mein Makro

Code: Alles auswählen

sub test

   Dim sPath, fullPath, iVal, iResult As String
    Dim r  as Integer
    Dim oDocument, thisDoc, oSheet, ocell1, oVal, oSrcRange, oDstRange as Object




    CRBP_L = 31 ' CellRangeByPosition Links      Spalte 
    CRBP_O = 2 ' CellRangeByPosition Oben      Zeile 
    CRBP_R = 31 ' CellRangeByPosition Rechts   Spalte 
    CRBP_U = 10012 ' CellRangeByPosition Unten   Zeile 801
    CRBP_EL = 5
    CRBP_EO = 0
    CRBP_ER = 5
    CRBP_EU = 10010


    sPath = ("c:\Dokumente und Einstellungen\user\Desktop\Temp.ods")
    r = 0 'Startwert Zeile setzen
    sFileName = Dir$(sPath & getPathSeparator() & "*", 0)
'    Do
      fullPath = converttourl(sPath & sFileName)
      sFileName = Dir$
      
      


      'folgend Quelldokument im Hintergrund öffnen
      dim myFileProp(0) as New com.sun.star.beans.PropertyValue
      myFileProp(0).name = "Hidden"
      myFileProp(0).value = true
      oDocument = StarDesktop.loadComponentFromURL(fullPath, "_blank", 0, myFileProp())

      'Werte aus Quelldokument lesen
      oSheet = oDocument.sheets(0) 'erstes Tabellenblatt des Quelldokumentes
      oSrcRange = osheet.getCellRangeByPosition(CRBP_L,CRBP_O,CRBP_R,CRBP_U) 'Spalte A , Zeile 1, Spalte N, Zeile 801
      oDataArray = oSrcRange.getDataArray
      
      oDocument.close(true)
      



    


    
url=converttourl("c:\Dokumente und Einstellungen\user\Desktop\AS.ods")



dim myFileProp1(0) as New com.sun.star.beans.PropertyValue
myFileProp1(0).name= "Hidden"
myFileProp1(0).value= true
oDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )


  oSheet = oDocument.sheets(0)
      oDstRange = osheet.getCellRangeByPosition(CRBP_EL,CRBP_EO,CRBP_ER,CRBP_EU) 'Spalte A , Zeile 1, Spalte N, Zeile 801
      oDstRange.setDataArray(oDataArray)




oDocument.store()
oDocument.close(true)



end sub
Es geht um die beiden Zeilen:

sPath = ("c:\Dokumente und Einstellungen\user\Desktop\Temp.ods") wobei ich glaube hier funktionierte es so. Aber wie ist es mit der Zeile:
url=converttourl("c:\Dokumente und Einstellungen\user\Desktop\AS.ods")

Normalerweise benutze ich die Zeile

Code: Alles auswählen

ThisComponent.getsheets().getByName( "Test").getCellRangeByName( "a1" ).getString() & getpathseparator
aber hier kommt ständig eine Fehlermeldung.
Bestimmt ist es nur ein kleiner Eingabefehler oder ein richtig gesetztes Zeichen.

Kann mir bitte eine helfen ???

Ach ja und allen noch ein frohes neues Jahr.

Vielen Dank
Norman

Re: Verknüpfung im Makro zum Tabellenblatt

Verfasst: Fr, 06.01.2012 22:02
von balu
Hallo Norman,
beim export komme ich ins stocken
Meinst Du jetzt wirklich Exportieren, also in ein anderes Dateiformat speichern, oder geht es doch ehern nur um das normale speichern?

Wie steht denn der Speicherpfad in der Zelle A1 drin? In Windows-Notation c:\Dokumente..., oder in File-Notation file:///C:/Dokumente....?

Kannst Du vielleicht mit Dannenhöfer was anfangen?
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig133



Gruß
balu

Re: Verknüpfung im Makro zum Tabellenblatt

Verfasst: Sa, 07.01.2012 16:38
von 12dis02424
Hallo Balu,

ich meine natürlich speichern.
In Zelle A1 steht der Pfad im Format c:\Dokumente......
Dannenhoefer hilft mir leider nicht weiter.

Eigentlich müsste der Code so oder so ähnlich aussehen aber leider funktioniert das nicht.

Code: Alles auswählen

url=converttourl  (ThisComponent.getSheets().getByName( "Test").getCellRangeByName( "a1" ).getString() & getpathseparator)
Für meine Importaufgaben sieht der Code wie folgt aus. Hier funktioniert es.

Code: Alles auswählen

    sPath = ThisComponent.getSheets().getByName( "Test").getCellRangeByName( "a1" ).getString() & getpathseparator 'Ort der die Dateien enthält >> Pfad anpassen!
    r = 0 'Startwert Zeile setzen
    sFileName = Dir$(sPath & getPathSeparator() & "*", 0)
'    Do
      fullPath = converttourl(sPath & sFileName)
      sFileName = Dir$
Gruß Norman

Re: Verknüpfung im Makro zum Tabellenblatt

Verfasst: Sa, 07.01.2012 19:01
von balu
Hallo Norman,
Dannenhoefer hilft mir leider nicht weiter.
Warum nicht? Zumindest in einer Hinsicht wäre er dir eine Hilfe gewesen.
Deine Code-Zeile

Code: Alles auswählen

sPath = ("c:\Dokumente und Einstellungen\user\Desktop\Temp.ods")
Und laut Dannenöfer hätte dir auffallen müssen, dass man das doch einfacher so schreibt.

Code: Alles auswählen

sPath = "c:\Dokumente und Einstellungen\user\Desktop\Temp.ods"
Und ferner frag ich mich; ob Du dir im klaren bist was Du hier machst?

Code: Alles auswählen

   Dim sPath, fullPath, iVal, iResult As String
    Dim r  as Integer
    Dim oDocument, thisDoc, oSheet, ocell1, oVal, oSrcRange, oDstRange as Object
Ich würd dir empfehlen noch mal bei Dannenhöfer reinzuschauen, und zwar wegen folgenden Themen:
Warum haben manche Variablen anscheinend nicht den richtigen Wert?
Und
Wie werden Variablen deklariert?


aber hier kommt ständig eine Fehlermeldung.
Und die da lautet wie?


Da ich aus deiner Schilderung und dem Code nicht so recht schlau daraus werde was Du eigentlich genau willst, aktive Datei oder Hidden-Datei speichern, geb ich dir mal nen Link der dir vielleicht behilflich sein könnte. Ist sogar mit Beispieldateien.
Wie HIDDEN-Datei speichern?



Gruß
balu