簡體   English   中英

VBA將單元格范圍復制到另一個工作簿上的范圍

[英]VBA Copying Cell Range To Range on Another Workbook

Sub foo2()
Dim x As Workbook
Dim y As Workbook

'## Open both workbooks first:
Set x = Workbooks.Open("pathoffile.xlsx")
Set y = Workbooks.Open("pathoffile.xlsm")

'Now, transfer values from x to y:
y.Sheets("Main").Range("AH5:AH994").Value = x.Sheets("Database").Range("B2:B991")

'Close x:
x.Close

End Sub

我的代碼如下。 我正在嘗試從一個工作簿中復制一系列數據並將其放在另一個工作簿上。 我無法在一系列數據上工作。 例如,如果我為工作表 y 提供范圍 AH5:AH994,並為工作表 x 提供單個范圍 B2,它將運行並使用來自 B2 的數據填充該范圍。 鑒於它們的大小相同,是否可以獲取整個范圍 B2:B991 並將其復制到 AH5:AH994?

x.Sheets("Database").Range("B2:B991").Copy Destination:=y.Sheets("Main").Range("AH5:AH994")

或者如果您只想要值:

x.Sheets("Database").Range("B2:B991").Copy 
y.Sheets("Main").Range("AH5:AH994").PasteSpecial(xlPasteValues)

但價值轉移應該有效並避免剪貼板:

y.Sheets("Main").Range("AH5:AH994").Value = x.Sheets("Database").Range("B2:B991").Value

將列范圍復制到另一個工作簿

設置

  • 在一個工作簿中是B列中的源數據,從第二行(單元格B2 )開始。 行數將在運行時計算。
  • 目標是將數據(僅值)復制到另一個工作簿中從單元格AH5開始的列范圍。

結果

  • 計算后,例如sRng = .Range("B2:B5") , tCell = .Range("AH5")可以像這樣復制值:

     tCell.Resize(sRng.Rows.Count).Value = sRng.Value

編碼

Option Explicit

Sub ValuesFromRangeToFirstCell()
    
    Const sFirstCell As String = "B2"
    Const tFirstCell As String = "AH5"
    
    Dim src As Workbook
    Set src = Workbooks.Open("pathoffile.xlsx")
    With src.Sheets("Database")
        ' Define Source Column Number.
        Dim sColumn As Long
        sColumn = .Range(sFirstCell).Column
        ' Define Source Last Row Number.
        Dim sLastRow As Long
        sLastRow = .Cells(.Rows.Count, sColumn).End(xlUp).Row
        ' Define Source Column Range.
        Dim sRng As Range
        Set sRng = .Range(sFirstCell, .Cells(sLastRow, sColumn))
    End With
    
    Dim tgt As Workbook
    Set tgt = Workbooks.Open("pathoffile.xlsm")
    With tgt.Sheets("Main")
        ' Define Target First Cell Range.
        Dim tCell As Range
        Set tCell = .Range(tFirstCell)
    End With
    
    ' Copy values from Source Column Range to Target Column Range.
    tCell.Resize(sRng.Rows.Count).Value = sRng.Value
    
    src.Close

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM