Excel 是否可以从多个工作簿中的特定位置提取数据并将其粘贴到单个工作表中的特定位置?

Excel 是否可以从多个工作簿中的特定位置提取数据并将其粘贴到单个工作表中的特定位置?,excel,vba,Excel,Vba,我正试图从数千个更改文件名的Excel工作簿中提取数据。宏的目标是遍历我文件夹中的每个工作簿,提取特定数据并将其粘贴到单个工作表中 我知道这需要一个循环。到目前为止,这是我所拥有的,但它没有正确执行。宏运行,但什么也没发生有人能帮我解决这个问题吗? Sub WBsInFolderToMaster() Dim Sheet2 As Worksheet Set Sheet2 = ThisWorkbook.Worksheets("Sheet2") Application.Disp

我正试图从数千个更改文件名的Excel工作簿中提取数据。宏的目标是遍历我文件夹中的每个工作簿,提取特定数据并将其粘贴到单个工作表中

我知道这需要一个循环。到目前为止,这是我所拥有的,但它没有正确执行。宏运行,但什么也没发生有人能帮我解决这个问题吗?

Sub WBsInFolderToMaster()

Dim Sheet2 As Worksheet
Set Sheet2 = ThisWorkbook.Worksheets("Sheet2")

Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.AskToUpdateLinks = False
Application.Calculation = xlCalculationManual

On Error Resume Next

Dim X As Long
    For X = 6 To 8
        If Sheet2.Cells(X, "E").Value2 <> "" Then
   
            Dim FPath As Long
            FPath = Sheet2.Cells(X, "F").Value
       
            Dim openwb1 As Workbook
            Set openwb1 = Workbooks.Open(FPath, UpdateLinks:=False)
       
            Dim SPtab As Worksheet
            Set SPtab = openwb1.Sheets("SUMMARY PAGE")

            Dim PItab As Worksheet
            Set PItab = openwb1.Sheets("PROJECT INFORMATION")

            Dim CDtab As Worksheet
            Set CDtab = openwb1.Sheets("COST_DETAIL")

            Dim CStab As Worksheet
            Set CStab = openwb1.Sheets("COST_SUMMARY")
               
            '----------------------------------------------------------------------
            'SUMMARY PAGE TAB

            'Unprotect workbook
            openwb1.Unprotect Password:="PASSWORD"
           
            'Unprotect sheet
            SPtab.Unprotect Password:="PASSWORD"

            'Copy and Paste Disaster
            SPtab.Range("C8").Copy = Sheet2.Cells(X, "G").PasteSpecial(xlPasteValues)

            'Copy and Paste PW
            SPtab.Range("E7").Copy = Sheet2.Cells(X, "H").PasteSpecial(xlPasteValues)

            'Copy and Paste Applicant
            SPtab.Range("C3").Copy = Sheet2.Cells(X, "I").PasteSpecial(xlPasteValues)

            'Copy and Paste Program
            SPtab.Range("C7").Copy = Sheet2.Cells(X, "J").PasteSpecial(xlPasteValues)

            'Copy and Paste RFR
            SPtab.Range("E8").Copy = Sheet2.Cells(X, "K").PasteSpecial(xlPasteValues)
           
            '----------------------------------------------------------------------
            'PROJECT INFORMATION TAB
           
            'Unprotect sheet
            PItab.Unprotect Password:="Password"

            'Copy and Paste Disaster
            PItab.Range("C8").Copy = Sheet2.Cells(X, "L").PasteSpecial(xlPasteValues)

            'Copy and Paste PW
            PItab.Range("E7").Copy = Sheet2.Cells(X, "M").PasteSpecial(xlPasteValues)
           
            'Copy and Paste Applicant
            PItab.Range("C3").Copy = Sheet2.Cells(X, "N").PasteSpecial(xlPasteValues)

            'Copy and Paste Program
            PItab.Range("C7").Copy = Sheet2.Cells(X, "O").PasteSpecial(xlPasteValues)

            'Copy and Paste RFR
            PItab.Range("E8").Copy = Sheet2.Cells(X, "P").PasteSpecial(xlPasteValues)
   
            '----------------------------------------------------------------------
            'COST_DETAIL TAB
           
            'Unprotect sheet
            CDtab.Unprotect Password:="PASSWORD"

            'Copy and Paste SUBRECIPIENT
            CDtab.Range("D2").Copy = Sheet2.Cells(X, "Q").PasteSpecial(xlPasteValues)

            'Copy and Paste ELIGIBLE AMOUNT
            CDtab.Range("O5").Copy = Sheet2.Cells(X, "R").PasteSpecial(xlPasteValues)

            'Copy and Paste SUBSTANTIATED AMOUNT
            CDtab.Range("X6").Copy = Sheet2.Range(X, "S").PasteSpecial(xlPasteValues)
           
            '----------------------------------------------------------------------
            'COST SUMMARY TAB
           
            'Unprotect sheet
            CStab.Unprotect Password:="PASSWORD"

            'Copy and Paste SUBRECIPIENT
            CStab.Range("C2").Copy = Sheet2.Cells(X, "T").PasteSpecial(xlPasteValues)

            'Copy and Paste SUBSTANTIATED AMOUNT
            CStab.Range("X6").Copy = Sheet2.Cells(X, "U").PasteSpecial(xlPasteValues)
           
            '----------------------------------------------------------------------
            'CLOSING WORKBOOK

            openwb1.Close (False)
        End If
    Next X

'----------------------------------------------------------------------
'WHEN LOOP IS COMPLETE

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.AskToUpdateLinks = True
Application.Calculation = xlCalculationAutomatic

ThisWorkbook.Save

