【问题标题】:VBA - Activate opened workbookVBA - 激活打开的工作簿
【发布时间】:2017-01-16 11:01:20
【问题描述】:

我想阅读一个工作簿并复制另一个工作簿中的一些单元格。 该代码的目的是将不同工作表中的单元格从一个文件复制到另一个文件。

为了这个提议,我创建了这个代码:

Sub processCopy(file)

'Abrir documento
Workbooks.Open Filename:=file, UpdateLinks:=0


cantn = ThisWorkbook.Sheets.Count
cantv = Sheets.Count - 5
cantn = cantn - 4

'Recorrer los libros del documento abierto
For i = 1 To (Sheets.Count - 5)

    'Obtener nombre del libro seleccionado
    nombre = Sheets(i + 2).Name
    'Filtrar los libros no necesarios
    If nombre <> "Instructions" And nombre <> "Executive Summary" And nombre <> "Process Update" And nombre <> "Template" And nombre <> "Notes" Then

        If cantv >= cantn Then
         ThisWorkbook.Sheets(3).copy after:=ThisWorkbook.Sheets(cantn + 2)
         cantn = cantn + 1
         ThisWorkbook.Sheets(cantn + 2).Name = nombre
        ElseIf nombre <> ThisWorkbook.Sheets(cantn + 2).Name Then
         ThisWorkbook.Sheets(cantn + 2).Name = nombre
        End If

        Workbooks.Open Filename:=file, UpdateLinks:=0

        ActiveWorkbook.Worksheets(nombre).Activate

        ActiveWorkbook.Sheets(nombre).Range("C4:O23").Select
        Selection.copy
        ThisWorkbook.Sheets(nombre).Range("C4:O23").PasteSpecial

在完成第一张表中的过程后,我比较在新文件中是否有任何其他表开始该过程。如果不是(总是)我创建一个新工作表以开始复制和粘贴的过程,但是 ThisWorkbook 和 ActiveWorkbook 函数正在同一个工作表上工作(从同一个工作簿复制和粘贴),而不是从一个文件到另一个文件。

这就是为什么,我打开第一个工作簿,但是当复制和粘贴过程完成时,出现以下消息:

Error image

我能做些什么来解决这个问题?

谢谢大家

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    创建一个工作簿对象并将您正在打开的工作簿分配给它:

    Dim wb as Workbook
    Set wb = Workbooks.Open(Filename:=file, UpdateLinks:=0)
    

    然后你可以引用这个变量而不是 ActiveWorkbook

    因此,要更改代码所在的工作簿中的内容,请使用 ThisWorkbook

    要更改其他工作簿中的内容,请使用 wb

    【讨论】:

      猜你喜欢
      • 2019-03-03
      • 2016-07-28
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2023-04-05
      • 2023-04-01
      • 2013-10-13
      相关资源
      最近更新 更多