excel - 在 VBA for Excel 中尝试基于变量将数据从一个 WB 复制到另一个
问题描述
我正在尝试将数据从一个大型工作簿(将每月下载一次)编译成一个更简洁的工作簿。我每个月都会提取新数据。我会知道源文件的名称及其位置。
下面是我试图运行的代码。它似乎运行没有错误(通过所有 FOR 和 Do Until 的),但只是没有将数据从源文件移动到目标文件。我使用的变量信息是从目标 WB 的第 14 行开始的 O 列。我正在尝试通过源 WB 的 A 列对某些文本和来自目标 WB 的变量进行排序。如果我有匹配项,我会尝试从匹配的单元格偏移(向下 3 行和右侧 2 列)并将该信息复制到目标 WB 上的偏移单元格(同一行的左侧 4 列)。还将源上的下 10 行和右 2 列复制到目标上的下 1 行和左 4 列。
Sub Get_Scorecard()
Dim SourceFile As String
Dim DestFile As String
Dim SourceWB As Workbook
Dim SourceWS As Worksheet
Dim DestWB As Workbook
Dim DestWS As Worksheet
Dim path As String
Dim Msg As String
Dim SCount As Long
Dim sourcestart As Range
Dim TechName As String
'Set starting cell on Dest WS
Range("O14").Activate
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
'Set all the WB's and WS's
path = Application.ThisWorkbook.path & "\"
SourceFile = path & "March Test.xlsx"
DestFile = path & "JobSteps 2019 Test.xlsm"
Set SourceWB = Application.Workbooks.Open(SourceFile)
Set SourceWS = SourceWB.Sheets(1)
Set DestWB = Application.Workbooks.Open(DestFile)
Set DestWS = DestWB.Sheets(1)
'Start in O14 on the Dest WS and loop down till column O is empty
Do Until IsEmpty(ActiveCell.Value)
TechName = ActiveCell.Value
DestStart = ActiveCell.Address
'Start in Cell A2 on the soure WS and search for tech from Dest WS
For SCount = 2 To 700
If SourceWS.Range("A" & SCount).Text = "Provisioning*" & _
TechName & "*" Then
'copy info from 2 offset cells from SourceWS to 2 offset cells on DestWS
'I am offseting 4 columns to left on the DestWS just to see if they appear
DestWS.Range(DestStart).Offset(0, -4).Value = SourceWS.Range(SourceWS.Range _
("A" & SCount).Address).Offset(3, 2).Text
DestWS.Range(DestStart).Offset(-1, -4).Value = SourceWS.Range(SourceWS.Range _
("A" & SCount).Address).Offset(10, 2).Text
End If
Next SCount
'Offset active cell on DestWS by 4 rows
ActiveCell.Offset(4, 0).Activate
Loop
'Close SourceWB
SourceWB.Close
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
Range("A1").Activate
End Sub
解决方案
推荐阅读
- java - Java 将重复的代码片段简化为 ActionListener 中的函数
- java - 为什么我得到错误:运行 UI 小部件时找不到符号?
- php - 在 Laravel 中同时使用 join 和 pagination 时的问题
- swift - 组合:对于自定义发布者来说,这是一种好的技术吗?
- postgresql - 如何执行列和函数输入具有相同名称的函数?
- r - 表达式在 tryCatch 内抛出错误,但在其外计算良好
- python - 更改 matplotlib 图例中各个标签的字体大小
- python - Windows 上的 TensorFlow 安装:导入 _pywrap_tensorflow_internal 时 DLL 加载失败
- swift - 在 Swift 上实现 webrtc 需要帮助
- mysql - 从 csv 将记录加载到 mysql 表中