首页 > 解决方案 > 从已关闭的工作簿列中复制内容

问题描述

正如标题中所说,我正在尝试将列中的数据复制到新工作簿中,作为其每周报告,其中我在此列中添加的数据仍然有效。

Sub copyColData00()

Dim lastRow As Long

Dim myApp As Excel.Application

Dim wkBk As Workbook

Dim wkSht As Object

Dim mnt As String



Set myApp = CreateObject("Excel.Application")

mnt = InputBox("Enter Filename")

Set wkBk = Workbooks.Open("\\n\Documents\" & mnt & ".xlsx")

lastRow = wkBk.Sheets(1).Range("R" & Rows.Count).End(xlUp).Row

wkBk.Sheets(1).Range("R1:R" & lastRow).Copy

myApp.DisplayAlerts = False

wkBk.Close

myApp.Quit

Set wkBk = Nothing

Set myApp = Nothing

Set wkBk = ActiveWorkbook

Set wkSht = wkBk.Sheets("Sheet1")

wkSht.Activate

Range("R1").Select

wkSht.Paste

Exit Sub



End Sub

我的问题是我希望它直接过去它,而我得到一个提示,询问我是否要复制剪贴板中的所有数据,我的第二个问题是在 Set wkSht = wkBk.Sheets("Sheet1" )它给了我错误下标超出范围我很难理解如果有人可以帮助它会发生什么会很好!

标签: vbaexcel

解决方案


这是一个更简单的方法:

Sub copyColData00()
    Dim lastRow As Long
    Dim wkBk1 As Workbook, wkBk2 As Workbook
    Dim wkSht As Object
    Dim mnt As String

    mnt = InputBox("Enter Filename")
    Set wkBk1 = ActiveWorkbook
    Set wkBk2 = Workbooks.Open("\\n\Documents\" & mnt & ".xlsx")
    lastRow = wkBk2.Sheets(1).Range("R" & Rows.Count).End(xlUp).Row

    wkBk1.Sheets(1).Range("R1:R" & lastRow).Value = wkBk2.Sheets(1).Range("R1:R" & lastRow).Value 'change which sheet you want for wkBk1

    wkBk2.Close
End Sub

推荐阅读