【问题标题】:how to copy a column from closed workbook to another workbook using vba?如何使用 vba 将列从关闭的工作簿复制到另一个工作簿?
【发布时间】:2017-02-22 07:41:58
【问题描述】:

在一个文件夹中,我有 30 个相同格式的工作簿*,行数和列数相等。现在我想从所有工作簿中复制一些特定的列*。 我要复制的列位于索引处:'F'、'J'、'N'、'R'、'V'、'Z'、'AD'、'AH'、'AL'、'AP'、' AT','AX'。

*注 1= 所有工作簿中只有一张工作表。 [N 个工作簿 = n 个工作表]

*注 2= 这些列是固定的...只有这些列必须被提取。

我们所做的是:

复制 'F' 列

Sub CopyingRange()

Workbooks("workbook1 name").Sheets("Sheetname").Range("F2:F453").Copy Range("A1:A453")
Workbooks("workbook2 name").Sheets("Sheetname").Range("F2:F453").Copy Range("B1:B453")
...
Workbooks("workbookn name").Sheets("Sheetname").Range("F2:F453").Copy Range("Z1:Z453")

End Sub

“J”列和其他列也是如此。

问题:

1) 我的流程非常基础。

2) 工作簿必须在我工作时打开 运行程序。

3) 耗时。

有没有其他方法可以做到这一点.. 我想在不打开工作簿的情况下复制列。

【问题讨论】:

  • 如果您有多个问题,那么您应该将您的帖子分成多个帖子/问题。毕竟,这个站点是为了解决编程问题而不是商业/个人需求。如果问题 1 有效,它似乎不是问题。问题 2 在这里解决:stackoverflow.com/questions/9311188/… 问题 3 可能已经解决,问题 2 正在解决。如果不是这种情况,那么您可以将其作为新问题发布到 Code Review

标签: vba excel


【解决方案1】:

您需要打开所有工作簿,复制所有数据,然后再次关闭所有工作簿。

这应该做得正确:

Sub CopyingRange()
Dim ColNames As String
Dim ColS() As String
Dim ReportWs As Worksheet
Dim DestCol As Long
Dim WbCol As Collection
Dim wB As Workbook

With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
End With

ColNames = "F/J/N/R/V/Z/AD/AH/AL/AP/AT/AX"
ColS = Split(ColNames, "/")
ReportWs = ThisWorkbook.Sheets("SheetName")
DestCol = 1

WbCol.Add Workbooks.Open("C:/Path/workbook1 name.xlsx")
DoEvents
'... same for the others

For i = LBound(ColS) To UBound(ColS)
    For Each wB In WbCol
        ReportWs.Range(Col_Letter(DestCol) & "2:" & Col_Letter(DestCol) & "453").Value = _
            wB.Sheets(1).Range(ColS(i) & "2:" & ColS(i) & "453").Value
        DestCol = DestCol + 1
    Next wB
Next i
For Each wB In WbCol
    wB.Close
Next wB

With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
End With

End Sub


Function Col_Letter(lngCol As Long) As String
    Col_Letter = CStr(Split(Cells(1, lngCol).Address(True, False), "$")(0))
End Function

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多