Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aktienkursabfrage von H.-W. Herber

Aktienkursabfrage von H.-W. Herber
14.04.2006 21:44:34
H.-W.
Hallo,
ich möchte ebenfalls dieses Script zur Kursabfrage nutzen, habe allerdings das Problem das der Import der Daten von dem neu erstellten WorkSheet nur mit dem Default-Wert (als WKN-Eingabe bei der InputBox) klappt. Gebe ich eine andere WKN ein, bricht die Ausführung in der Zeile:
" wks.Range("A2").Value = Cells(var, 2).Value " ab.
Fehlermeldung: Laufzeitfehler '13' - Typen unverträglich
Vielleicht kann mir jemand helfen?
Danke im voraus!
MfG Thomas

Sub Abruf()
Dim wks As Worksheet
Dim var As Variant
Dim sWkn As String, sQuery As String
Application.ScreenUpdating = False
Set wks = ActiveSheet
sWkn = InputBox( _
prompt:="WKN-Nr.:", _
Title:="Web-Abfrage", _
Default:="WCH888")
If sWkn = "" Then Exit Sub
sQuery = <a href=""http://de.finance.yahoo.com/q?m=*&s="">"http://de.finance.yahoo.com/q?m=*&s="</a> & sWkn & "&d=v1"
Worksheets.Add after:=Worksheets(Worksheets.Count)
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & sQuery, _
Destination:=Range("A1"))
.Refresh BackgroundQuery:=False
End With
var = Application.Match(sWkn & "*", Columns(1), 0)
wks.Range("A2").Value = Cells(var, 2).Value
wks.Range("B2").Value = Cells(var, 1).Value
wks.Range("C2").Value = Cells(var, 3).Value
wks.Range("D2").Value = Cells(var, 5).Value
wks.Range("E2").Value = Cells(var, 6).Value
wks.Range("F2").Value = Cells(var, 7).Value
wks.Range("G2").Value = Cells(var, 8).Value
wks.Range("H2").Value = Now
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Worksheets("Daten").Select
Range("A1").Select
Columns("A:G").AutoFit
Application.ScreenUpdating = True
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktienkursabfrage von H.-W. Herber
15.04.2006 12:33:02
H.-W.
Hallo Thomas,
habe versucht das Makro unter EXCEL97 zum laufen zu bringen. Da EXCEL97 die Methode "Match" nicht kennt, und ich die Syntax von Match auch nicht kenne für einen Workaround, hat es leider nicht geklappt.
Folgendes ist mir aber aufgefallen:
diese Zeile

sQuery = <a href=""http://de.finance.yahoo.com/q?m=*&s="">"http://de.finance.yahoo.com/q?m=*&s="</a> & sWkn & "&d=v1"

ergibt bei mir im VBA-Editor sofort eine Fehlermeldung, da der String nicht korrekt generiert werden kann. Ich vermute, dass dies ein Problem des Editors hier im Forum ist. Evtl. ist hier auch schon der Wurm für die spätere Fehlermeldung begraben.
Diese Zeile

var = Application.Match(sWkn & "*", Columns(1), 0)

