2017-04-14 1 views
0

ich so verzweifelt bin ich in VBA-Fehler 1004 für den folgenden Code nicht unterbrochen wird:Excel VBA - scheint etwas falsch ws mit Naming

Sub GetRawPrices() 
    Dim wb As Workbook 
    Dim ws As Worksheet 
    Dim wq As QueryTable 
    Dim url As String 
    Dim wb0 As Workbook 
    Set wb0 = ThisWorkbook 
    Dim i As Integer 
    For i = 2 To wb0.Worksheets("Consolidation").Range("A1").End(xlDown).Row Step 1 
    Set wb = Workbooks.Add 
    wb.SaveAs Filename:="G:\2015July\Desktop2\HORIZONTAL\" & wb0.Worksheets("Consolidation").Cells(i, 1).Value & ".xlsx" 
    url = _ 
    "TEXT;" & _ 
    "http://ichart.finance.yahoo.com/table.csv?" & _ 
    "s=" & _ 
    wb0.Worksheets("Consolidation").Cells(i, 1).Value & _ 
    "&" & _ 
    "a=01&" & _ 
    "b=01&" & _ 
    "c=2015&" & _ 
    "d=03&" & _ 
    "e=12&" & _ 
    "f=2017&" & _ 
    "g=d&" & _ 
    "ignore=.csv" 
    Set ws = wb.Worksheets.Add(After:=Sheet3) 
    ws.Name = "YAHOO_DATA" 
    Set wq = ws.QueryTables.Add(_ 
    Connection:=url, _ 
    Destination:=ws.Range("A1")) 
    wq.TextFileParseType = xlDelimited 
    wq.TextFileCommaDelimiter = True 
    wq.Refresh BackgroundQuery:=False 
    wb.Close savechanges:=True 
    Next i 

End Sub 

Es sieht aus wie mir dort unten etwas nicht in Ordnung mit den beiden Linien ist, weil ich das wb richtig erstellen und speichern kann, und ich nur in Fehler 1004 laufe, ohne das neue Arbeitsblatt ws "YAHOO_DATA" zu erstellen.

Set ws = wb.Worksheets.Add(After:=Sheet3) 
    ws.Name = "YAHOO_DATA" 

Aber was kann falsch sein? Ich habe eine andere Excel-Datei, die den fast genau gleichen Code läuft und es funktioniert gut ...

Ich wäre dankbar, wenn jemand dieses Problem für mich lösen kann ... Es ist 2 Stunden her, seit ich diesen Code schon angestarrt habe ! Vielen Dank!

Bosco

+0

Was sehen Sie, wenn Sie den Debugger verwenden, um den Code zu durchlaufen? Wenn dieser Fehler auftritt, teilt Excel Ihnen genau mit, welche Zeile es verursacht, also sollten Sie nicht raten müssen. –

+0

Haben Sie auch hier nach der genauen Fehlermeldung gesucht, die Sie bekommen? Diese Frage wurde schon oft hier gestellt (und beantwortet); sicherlich wäre eine der vorhandenen Antworten hilfreich gewesen. –

+0

Hallo Ken, Der Fehler ist "Laufzeitfehler" 1004 ": Anwendungsdefinierter oder objektdefinierter Fehler –

Antwort

3

Ändern Sie die folgende Zeile

Set ws = wb.Worksheets.Add(After:=Sheet3) 

zu

Set ws = wb.Worksheets.Add(After:=wb.Sheets(wb.Sheets.Count)) 

In einigen MS Excel-Versionen, neue Arbeitsmappe keine 3 neue Blätter erstellt.