首页 > 解决方案 > 如何使用存储在“Personal.xlsb”工作簿中的宏引用打开的工作簿?

问题描述

我正在尝试从任何以前制作的工作簿中复制数据。我的宏的工作原理是选择要从中复制的文件,直到粘贴行。ThisWorkBook.Worksheets("Imported Data").Range("A1").PasteSpecial xlPasteValues 它在当前打开的工作簿中的“导入的数据”是表 4处失败 。我相信问题可能是宏是从我的“Personal.xlsb”工作簿(空白)中运行的,所以它找不到要粘贴到的正确工作表。如果每次制作新的名称都会更改,我将如何引用当前打开的工作簿。

Sub Get_Data_From_File()

    Dim FileToOpen As Variant
    Dim OpenBook As Workbook

    Application.ScreenUpdating = False
    FileToOpen = Application.GetOpenFilename(Title:="Browse for your file 
    & Import Range", FileFilter:="Excel Files(*.xlsx*),*xlsx*")
    If FileToOpen <> False Then
        Set OpenBook = Application.Workbooks.Open(FileToOpen)
        OpenBook.Sheets(3).Range("A1:F27").Copy
        ThisWorkBook.Worksheets("Imported 
    Data").Range("A1").PasteSpecial xlPasteValues
        OpenBook.Close False
    
    End If
Application.ScreenUpdating = True

End Sub

标签: excelvbanew-operator

解决方案


只是假设它,但在你调用之前做它,Application.Workbooks.Open()因为这会改变当前的工作簿。

在设置 OpenBook 之前,请设置一个新变量Set TargetRange = Worksheets("Imported Data").Range("A1")。(或者你可以使用ActiveWorkbook.Worksheets......)然后你可以改变

ThisWorkBook.Worksheets("Imported Data").Range("A1").PasteSpecial xlPasteValues

TargetRange.PasteSpecial xlPasteValues

推荐阅读