Wie mach eich es..bitte um hilfe..

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

arttur
*
Beiträge: 16
Registriert: Sa, 23.12.2006 01:01

Wie mach eich es..bitte um hilfe..

Beitrag von arttur »

Ich habe eine Tabelle wo 200 WKN NUMMERN aufgelistet sind (es geht um Aktien)..ich möchte zu den Nummern Daten (Kurs usw) von Yahoo holen.. es geht wunderbar über Einfügen->Verknüpfung zu externen Daten..dann gebe ich http://de.finance.yahoo.com/q?s=DE0008430026 und die Daten für DE0008430026 erscheinen in der Tabelle und werden auch aktualisiert …Wie mache ich es aber bei 200 Nummern , so das ich die Funktion nicht 200 mal manuell abrufen und einbinden muss…???Hat jemand eine Idee...???

grüß
artur
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Beitrag von komma4 »

Kannst Du Makros?
Andrew hat ein Beispiel hier.
Eine Schleife über die Spalte der WKNs und feddich.

Viel Erfolg.
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)
arttur
*
Beiträge: 16
Registriert: Sa, 23.12.2006 01:01

hallo komma4

Beitrag von arttur »

danke für deine antwort..
vorweg muss ich sagen was die makros angeht- ich weiß das es sie gibt mehr aber nicht…
Der kod von andrew funktioniert aber der liefert nicht die daten die ich brauche…
Was ich brauche steht für zb. Intel (intc) und http://www.finance.yahoo.com also http://finance.yahoo.com/q?s=intc in HTML_yfncsumtab..wo soll ich -HTML_yfncsumtab- im dem kod eintragen damit die daten angezeigt werden..habe etwas damit rumgespielt aber ohne erfolg…
hätte ich die daten mit dem kod angezeigt bekommen konnte ich weiter herumbasteln..
so sehen die daten in HTML_yfncsumtab aus:

INTEL CP (NasdaqGS:INTC) Delayed quote data


After Hours: 20.07 0.01 (0.05%)
Last Trade: 20.08.06 Day's Range: 20.08 - 20.43 New! Try our new Charts in Beta

Trade Time: Dec 22 52wk Range: 16.75 - 26.63
Change: 0.29 (1.42%) Volume: 35,355,091 1d 5d 3m 6m 1y 2y 5y max

Prev Close: 20.37 Avg Vol (3m): 62,369,600
Open: 20.35 Market Cap: 115.78B Annual Report for INTC

Bid: 19.99 x 400 P/E (ttm): 19.86
Ask: 20.18 x 4000 EPS (ttm): 01.01.06
1y Target Est: 23.78 Div & Yield: 0.40 (2.00%)
NEW Add Quotes to Your Web Site Add INTC to Portfolio Set Alert DownloadData We can no longer offer real-time ECN data due to pricing changes by the exchanges. For real-time quotes (including real-time pre/post market data), sign up for a free trial of Real-time Quotes
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: hallo komma4

Beitrag von komma4 »

arttur hat geschrieben:vorweg muss ich sagen was die makros angeht- ich weiß das es sie gibt mehr aber nicht…
Das ist schlecht ... für die Aufgabe 200 Abfragen zu automatisieren.

Ich habe Andrews Beispiel auf Deinen ISP und dessen Abfragesyntax (ungleich WKN!) angepasst.

Wichtig:
Die Tabelle mit den Suchbegriffen heisst im Beispiel "Aufstellung". Es muss ein Tabellenblatt "_work" vorhanden sein.

Die Suchbegriffe stehen in Spalte B ab Zelle B2 untereinander, die Ausgabe in der nächsten Spalte. Es wird der letzte Tageskurs genommen, der sich im Treffer wohl in B19 befindet.
Habe es hier (Linux, OOo2.1, dsl*4) mit einem Dutzend DAX-Werte getestet: ca. 1 sek. pro Kurs. Der Bildschirm kann flakern - im Code fehlt praktisch jede Fehlerkontrolle oder Optimierung.

Hilft das?

Code: Alles auswählen

REM  *****  BASIC  *****
Option Explicit

' Original: http://www.oooforum.org/forum/viewtopic.phtml?t=22988
' Anpassung 2006-12-24 wro
' http://de.openoffice.info/posting.php?mode=quote&p=40369

Sub Main
  DoTheWork()
End Sub

Sub DoTheWork(Optional oDocument)
  Dim oSheet   ' Sheet to use
  Dim oWorkSheet   ' Arbeitsblatt für Ausgabe
  Dim oDoc     ' Document to use
  Dim sName$   ' Will hold the stock to get
  Dim oCell
  Dim oDisp
  Dim oFrame

  REM Use ThisComponent if the argument is missing
  oDoc=IIF(IsMissing(oDocument), ThisComponent, oDocument)

  REM Assume that we should use the first sheet.
  REM Perhaps it would be safer to use the current sheet.
  oSheet = oDoc.getSheets().getByName("Aufstellung")
  oWorkSheet = oDoc.getSheets().getByName("_work")
 
  REM Yes, I will get the active sheet rather than the first sheet.
  ' oSheet = oDoc.getCurrentController().getActiveSheet()

  REM Get string value from cell B1. B = Column 1 and 1 = Row 0
  
  ' Startzeilen-Index
  i = 1 
  ' ersten Suchbegriff aus Aufstellung
  sName = oSheet.getCellByPosition(1, i).getString()

  Do 

	' Ausgabe in Arbeitsblatt vorbereiten
	oCell = oWorkSheet.getCellByPosition(0, 0)
	oDoc.getCurrentController().select(oCell)

  REM Create a dispatch helper so that you can use the new
  REM easier to sue dispatch syntax.
  oDisp = createUnoService("com.sun.star.frame.DispatchHelper")
  oFrame = oDoc.getCurrentController().getFrame()
  InsertExternalDataSource(sName$, oFrame, oDisp)


	' Ergebnis holen und hinter Suchbegriff einstellen
	oSheet.getCellByPosition(2, i).setValue( _
		oWorkSheet.getCellByPosition(1, 18).getValue()  )


	' Index der nächsten Zeile
	i = i + 1  
	' nächsten Suchbegriff aus Aufstellung
  	sName = oSheet.getCellByPosition(1, i).getString()

	
  Loop While sName <> ""
  
