2017-04-13 3 views
0

Donc, ici, j'ai un code vba qui remplit les états financiers pour différentes entreprises, quand je lance la macro, il colle les informations des colonnes B à G, mais quand je le relance, il Coller à droite des anciennes données dans les colonnes H à M et ne pas supprimer les anciennes données. Je veux qu'il supprime les anciennes données afin qu'il colle les nouvelles informations dans les colonnes B à G, en écrasant les anciennes données chaque fois que je lance la macro. Ci-dessous est mon codeÉtats financiers coller à côté de l'ancien

Merci un million!

Sub finstate() 

     sTicker = Range("A1").Value 
     If sTicker = "" Then 
MsgBox "No value to look up" 
Exit Sub 
     End If 

     With ActiveSheet.QueryTables.Add(Connection:= _ 
"URL;http://www.advfn.com/stock-market/NASDAQ/" & sTicker & "/financials?btn=annual_reports&mode=company_data" _ 
, Destination:=Range("B2")) 
.Name = "financials?btn=annual_reports&mode=company_data" 
.FieldNames = True 
.RowNumbers = False 
.FillAdjacentFormulas = False 
.PreserveFormatting = False 
.RefreshOnFileOpen = False 
.BackgroundQuery = True 
.RefreshStyle = xlInsertDeleteCells 
.SavePassword = False 
.SaveData = True 
.AdjustColumnWidth = True 
.RefreshPeriod = 0 
.WebSelectionType = xlSpecifiedTables 
.WebFormatting = xlWebFormattingAll 
.WebTables = "6" 
.WebPreFormattedTextToColumns = True 
.WebConsecutiveDelimitersAsOne = True 
.WebSingleBlockTextImport = False 
.WebDisableDateRecognition = False 
.WebDisableRedirections = False 
.Refresh BackgroundQuery:=False 
    End With 
    End Sub 

Répondre

1

Ajouter, sous l'Sub finstate():

Worksheets("your sheet name").Range("B1:G50000").Clear 
+0

Cela a fonctionné. Merci beaucoup! – Sebastian

+0

pourriez-vous marquer comme fait, merci! – Ionut

0

Voyant que vous utilisez ActiveSheet, compensation comme celui-ci est également une option:

ActiveSheet.Columns("B:G").Clear

0

Je pense que cela est beaucoup mieux, en particulier pour importer des données pour plusieurs tickers.

Sub Macro1() 

ThisSheet = ActiveSheet.Name 
Range("A2").Select 
Do Until ActiveCell.Value = "" 
Symbol = ActiveCell.Value 
Sheets(ThisSheet).Select 
Sheets.Add 


    With ActiveSheet.QueryTables.Add(Connection:= _ 
     "URL;http://www.advfn.com/stock-market/NASDAQ/" & Symbol & "/financials?btn=annual_reports&mode=company_data" _ 
     , Destination:=Range("$A$1")) 
     .Name = "financials?btn=annual_reports&mode=company_data_1" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .WebSelectionType = xlSpecifiedTables 
     .WebFormatting = xlWebFormattingNone 
     .WebTables = "6" 
     .WebPreFormattedTextToColumns = True 
     .WebConsecutiveDelimitersAsOne = True 
     .WebSingleBlockTextImport = False 
     .WebDisableDateRecognition = False 
     .WebDisableRedirections = False 
     .Refresh BackgroundQuery:=False 
    End With 

Sheets(ActiveSheet.Name).Name = Symbol 
Sheets(ThisSheet).Select 
ActiveCell.Offset(1, 0).Select 

Loop 

End Sub 

Mon Sheet1 ressemble à ceci:

enter image description here

Lorsque le script termine l'exécution, vous aurez quelque chose comme ceci:

enter image description here