gpt4 book ai didi

vba - Excel循环宏提前结束并且需要保持文件打开以复制多个循环(不同的文件)

转载 作者:行者123 更新时间:2023-12-04 20:58:42 25 4
gpt4 key购买 nike

我对这个 VBA 代码有点问题

Sub upONGOING_Train1()
ScreenUpdating = False
'set variables
Dim rFndCell As Range
Dim strData As String
Dim stFnd As String
Dim fCol As Integer
Dim oCol As Integer
Dim SH As Worksheet
Dim WS As Worksheet
Dim strFName As String
Dim objCell As Object

Set WS = ThisWorkbook.Sheets("Trains")
For Each objCell In WS.Range("L3:L100")
oCol = objCell.Column
strFName = WS.Cells(, oCol).Offset(objCell.Row - 1, 0)
On Error GoTo BLANK: 'skip macro if no train
Workbooks.Open Filename:=strFName 'open ongoing report
Set SH = Worksheets("Trains") 'set sheet
stFnd = WS.Cells(, oCol).Offset(objCell.Row - 1, 2).Value 'set connote
With SH
Set rFndCell = .Range("C3:C1100").Find(stFnd, LookIn:=xlValues)
If Not rFndCell Is Nothing Then
fCol = rFndCell.Column
WS.Cells(, oCol).Offset(objCell.Row - 1, 3).Resize(1, 6).Copy
SH.Cells(, fCol).Offset(rFndCell.Row - 1, 10).Resize(1, 6).PasteSpecial xlPasteValues 'paste values in ongoing report if connote found
ActiveWorkbook.Save 'save ongoing report
ActiveWorkbook.Close 'close ongoing report
Else 'Can't find the item
End If
End With
BLANK:
Next objCell
ScreenUpdating = True
End Sub

我想要它做的是 - 对于 L3:L100 中的每一行
  • 打开列“L”中列出的文件(如果有或跳到下一个)并转到工作表
  • 新打开的工作表中从原始工作表列“N”到“C3:C1100”的匹配值
  • 复制列“O:T”并相对于打开的工作表中的匹配值粘贴(M:R)并保存

  • 但是,当我留下 2 行的间隙时,它会给我一个找不到文件的错误,而不是像只有 1 行丢失时那样继续下一个循环。

    好像还不能发图。

    此外,如果有人能指出我如何在单元格引用中打开工作表的好方向,只有当它尚未打开时,它通常只有 2 个文件可供使用(季度末最多 4 个)。
    当您尝试重新打开已经打开的工作簿时,在弹出的所有窗口上单击“确定”太麻烦了。

    如果它有助于让您了解它。
    我有 2 个客户的 2 份单独报告(每个季度新,因此一次最多 4 张)已经有要搜索的名称(每本书 2 张)。

    任何帮助将不胜感激

    非常感谢

    感谢那些提出建议和代码的人。
    我明天会把它们拿出来,失败了,我刚刚想出了另一个想法,重新利用我拥有但没有意识到的其他代码会有所帮助。
    该代码基本上将我需要的内容复制到一个空白选项卡并删除具有给定值的行 - 使用一些公式来帮助排序这会给我一个没有中断的行 block ,所有行都进入同一个目标文件。
    因此允许我在剩余的行上运行(更精简的谢谢大家)循环。

    最佳答案

    On Error GoTo BLANK

    Workbooks.Open Filename:=strFName


    把上面的改成这样:
    On Error Resume Next
    Workbooks.Open Filename:=strFName
    If Err.Number <> 0 Then Goto Blank
    至于 hpw 保持工作簿打开,您可以将其保持打开状态(没有 .close )但是当您想要打开它时首先检查它是否打开(即使用 Workbooks("name") ),使用与相同的机制进行一些错误处理上面,如果存在错误,那么 wb 还没有打开,你打开它。
    最后,避免指望 Active东西,例如 ActiveWorkbook`。相反,明确引用您的 wb,即:
     Set wb = Workbooks.Open(Filename:=strFName)
    Set SH = wb.Worksheets("Trains")

    关于vba - Excel循环宏提前结束并且需要保持文件打开以复制多个循环(不同的文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41436840/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com