excel - 打开工作簿并在两个工作簿中复制具有可变范围的数据
问题描述
我正在设置这张表格,我将在其中使用 VBA 打开另一个文件,复制它的内容并将它们粘贴到我的主文件中。问题是:我从中复制信息的文件和我粘贴信息的文件都有可变范围。到目前为止,这是我的代码:
Sub Import_Data()
Dim FiletoOpen As Variant
Dim lastrowopen As Variant
Dim lastrowthis As Variant
FiletoOpen = Application.GetOpenFilename
If FiletoOpen <> False Then
Set Openbook = Application.Workbooks.Open(FiletoOpen)
lastrowopen = Openbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Openbook.Sheets(1).Range("A2", "AB" & lastrowopen).Copy
lastrowthis = Application.ThisWorkbook.Sheets("Base de Dados").Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
ThisWorkbook.Sheets("Base de Dados").Range("A" & lastrowthis).PasteSpecial xlPasteValues
End If
End Sub
一切都很好,直到lastrowthis = Application.ThisWorkbook.Sheets("Base de Dados").Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
我收到错误 9,我不确定它有什么问题
有什么建议吗?
解决方案
工作簿、工作表和范围
提示
- 使用
Option Explicit
which 将强制您声明所有变量。 - 使用变量。
- 一步一步写。
- 当只需要值时,只“写入”(“分配”)值会更有效。
编码
Option Explicit
Sub Import_Data()
' Source
Dim sFilePath As Variant: sFilePath = Application.GetOpenFilename
If sFilePath = False Then Exit Sub
Dim swb As Workbook: Set swb = Workbooks.Open(FiletoOpen)
Dim sws As Worksheet: Set sws = swb.Worksheets(1)
Dim sLast As Long: sLast = sws.Cells(sws.Rows.Count, 1).End(xlUp).Row
Dim srg As Range: Set srg = sws.Range("A2", "AB" & sLast)
' Destination
Dim dwb As Workbook: Set dwb = ThisWorkbook
Dim dws As Worksheet: Set dws = dwb.Worksheets("Base de Dados")
Dim dCell As Range:
Set dCell = dws.Cells(dws.Rows.Count, 1).End(xlUp).Offset(1)
' Assign (Write)
dCell.Resize(srg.Rows.Count, srg.Columns.Count).Value = srg.Value
End Sub
推荐阅读
- javascript - 使用graphQL和sequelize查找排序查询中相对于父查询的先前条目的值
- python - 用curve_fit拟合函数,但拟合曲线错误
- android - 为什么使用 AndroidX 时嵌套的 PreferenceScreen 打不开?
- python - rpy2 代码片段返回一个空对象
- javascript - 如何使用 puppeteer 检查音频流是否正在播放?
- python - 将 2 个 numpy 数组相乘并返回每个维度的总和
- scala - 你如何使用 sbt-pgp 和不同的命令来调用 gpg?我试过 gpgCommand 没有成功
- angular - 使用 CdkDragDrop 从特定下拉列表中拖动时,如何更新 Angular 中的变量?
- python-3.x - Anaconda 没有加载 Tensorflow
- android - 安卓设备解锁时运行任务