End Sub

REM sName is the string name of the stock.
REM oFrame is the frame to use for the dispatch
REM oDisp is the dispatch helper to use
Sub InsertExternalDataSource(sName$, oFrame, oDisp)
  Dim oArgs(2) as new com.sun.star.beans.PropertyValue
  oArgs(0).Name = "FileName"
  oArgs(0).Value = "http://de.finance.yahoo.com/q?s=" & sName
  oArgs(1).Name = "FilterName"
  oArgs(1).Value = "calc_HTML_WebQuery"
  oArgs(2).Name = "Source"
  oArgs(2).Value = "HTML_tables"
  oDisp.executeDispatch(oFrame , ".uno:InsertExternalDataSource", "", 0, oArgs())
End Sub
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)
arttur
*
Beiträge: 16
Registriert: Sa, 23.12.2006 01:01

Beitrag von arttur »

Obwohl ich die Tabelle als Aufstellung.ods gespeichert habe bleibt er bei
oSheet = oDoc.getSheets().getByName("Aufstellung") stehen und meldet
Es ist eine Exception aufgetreten…
Type com.sun.star.container.NoSuchElementsException..
Was mache ich falsch?
Und
Kann ich hier auch Screenshoots hochladen...?
arttur
*
Beiträge: 16
Registriert: Sa, 23.12.2006 01:01

Beitrag von arttur »

bin etwas weiter gekommen..
habe oSheet = oDoc.getSheets().getByName("Aufstellung") deaktiviert und
oSheet = oDoc.getCurrentController().getActiveSheet() aktiviert...danach lauft der code bis zum i=1 dann schreibt er Variable nicht definiert...

:roll:
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Beitrag von turtle47 »

Hi arttur

sieht so aus als wenn das Tabellenblatt "Aufstellung" nicht vorhanden ist.

komma4 hatte doch extra geschrieben:
Wichtig:
Die Tabelle mit den Suchbegriffen heisst im Beispiel "Aufstellung". Es muss ein Tabellenblatt "_work" vorhanden sein.
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
waffi
Beiträge: 2
Registriert: So, 31.12.2006 15:20

Beitrag von waffi »

arttur hat geschrieben:bin etwas weiter gekommen..
habe oSheet = oDoc.getSheets().getByName("Aufstellung") deaktiviert und
oSheet = oDoc.getCurrentController().getActiveSheet() aktiviert...danach lauft der code bis zum i=1 dann schreibt er Variable nicht definiert...

:roll:
... schreibst du weiter oben, wo die ganzen "Dim" untereinander stehn

Dim i As Integer

Damit ist die Variable i (Zähler für die Schleife) als Integer ( Ganzzahl) deklariert.

Waffi
waffi
Beiträge: 2
Registriert: So, 31.12.2006 15:20

artur

Beitrag von waffi »

Mal sehn obs dir weiterhilft:

...ganz unten/links auf deinem Arbeitsblatt siehst du div Reiter ( Tabelle1...Tabelle2 usw)
Die rechtsclicken und umbenennen in "Aufstellung" und "_work" -

Im Makro ändern/ergänzen:

Nach jedem Schleifendurchgang muß der Bereich im sheet "_work" gelöscht werden.
Bei mir klappt dies mit folgendem code, eingefügt als erster Block in der Do-Schleife

oCellRange = oWorkSheet.getCellRangeByName("A1:IU1000")
oFlags = com.sun.star.sheet.CellFlags.STRING + _
com.sun.star.sheet.CellFlags.VALUE + _
com.sun.star.sheet.CellFlags.DATETIME + _
com.sun.star.sheet.CellFlags.ANNOTATION + _
com.sun.star.sheet.CellFlags.FORMULA + _
com.sun.star.sheet.CellFlags.HARDATTR + _
com.sun.star.sheet.CellFlags.STYLES + _
com.sun.star.sheet.CellFlags.OBJECTS + _
com.sun.star.sheet.CellFlags.EDITATTR
oCellRange.clearContents(oFlags)

' Ausgabe in Arbeitsblatt vorbereiten


Außerdem mußt du noch 2 Variablen deklarieren:

Dim oCellRange
Dim oFlags

..... machst du oben bei den ganzen andern "Dim" s

.....bei mir funzt es!!

Viel spaß

PS: wollt dir n shot reinstellen, bin ich aber zu blond für... :oops:
Antworten