【问题标题】:Excel VBA Delete Column from imported worksheetExcel VBA 从导入的工作表中删除列
【发布时间】:2014-08-09 00:47:44
【问题描述】:

我正在使用此代码从关闭的文件中导入工作表。导入完成后,我想从该工作表中删除一列并切换回主工作表。我尝试使用 Columns(4).Delete 和 EntireColumns.Delete 但没有错误并且 Excel 不采取任何措施。关于更好的方法我可以做到这一点的任何想法?

'THIS CODE HANDLES THE IMPORT OF THE DATA
Sub ImportFile()

    'DEFINITIONS
    Dim fileImport As String
    Dim srcBook As Workbook

    ' TURNS OFF SCREEN UPDATING
    Application.ScreenUpdating = False
    Application.EnableEvents = False

    ' THE FILE PATH
    fileImport = "PATH"
    'OPENS THE BOOK
    Set sourceB = Application.Workbooks.Open(fileImport)
    'COPYS THE SHEET
    sourceB.Sheets("Miscellaneous Holds").Copy After:=ThisWorkbook.Sheets    (ThisWorkbook.Sheets.Count)

    ' CLOSES THE BOOK
    srcBook.Close True

    'ENABLES SCREEN EDIT
    Application.ScreenUpdating = True
    Application.EnableEvents = True

    Sheets("Main").Activate

End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    如果您没有在 Columns(4).EntireColumn.Delete 声明中正确限定工作表,这可能不起作用...

    所以改用sourceB.Sheets("Miscellaneous Holds").Columns(4).EntireColumn.Delete....

    如果您不希望将这些更改保存在源工作簿中,请将 saveChanges 参数更改为 false。


    'THIS CODE HANDLES THE IMPORT OF THE DATA
    Sub ImportFile()
    
        'DEFINITIONS
        Dim fileImport As String
        Dim srcBook As Workbook
        Dim srcSheet As Worksheet
    
        ' TURNS OFF SCREEN UPDATING
        Application.ScreenUpdating = False
        Application.EnableEvents = False
    
        ' THE FILE PATH
        fileImport = "PATH"
        'OPENS THE BOOK
        Set srcBook = Application.Workbooks.Open(fileImport)
    
        Set srcSheet = sourceB.Sheets("Miscellaneous Holds")
    
        srcSheet.Columns(4).EntireColumn.Delete
    
        'COPYS THE SHEET
        srcSheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    
        ' CLOSES THE BOOK
        srcBook.Close False
    
        'ENABLES SCREEN EDIT
        Application.ScreenUpdating = True
        Application.EnableEvents = True
    
        ThisWorkbook.Sheets("Main").Activate
    
    End Sub
    

    【讨论】:

    • 确实有效!但我得到一个“对象变量或未设置块变量。我认为这可能与我定义 DIMS 的方式有关。
    • 也许..您将工作簿声明为srcBook,但随后引用sourceB...这可能会导致您的错误。尝试更改名称,使它们相同,看看是否能解决您的问题。
    • 修复了,是 srcBook 的错字:) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 2021-09-03
    • 2017-05-17
    • 2018-10-04
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多