当所有三个范围都不同于使用命令按钮的原始范围时,将三列从一个工作簿复制到另一个工作簿
Copy Three Columns from one workbook into another when all three ranges are different than the original ranges using Command Button
我正在尝试使用命令按钮将工作簿 1 中的 A、B 和 C 列复制到工作簿 2 中的 B、C 和 G 列,而无需打开目标工作簿。此处,WB1 的 A 列转到 B WB2 列,WB1 的 B 列转到 C WB2 列,WB1 的 C 列转到 G WB2 列。
我已经能够使用以下代码将 A 和 B 复制并粘贴到 B 和 C 中,但无法弄清楚如何在不使用不同的命令按钮的情况下将 C 放入 G 中。
我需要按钮在单击时完全更新目标工作表中的列。
这就是我处理前两列的方式:
Private Sub CommandButton1_Click()
ActiveSheet.Range("A2:B250").Copy
Workbooks.Open Filename:="C:\Users\og677\Desktop\N
\Matlab\VehicleList1.xlsx"
ActiveSheet.Cells(2, 2).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, skipblanks:=False, Transpose:=False
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.CutCopyMode = False
End Sub
我想我可能需要设置范围,所以我尝试了这样的事情,但我不知道如何设置 wb2 并且在尝试设置 wb2 时出错。
Private Sub CommandButton1_Click()
Dim O As Workbook
Dim wb2 As Workbook
Dim ESN As Worksheet
Dim List As Worksheet
Dim I As Integer
Dim n As Integer
Set O = ThisWorkbook
Set wb2 = Workbooks("C:\Users.xlsx")
Set ESN = O.Sheets("ESN Regression")
Set List = VehicleList.Sheets("Sheet1")
n = 2
For I = 2 To WorksheetFunction.CountA(O.Columns.EntireColumn(1))
If Cells(I, "I").Value = "Yes" Then
List.Cells(n, "B").Value = ESN.Cells(I, "A")
List.Cells(n, "C").Value = ESN.Cells(I, "B")
List.Cells(n, "G").Value = ESN.Cells(I, "C")
n = n + 1
End If
Next
End Sub
如果可以的话,我希望能够保留我的第一次尝试,但我愿意接受任何更改。
您可以指定要粘贴的范围。
这就是我在宏中从 wbTarget 列 A 复制到 wbThis 列 B
的方式
wbTarget.Sheets("sheet1").Range("A14:A100").Copy
wbThis.Activate
wbThis.Sheets("Sheet1").Range("B14:B100").PasteSpecial Paste:=xlPasteValues
将copy/paste拆分为同一命令调用的更多步骤,以便将A和B粘贴到A和B,而将C粘贴到G
试试这个代码。
Private Sub CommandButton1_Click()
Workbooks.Open Filename:="enter file name.xlsx"
'Column A
Windows("Workbook1.xlsm").Activate
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Workbook2.xlsx").Activate
Range("B1").Select
ActiveSheet.Paste
'Column B
Windows("Workbook1.xlsm").Activate
Range("B1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Workbook2.xlsx").Activate
Range("C1").Select
ActiveSheet.Paste
'Column C
Windows("Workbook1.xlsm").Activate
Range("C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Workbook2.xlsx").Activate
Range("G1").Select
ActiveSheet.Paste
Range("A1").Select
End Sub
这是我想出的:
Private Sub CommandButton1_Click()
ActiveSheet.Range("A2:B250").Copy
Workbooks.Open Filename:="C:\Users\og677\Desktop\N\Matlab\VehicleList.xlsx"
ActiveSheet.Cells(2, 2).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, skipblanks:=False, Transpose:=False
Application.CutCopyMode = False
ThisWorkbook.Activate
ActiveSheet.Range("C2:C250").Copy
Windows("VehicleList.xlsx").Activate
ActiveSheet.Cells(2, 7).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, skipblanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
End Sub
我正在尝试使用命令按钮将工作簿 1 中的 A、B 和 C 列复制到工作簿 2 中的 B、C 和 G 列,而无需打开目标工作簿。此处,WB1 的 A 列转到 B WB2 列,WB1 的 B 列转到 C WB2 列,WB1 的 C 列转到 G WB2 列。
我已经能够使用以下代码将 A 和 B 复制并粘贴到 B 和 C 中,但无法弄清楚如何在不使用不同的命令按钮的情况下将 C 放入 G 中。 我需要按钮在单击时完全更新目标工作表中的列。 这就是我处理前两列的方式:
Private Sub CommandButton1_Click()
ActiveSheet.Range("A2:B250").Copy
Workbooks.Open Filename:="C:\Users\og677\Desktop\N
\Matlab\VehicleList1.xlsx"
ActiveSheet.Cells(2, 2).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, skipblanks:=False, Transpose:=False
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.CutCopyMode = False
End Sub
我想我可能需要设置范围,所以我尝试了这样的事情,但我不知道如何设置 wb2 并且在尝试设置 wb2 时出错。
Private Sub CommandButton1_Click()
Dim O As Workbook
Dim wb2 As Workbook
Dim ESN As Worksheet
Dim List As Worksheet
Dim I As Integer
Dim n As Integer
Set O = ThisWorkbook
Set wb2 = Workbooks("C:\Users.xlsx")
Set ESN = O.Sheets("ESN Regression")
Set List = VehicleList.Sheets("Sheet1")
n = 2
For I = 2 To WorksheetFunction.CountA(O.Columns.EntireColumn(1))
If Cells(I, "I").Value = "Yes" Then
List.Cells(n, "B").Value = ESN.Cells(I, "A")
List.Cells(n, "C").Value = ESN.Cells(I, "B")
List.Cells(n, "G").Value = ESN.Cells(I, "C")
n = n + 1
End If
Next
End Sub
如果可以的话,我希望能够保留我的第一次尝试,但我愿意接受任何更改。
您可以指定要粘贴的范围。 这就是我在宏中从 wbTarget 列 A 复制到 wbThis 列 B
的方式wbTarget.Sheets("sheet1").Range("A14:A100").Copy
wbThis.Activate
wbThis.Sheets("Sheet1").Range("B14:B100").PasteSpecial Paste:=xlPasteValues
将copy/paste拆分为同一命令调用的更多步骤,以便将A和B粘贴到A和B,而将C粘贴到G
试试这个代码。
Private Sub CommandButton1_Click()
Workbooks.Open Filename:="enter file name.xlsx"
'Column A
Windows("Workbook1.xlsm").Activate
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Workbook2.xlsx").Activate
Range("B1").Select
ActiveSheet.Paste
'Column B
Windows("Workbook1.xlsm").Activate
Range("B1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Workbook2.xlsx").Activate
Range("C1").Select
ActiveSheet.Paste
'Column C
Windows("Workbook1.xlsm").Activate
Range("C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Workbook2.xlsx").Activate
Range("G1").Select
ActiveSheet.Paste
Range("A1").Select
End Sub
这是我想出的:
Private Sub CommandButton1_Click()
ActiveSheet.Range("A2:B250").Copy
Workbooks.Open Filename:="C:\Users\og677\Desktop\N\Matlab\VehicleList.xlsx"
ActiveSheet.Cells(2, 2).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, skipblanks:=False, Transpose:=False
Application.CutCopyMode = False
ThisWorkbook.Activate
ActiveSheet.Range("C2:C250").Copy
Windows("VehicleList.xlsx").Activate
ActiveSheet.Cells(2, 7).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, skipblanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
End Sub