2016-09-21 1 views
0

ワークブック1の列A、B、Cを列B、C、Gの3つの範囲にコピーしようとしています。ワークブック2は、コマンドボタンを使用し、目的のワークブックを開くことなく使用できます。ここで、WB1の列Aは列BのWB2へ、列BはWB1から列WB2へ、列Cの列WB1から列WB2へ行く。コマンドボタンを使用して3つの範囲がすべて元の範囲と異なる場合、1つのブックから別のブックに3つの列をコピーします。

次のコードを使用してAとBをBとCにコピー&ペーストすることはできましたが、別のコマンドボタンを使用せずにCをGに入れる方法はわかりません。 クリックすると、宛先ワークシートの列を完全に更新するためのボタンが必要です。 これは私が最初の2つのカラムを歩き回った方法です: ActiveSheet.Cells「

Private Sub CommandButton1_Click() 
ActiveSheet.Range("A2:B250").Copy 
Workbooks.Open Filename:="C:\Users\og677\Desktop\N 

のMatlab \ VehicleList1.xlsx \(2,2).Select Selection.PasteSpecial貼り付け:= xlPasteAll、操作:= xlNone 、skipblanks:= Falseを、トランスポーズ:= Falseの ActiveWorkbook.Save ActiveWorkbook.Close Application.CutCopyMode = Falseの

End Sub 

私はので、私はこのような何かをしようとしていた私は、範囲を設定する必要があるかもしれないと思ったが、私知らなかったどのように私は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 

私は最初の試行を続けることができればいいと思っていますが、私はすべての変更を一切受け付けていません。

ありがとうございます!

+0

'ワークブック()名前だけではなく、完全なパスのオフ'インデックス - '設定しWB2 =ワークブック( "VehicleList1")を使用し'場合は、すでに開いています。それ以外の場合は 'Set wb2 = Workbooks.Open(" C:\ Users \ og677 \ Desktop \ NightHawk \ Matlab \ VehicleList1.xlsx ")です。他のすべてはうまく見えます。 – Comintern

答えて

0

ここに私が思い付いたものです:

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 
0

貼り付けたい範囲を指定することができます。 これは、AとBがAに貼り付けられるように、私は、私のマクロwbThis列BにwbTarget列Aから

wbTarget.Sheets("sheet1").Range("A14:A100").Copy 
wbThis.Activate 
wbThis.Sheets("Sheet1").Range("B14:B100").PasteSpecial Paste:=xlPasteValues 

をコピーするためのスプリットに同じコマンドによって呼び出される複数の工程でのコピー/貼り付けをした方法で、 Bに、CにはGを貼り付けます

-1

このコードを試してみてください。

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 
+0

貼り付けられる前に範囲が選択されているコードを参照する際にエラーが発生しました。 'Windowsの( "Workbook2.xlsx")。 レンジ( "B1")を有効にします。選択 'エラーが発生し、ここで ActiveSheet.Paste' 任意のアイデアなぜですか?それは私によく見える @ sn152 助けをありがとう –

関連する問題