muß als Ergebnis für "var" eine Zeilennummer als Integerwert ausspucken, damit die nachfolgen Zeilen korrekt abgearbeitet werden. Falls "var" einen Fehlerwert oder eine unzulässige Zeilennummer enthält dann gibt es in der nächsten Zeile Probleme. Evtl. muss du nach dieser Zeile noch eine Fehlerüberprüfung einbauen, für den Fall, dass Match keine Übereinstimmung findet.
Gruß
Franz
Anzeige
AW: Aktienkursabfrage von H.-W. Herber
15.04.2006 15:59:47
H.-W.
Hallo Franz,
vielen Dank für Deine Bemühung. Ich muss anmerken das ich selbst in Sachen VBA absoluter Newbie bin.
Allerdings ist mir beim Kopieren des Textes ein Fehler unterlaufen: in der sQuery-Zeile muss alles was in spitzen Klammern steht , inklusive der Klammern, gelöscht werden.
Das kuriose an der Zeile "var = Application.Match(sWkn & "*", Columns(1), 0)" ist, dass sie mit sWkn="WCH888" tadellos läuft, aber mit z.B sWkn="555750" oder einer anderen Nummer nicht.
Bei der Suche im aktiven Sheet (Application.Match) nach sWkn="WCH888" wird an var die Nummer der Zeile mit dem ersten Eintrag mit "WCH888" in der Spalte 1 zurückgegeben, in diesem Fall: 25 .
Bei der Suche mit z.B. sWkn="555750" steht der erste Eintrag ("555750") in Spalte 1 ebenfalls in Zeile 25. Der Wert wird aber nicht an var übergeben. Nur warum nicht? Die Struktur, der importierten Daten auf dem neuen Sheet ist, bis auf die WKN und die anderen Kurse, absolut identisch. Also sollte Match doch eigentlich die Zeile finden? Es ist doch nur ein anderer String der gesucht wird?
Grüße Thomas
Anzeige
AW: Aktienkursabfrage von H.-W. Herber
15.04.2006 18:07:46
H.-W.
Hallo Thomas,
ich habe Deine Problemschilderung zwar noch nicht in einem Makro nachvollzogen, kenne ähnliche "Phänomene" allerdings aus den Excelfunktionen VERGLEICH, SVERWEIS etc. Es liegt zumeist an der Formatierung. Der Vergleichsstring "WCH888" ist alphanumerischer Natur, wie hast Du dagegen sWkn deklariert? Augenscheinlich als Stringvariable, deshalb findet MATCH die Übereinstimmung. Die "555750" erkennt das System jedoch als numerischen Wert (es sei denn, Du hast die entsprechenden Zellen als "Text" formatiert) und stellt ihm - "unsichtbar", weil positiv - eine Stelle für das Vorzeichen voran. MATCH vergleicht also "555750" (sWkn) mit "+555750" und findet deshalb keine Übereinstimmung. Entweder formatierst Du im Excelsheet die fraglichen Zellen als "Text" oder versuchst es einmal mit
var=Application.Match(CDbl(sWkn) & ....
CDbl liefert wie WERT() in Excel den Wert eines Textes. Eine Alternative wäre Val(sWkn); Val() schneidet jedoch Dezimalstellen ab, was allerdings un Deinem Fall nicht störend wäre.
Ich hoffe, dass hilft Dir weiter
Gruß Norbert
Anzeige
AW: Aktienkursabfrage von H.-W. Herber
16.04.2006 14:16:21
H.-W.
Hallo Norbert,
Vielen Dank für Deine Tips. Mit CDbl() funktionert es! Jetzt geht es zwar nicht mehr mit WCH888 - aber das is für meine zwecke nicht wichtig.
Danke nochmal
Frohe Ostern
Grüße Thomas
AW: Aktienkursabfrage von H.-W. Herber
16.04.2006 17:14:33
H.-W.
Hallo Thomas,
mit ein paar Anpassungen funktioniert das Makro mit beliebigem Format bei der Eingabe der WKN. Insbesondere habe ich die Methode "Match" durch "Find" ersetzt. Zusätzlich wird der Fehler abgefangen, wenn eine ungültige WKN eingegeben wird.

Sub Abruf()
Dim wks As Worksheet
Dim var As Variant
Dim sWkn As String, sQuery As String
Dim Zelle As Range
Application.ScreenUpdating = False
Set wks = ActiveSheet
sWkn = InputBox( _
prompt:="WKN-Nr.:", _
Title:="Web-Abfrage", _
Default:="WCH888")
If sWkn = "" Then Exit Sub
sQuery = <a href=""http://de.finance.yahoo.com/q?m=*&s="">"http://de.finance.yahoo.com/q?m=*&s="</a> & sWkn & "&d=v1"
Worksheets.Add after:=Worksheets(Worksheets.Count)
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & sQuery, _
Destination:=Range("A1"))
.Refresh BackgroundQuery:=False
End With
Set Zelle = ActiveSheet.Columns(1).Find(sWkn & "*", , xlValues, xlPart)
If Zelle Is Nothing Then
MsgBox "Es wurde eine ungültige WKN eingegeben!"
Else
var = Zelle.Row
wks.Range("A2").Value = Cells(var, 2).Value
wks.Range("B2").Value = Cells(var, 1).Value
wks.Range("C2").Value = Cells(var, 3).Value
wks.Range("D2").Value = Cells(var, 5).Value
wks.Range("E2").Value = Cells(var, 6).Value
wks.Range("F2").Value = Cells(var, 7).Value
wks.Range("G2").Value = Cells(var, 8).Value
wks.Range("H2").Value = Now
End If
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Worksheets("Daten").Select
Range("A1").Select
Columns("A:G").AutoFit
Application.ScreenUpdating = True
End Sub

Gruß
Franz
PS: Bitte beachten, dass die Zeile sQuery = ... hier nicht korrekt dargestellt wird!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige