CALC: Import einer .txt in bestehende ODS Tabelle

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

FingonPalantir
Beiträge: 1
Registriert: Do, 28.04.2016 12:10

CALC: Import einer .txt in bestehende ODS Tabelle

Beitrag von FingonPalantir »

Ich habe leider nicht sehr viel erfahrungen mit Makros. Ich denke aber das ich schon sehr weit gekommen bin.

Ich habe eine Software die mir Termine via *.txt exportieren kann, leider kann die Software keine anderen Formate. Letzendlich ist es aber eine ; getrennte *.csv. Ich habe nun schon den notwendigen Importfilter herausgefunden:

Code: Alles auswählen

FileProperties(0).Name = "FilterName"
FileProperties(0).Value ="Text - txt - csv (StarCalc)"
FileProperties(1).Name = "FilterOptions"
FileProperties(1).Value ="59/45,34,65535,6,3/9/4/4/5/2/6/2,0,false,false" 
FileProperties(2).Name = "Hidden"
FileProperties(2).Value = false
Wenn ich den Import damit mache, öffnet sich eine neue OO Calc Instanz und und ich könnte den Inhalt per c&p in die vorbereitete Tabelle einfügen. Im Anschluss habe ich einen Button mit einem Makro hinterlegt, der aus der Tabelle eine *.ics erstellt die ich in beliebige Kalender importieren kann.

Ich habe nun das Problem das ich den Import gerne mit einem Klick in eine bestehende Tabelle und nicht in einer neuen OO Calc instanz haben möchte.


Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: CALC: Import einer .txt in bestehende ODS Tabelle

Beitrag von komma4 »

Willkommen im Forum.

Für die Aufgabenstellung gibt es einen Trick:
die CSV Datei wird als LINK importiert, dann wird die Verbindung gelöst.

Hier ein Beispiel (ich glaube von 2007) aus dem englischen Forum

Code: Alles auswählen

Sub ImportCSVFile(sName$,fName$, Optional oDocument)
' http://www.oooforum.org/forum/viewtopic.phtml?t=22903
' Called by: ImportCSVFile("Prices", "d:/prices.csv", ThisComponent)
' Dims
  Dim oDoc       ' Calc document.
  Dim oSheets    ' The document sheets.
  Dim oSheet     ' A particular sheet.
' Sets
  oDoc = IIF(IsMissing(oDocument), ThisComponent, oDocument)
  If NOT oDoc.SupportsService("com.sun.star.sheet.SpreadsheetDocument") _
  Then
    Print "Sorry, the specified document is NOT a Calc document"
    Exit Sub
  End If
  oSheets = oDoc.getSheets()
  If oSheets.hasByName(sName) then
    Print "Removing existing " & sName & " sheet"
    oSheets.removeByName(sName)
  End If
  oSheets.insertNewByName(sName, oSheets.count())
  oSheet = oSheets.getByIndex(oSheets.count()-1)
  Dim sFilter$
  Dim sOptions$
  Dim sURL$
  Dim s$
  s = ""
  sURL = "file:///" & fName$
  sFilter = "Text - txt - csv (StarCalc)"
  sOptions = "44,34,0,1,1/1/2/1"
  oSheet.link(sURL, s, sFilter, sOptions, _
  com.sun.star.sheet.SheetLinkMode.NORMAL)
  oSheet.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)
End Sub
Erster Parameter der Name des Tabellenblatts, zweiter der Name der CSV, dritter ein CALC-Dateiobjekt (oder die aktuelle Datei).
Den Importfilter natürlich auf Deine Werte ändern.

Hab's jetzt aktuell nicht probiert (damals von Yahoo historische Kursdaten importiert^^), sollte aber funktionieren.

Kommst' damit zurecht?
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)
Antworten