End Sub
子WBsInFolderToMaster()
将图纸2调整为工作表
Set Sheet2=此工作簿。工作表(“Sheet2”)
Application.DisplayAlerts=False
Application.ScreenUpdating=False
Application.EnableEvents=False
Application.AskToUpdateLinks=False
Application.Calculation=xlCalculationManual
出错时继续下一步
暗X等长
对于X=6到8
如果表2.单元格(X,“E”).值2“,则
暗淡的FPath尽可能长
FPath=Sheet2.单元格(X,“F”).值
将openwb1设置为工作簿
设置openwb1=Workbooks.Open(FPath,UpdateLinks:=False)
将选项卡设置为工作表
设置SPtab=openwb1.Sheets(“摘要页”)
将PItab设置为工作表
设置PItab=openwb1.Sheets(“项目信息”)
将CDtab设置为工作表
设置CDtab=openwb1.Sheets(“成本详细信息”)
将CStab设置为工作表
设置CStab=openwb1.Sheets(“成本汇总”)
'----------------------------------------------------------------------
'摘要页选项卡
'取消对工作簿的保护
openwb1.取消密码保护:=“密码”
'取消对工作表的保护
SPtab.Unprotect密码:=“密码”
“复制粘贴灾难”
SPtab.Range(“C8”).Copy=Sheet2.Cells(X,“G”).PasteSpecial(XLPasteValue)
'复制并粘贴PW
SPtab.Range(“E7”).Copy=Sheet2.Cells(X,“H”).PasteSpecial(XLPasteValue)
'复制并粘贴申请者
SPtab.Range(“C3”).Copy=Sheet2.Cells(X,“I”).PasteSpecial(XLPasteValue)
'复制和粘贴程序
SPtab.Range(“C7”).Copy=Sheet2.Cells(X,“J”).PasteSpecial(XLPasteValue)
'复制并粘贴RFR
SPtab.Range(“E8”).Copy=Sheet2.Cells(X,“K”).PasteSpecial(XLPasteValue)
'----------------------------------------------------------------------
'项目信息选项卡
'取消对工作表的保护
PItab.Unprotect密码:=“密码”
“复制粘贴灾难”
PItab.Range(“C8”).Copy=Sheet2.Cells(X,“L”).PasteSpecial(XLPasteValue)
'复制并粘贴PW
PItab.Range(“E7”).Copy=Sheet2.Cells(X,“M”).PasteSpecial(XLPasteValue)
'复制并粘贴申请者
PItab.Range(“C3”).Copy=Sheet2.单元格(X,“N”).PasteSpecial(XLPasteValue)
'复制和粘贴程序
PItab.Range(“C7”).Copy=Sheet2.Cells(X,“O”).PasteSpecial(XLPasteValue)
'复制并粘贴RFR
PItab.Range(“E8”).Copy=Sheet2.Cells(X,“P”).PasteSpecial(XLPasteValue)
'----------------------------------------------------------------------
“成本明细”选项卡
'取消对工作表的保护
CDtab.取消密码保护:=“密码”
'复制并粘贴子收件人
CDtab.Range(“D2”).Copy=Sheet2.Cells(X,“Q”).PasteSpecial(XLPasteValue)
'复制并粘贴符合条件的金额
CDtab.Range(“O5”).Copy=Sheet2.Cells(X,“R”).PasteSpecial(XLPasteValue)
'复制并粘贴已证实的金额
CDtab.Range(“X6”).Copy=Sheet2.Range(X,“S”).PasteSpecial(XLPasteValue)
'----------------------------------------------------------------------
“成本汇总”选项卡
'取消对工作表的保护
CStab.Unprotect密码:=“密码”
'复制并粘贴子收件人
CStab.Range(“C2”).Copy=Sheet2.Cells(X,“T”).PasteSpecial(XLPasteValue)
'复制并粘贴已证实的金额
CStab.Range(“X6”).Copy=Sheet2.Cells(X,“U”).PasteSpecial(XLPasteValue)
'----------------------------------------------------------------------
'关闭工作簿
openwb1.Close(False)
如果结束
下一个X
'----------------------------------------------------------------------
'当循环完成时
Application.DisplayAlerts=True
Application.ScreenUpdating=True
Application.EnableEvents=True
Application.AskToUpdateLinks=True
Application.Calculation=xlCalculationAutomatic
此工作簿。保存
端接头
  • 删除错误时的
    ,然后继续下一步
    。这只是隐藏了所有的错误
  • Dim FPath As Long
    应为
    Dim FPath As String
  • 您不能将
    复制
    粘贴到一行中。它必须是两个独立的步骤,但是
  • 通过使用值传输,最好避免在此处使用剪贴板,例如:
  • SPtab.Range(“C8”).Copy=Sheet2.Cells(X,“G”).PasteSpecial(xlPasteValues)
    ...
    SPtab.Range(“E7”).Copy=Sheet2.Cells(X,“H”).PasteSpecial(XLPasteValue)
    ...
    
    变成

    Sheet2.单元格(X,“G”).Value=SPtab.Range(“C8”).Value
    ...
    表2.单元格(X,“H”).值=SPtab.范围(“E7”).值
    ...
    
    等等

  • 删除错误时的
    ,然后继续下一步
    。这只是隐藏了所有的错误
  • Dim FPath As Long
    应为
    Dim FPath As String
  • 您不能将
    复制
    粘贴到一行中。它必须是两个独立的步骤,但是
  • 通过使用值传输,最好避免在此处使用剪贴板,例如:
  • SPtab.Range(“C8”).Copy=Sheet2.Cells(X,“G”).PasteSpecial(XLPasteValue