如何从共享工作簿中复制信息,其他用户正在使用该工作簿(无需打开)

时间:2014-03-20 18:28:29

标签: vba excel-vba excel

如果有人正在使用的共享excel工作簿(只读/通知),当我尝试打开它时,它会问我。

  • 我想以只读方式打开它

(非常重要):我实际上不想在后台打开excel文件,而是复制已关闭文件中的数据。原因是文件很大,打开需要3-4分钟。

我有办法吗?

  1. 打开另一个用户正在使用的工作簿;
  2. 复制,例如A列到一个新的电子表格中(我只是试图将信息从工作簿中复制出来,再添加到新的电子表格中);并在以下情况下完成所有工作:
  3. 没有实际打开我在后台引用的文件,因为文件太大了。
  4. 我正在寻找代码的通用框架。

    - 谢谢你!

1 个答案:

答案 0 :(得分:1)

这对你有用,但它必须有一个最大范围(我使用60000)试图使用整个列将值复制到远远超出你想要的行。这会将值放入相应的单元格中并复制它们,然后在第一个0之后删除所有行,这将是单元格为空时公式的结果。

Sub closed_copier()
    Range("A1", "A60000").Value = "='Path\to\your\workbook\[workbook_name.xlsx]SheetName'!A1:A60000"
    Range("A1", "A60000").Copy
    Range("A1").PasteSpecial xlPasteValues
    clearEmptyRows
End Sub


Sub clearEmptyRows()
    Dim lcell As Range
    Dim last_data_row As Long
    For Each lcell In Range("A:A")
        If lcell.Value = 0 Then
            last_data_row = lcell.Row
            Exit For
        End If
    Next lcell
    Range("A" & last_data_row, "A60000").EntireRow.Delete
End Sub

另请注意,如果此行包含任何零,则下面的所有内容都将被完全删除。打开工作簿会产生更好的结果,但由于您要求不会发生这种情况,因此您的选择是有限的。