|    | 
     ▼atori さん: 
  
>  Set wb = Application.Workbooks.Open("C:\Users\user\Desktop\Sample\1.xlsx") 
 
1)Application.は省略できます。というか普通は省略します。 
他のapplication例えばWordのマクロでExcelを開くとかだと必須ですが 
ほとんどの場合、不要です。 
 
>  Set ws = wb.Worksheets("Sheet1") 
>  Set wsx = ThisWorkbook.Worksheets("Sheet1") 
> 
>  ws.Range("B:B").Copy 
>  wsx.Range("B:B").PasteSpecial Paste:=xlValues 
> 
>  wb.Save 
>  wb.Close 
 
2)保存する必要がありますか? 
保存しないで閉じるだけでよいのではありませんか。 
 
>  Set wb = Application.Workbooks.Open("C:\Users\user\Desktop\Sample\2.xlsx") 
> 
>  ws.Range("B:B").Copy 
 
3)変数wsは、毎回SETしなおす必要があります。 
このままだと、wsは、最初のブックのSheet1のままで、 
すでにブックは閉じた後なので、エラーになると思います。 
 
 
>  wsx.Range("C:C").PasteSpecial Paste:=xlValues 
 
4)B列は、2列めなので、Columns(2)、 
C列は、3列めなので、Columns(3)と記述できます。 
繰り返し処理したいときには、このほうがよいです。 
k回目の貼付け先は、Columns(k+1)と記述できるからです。 
 
 
以上を踏まえて、修正していただけますか。 
 
 | 
     
    
   |