【发布时间】:2025-12-03 06:15:01
【问题描述】:
我打开我的工作簿 (ThisWorkbook),通过单击按钮可以浏览并选择另一个工作簿 (OpenBook) 并从工作表中导入数据 (Report Data)。
报告数据表中的 I 列包含开始日期,J 列包含每个时期(通常是一个月)的结束日期。
在 ThisWorkbook 中,我有一个名为“说明”的选项卡,我希望允许用户在此选项卡中输入请求。日期(单元格 C8)和结束日期 (E8),然后代码将引用这些日期并仅导入该范围内的数据。
从我的研究看来,您需要使用自动过滤器,然后复制可见行。但我无法让它工作。
Sub Get_Data_From_File()
Dim FileToOpen As Variant
Dim OpenBook As Workbook
Application.ScreenUpdating = False
FileToOpen = Application.GetOpenFilename(Title:="Browse for your ADR file & import range", FileFilter:="Excel Files (*.xls*),*xls*")
If FileToOpen <> False Then
Set OpenBook = Application.Workbooks.Open(FileToOpen)
OpenBook.Worksheets("Report Data").Range("A9:MJ128").Copy
ThisWorkbook.Worksheets("Report Data").Range("A9").PasteSpecial xlPasteValues
ThisWorkbook.Worksheets("Report Data").Range("A9").PasteSpecial xlFormats
OpenBook.Close False
End If
Application.ScreenUpdating = False
End Sub
【问题讨论】:
-
确保在末尾设置
Application.ScreenUpdating=True(相对于 False)。另外,您是否尝试将所有列(A:M)复制到哪里?报告数据的第一个可用行? -
A9:MJ128 从 OpenBook 复制并从 A9 开始粘贴到 ThisWorkbook。我的导入数据工作正常我只想复制和粘贴自定义日期范围内的数据。现在它只是复制并粘贴 A9:MJ128 中的所有内容。
-
所以在复制所有内容后,您想测试复制的值是否与用户输入匹配,或者您想在之后测试吗?如果你遍历列并测试值是否在范围内,然后复制,你应该很好。
-
例如,在 ThisWorkbook A9 中:MJ128 是一组数据,日期在 Col I & J 中。现在它的工作方式是简单地复制和粘贴。我希望用户提出请求。日期 01/01/2016 和结束日期 01/30/2016,只有该日期内的数据会被复制和粘贴。