Wie mach eich es..bitte um hilfe..

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Wie mach eich es..bitte um hilfe..

artur

von waffi » So, 31.12.2006 16:19

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:

von waffi » So, 31.12.2006 15:28

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

von turtle47 » Mo, 25.12.2006 00:13

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

von arttur » Mo, 25.12.2006 00:06

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:

von arttur » So, 24.12.2006 23:13

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...?

Re: hallo komma4

von komma4 » So, 24.12.2006 22:00

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

hallo komma4

von arttur » So, 24.12.2006 19:38

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

von komma4 » Sa, 23.12.2006 02:16

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

Viel Erfolg.

Wie mach eich es..bitte um hilfe..

von arttur » Sa, 23.12.2006 01:05

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

Nach oben