2013-03-27 78 views
1

我在查找错误时遇到了困难:我想要做的就是仅在Book1.xls的Sheet1上运行此代码,即使在其他Excel文件或此文件的其他工作表中工作时也是如此。所有的代码的第一部分工作正常,直到** -line但后来当我在不同的页面或文件它“呛”,并给我一个错误。如何使VBA代码运行特定的Excel文件?

Sub Upload0() 

' Upload Webpage content 
Application.OnTime Now + TimeValue("00:00:10"), "Upload0" 
With Workbooks("Book1.xls").Sheets("Sheet1").QueryTables.Add(Connection:= _ 
    "URL;http://cetatenie.just.ro/ordine/articol-11", Destination:=Workbooks("Book1.xls").Sheets("Sheet1").Range("A1")) 
    .Name = "CetatenieOrdine" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = True 
    .BackgroundQuery = True 
    .RefreshStyle = xlOverwriteCells 
    .SavePassword = True 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .WebSelectionType = xlEntirePage 
    .WebFormatting = xlWebFormattingNone 
    .WebPreFormattedTextToColumns = True 
    .WebConsecutiveDelimitersAsOne = True 
    .WebSingleBlockTextImport = False 
    .WebDisableDateRecognition = False 
    .WebDisableRedirections = False 
    .Refresh BackgroundQuery:=False 
    End With 

' Deletes Empty Cells 
Workbooks("Book1.xls").Sheets("Sheet1").Range("A1").Columns("A:A").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp 

****************************************************************************** 

' Deletes useless Rows and fits the Width 
Rows("1:31").Select 
Selection.Delete Shift:=xlUp 
Range("B28").Select 
Selection.End(xlDown).Select 
Rows("17:309").Select 
Selection.Delete Shift:=xlUp 


' Text to Column function with auto-confirmation to overwrite 
Columns("A:A").Select 
Application.DisplayAlerts = False 
Selection.TextToColumns Destination:=Columns("A:A"), DataType:=xlDelimited, _ 
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ 
    Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ 
    :=":", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True 
Application.DisplayAlerts = True 

Columns("B:B").Select 
Application.DisplayAlerts = False 
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _ 
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _ 
    Semicolon:=False, Comma:=False, Space:=True, Other:=False, OtherChar _ 
    :=":", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _ 
    TrailingMinusNumbers:=True 
Application.DisplayAlerts = True 
Columns("B:B").Select 
Selection.Delete Shift:=xlToLeft 


' fit the Width of All Columns 
Cells.Select 
Range("A37").Activate 
Cells.EntireColumn.AutoFit 
Range("H1").Select 
Rows("1:1").Select 
Selection.Font.bold = True 

End Sub 

回答

4

当访问RowsRange而不指定的片材,使用VBA ActiveSheet。在这种情况下,你应该明确地指定要使用工作表:

Sub Upload0() 

' Upload Webpage content 
Application.OnTime Now + TimeValue("00:00:10"), "Upload0" 
With Workbooks("Book1.xls").Sheets("Sheet1").QueryTables.Add(Connection:= _ 
    "URL;http://cetatenie.just.ro/ordine/articol-11", Destination:=Workbooks("Book1.xls").Sheets("Sheet1").Range("A1")) 
    .Name = "CetatenieOrdine" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = True 
    .BackgroundQuery = True 
    .RefreshStyle = xlOverwriteCells 
    .SavePassword = True 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .WebSelectionType = xlEntirePage 
    .WebFormatting = xlWebFormattingNone 
    .WebPreFormattedTextToColumns = True 
    .WebConsecutiveDelimitersAsOne = True 
    .WebSingleBlockTextImport = False 
    .WebDisableDateRecognition = False 
    .WebDisableRedirections = False 
    .Refresh BackgroundQuery:=False 
    End With 

' Deletes Empty Cells 
Workbooks("Book1.xls").Sheets("Sheet1").Range("A1").Columns("A:A").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp 

****************************************************************************** 
With Workbooks("Book1.xls").Sheets("Sheet1") 
    ' Deletes useless Rows and fits the Width 
    .Rows("1:31").Delete Shift:=xlUp 
    .Rows("17:309").Delete Shift:=xlUp 


    ' Text to Column function with auto-confirmation to overwrite 
    Application.DisplayAlerts = False 
    .Columns("A:A").TextToColumns Destination:=Columns("A:A"), DataType:=xlDelimited, _ 
      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ 
      Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ 
      :=":", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True 
    .Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _ 
      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _ 
      Semicolon:=False, Comma:=False, Space:=True, Other:=False, OtherChar _ 
      :=":", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _ 
      TrailingMinusNumbers:=True 
    Application.DisplayAlerts = True 
    .Columns("B:B").Delete Shift:=xlToLeft 


    ' fit the Width of All Columns 
    .Cells.EntireColumn.AutoFit 
    .Rows("1:1").Font.bold = True 
End With 

End Sub 
+0

还有一个问题,例如用于simplcity我用用......结束与条款的部分只有你拥有了它上面仍然考虑Activesheet出于某种原因。任何线索? – maximladus 2013-03-27 10:57:16

+0

你怎么知道的?它不会删除Book1!Sheet1工作表上的选择? – 2013-03-27 11:02:41

+0

好吧,如果我从开始到这个部分的代码发布并添加WITH clasue并且结束它,只有当我留在Sheet1上时,才能正确执行代码,移动到其他页面会导致代码执行仅您的DELETING部分有以上没有下载,粘贴....等。也许你可以试试,它对你有好处吗? – maximladus 2013-03-27 11:07:59