Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

QueryTables.Add ohne Spaltenverschiebung

Forumthread: QueryTables.Add ohne Spaltenverschiebung

QueryTables.Add ohne Spaltenverschiebung
13.03.2017 13:25:34
Alex
Servus Zusammen,
über ein Makro lasse ich mir die aktuellen Börsekurse von Yahoo geben.
Mein Problem ist, dass jedes mal 3 neue Spalten eingefügt werden...
Wie kann ich die Funktion ändern/ergänzen, dass nicht jedes mal die Spalten eingefügt werden?
Bin über Refresh gestolpert, aber bekomme es nicht hingebastelt
Code:
Sub Aktienkurse()
'Worksheets("Aktualisierung").Range("A9:C100").ClearContents
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://finance.yahoo.com/d/quotes.csv?s=NOVO-B.CO+fntn.de+utdi.de=X&f=snl1" _
, Destination:=Range("$A$9"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://finance.yahoo.com/d/quotes.csv?s=DKKEUR=X+USDEUR=X&f=snl1" _
, Destination:=Range("$A$2"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

Danke für Hilfe :)
Gruß,
Alex
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: QueryTables.Add ohne Spaltenverschiebung
13.03.2017 16:33:42
Luschi
Hallo Alex,
so wie Du das machst, erstellst Du lauter Abfrage-Leichen, die zwar erstellt, aber nie wieder benutzt werden. Mit dem nachfolgenden Makro lösche erst mal alle Abfragen im Tabellenblatt 'Aktualisierung'.
Dabei wirst Du staunen, wieviele Abfragen sich bereits angesammelt habern:

Sub loeschenAlleQueries()
Dim qry As QueryTable, ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Aktualisierung")
For Each qry In ws.QueryTables
Debug.Print qry.Name
qry.Delete
Next qry
Set qry = Nothing
Set ws = Nothing
End Sub
Anschließend erstellst Du die Abfragen nach diesem Muster:

Sub Aktienkurse()
Dim qry As QueryTable, ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Aktualisierung")
ws.Range("A2:I100").ClearContents
On Error Resume Next
Set qry = ws.QueryTables("Yahoo_1")
On Error GoTo 0
If qry Is Nothing Then
'Abfrage existiert noch nicht
Set qry = ws.QueryTables.Add(Connection:= _
"TEXT;http://finance.yahoo.com/d/quotes.csv?s=NOVO-B.CO+fntn.de+utdi.de=X&f=snl1", _
Destination:=Range("$A$9"))
With qry
.Name = "Yahoo_1"
.FieldNames = True
.RowNumbers = False: .FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False: .SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Else
'Abfrage existiert bereits
qry.Refresh BackgroundQuery:=False
End If
Set qry = Nothing
On Error Resume Next
Set qry = ws.QueryTables("Yahoo_2")
On Error GoTo 0
If qry Is Nothing Then
'Abfrage existiert noch nicht
Set qry = ws.QueryTables.Add(Connection:= _
"TEXT;http://finance.yahoo.com/d/quotes.csv?s=DKKEUR=X+USDEUR=X&f=snl1", _
Destination:=Range("$A$2"))
With qry
.Name = "Yahoo_2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Else
qry.Refresh BackgroundQuery:=False
End If
Set qry = Nothing
Set ws = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: QueryTables.Add ohne Spaltenverschiebung
14.03.2017 15:49:36
Alex
Hallo Luschi,
danke Dir :)
Habe ich so übernommen und erstmal die Anfragen gelösch (mehr als 100).
Ich bin auch noch auf die Lösung: .RefreshStyle = xlOverwriteCells
gekommen, aber deine ist eleganter und das Problem mit der Anzahl der Anfragen ist nicht gelöst.
Danke und Gruß,
Alex
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige