Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2293 / 13644 ツリー ←次へ | 前へ→

【68815】ある列ごとコピーして別のブックに貼り付けるとメッセージが出る ひよっこ 11/4/20(水) 14:33 質問[未読]
【68819】Re:ある列ごとコピーして別のブックに貼り... SK63 11/4/20(水) 16:47 発言[未読]
【68833】Re:ある列ごとコピーして別のブックに貼り... ひよっこ 11/4/21(木) 17:44 発言[未読]
【68834】Re:ある列ごとコピーして別のブックに貼り... SK63 11/4/21(木) 18:24 発言[未読]
【68836】Re:ある列ごとコピーして別のブックに貼り... UO3 11/4/21(木) 18:34 発言[未読]
【68835】Re:ある列ごとコピーして別のブックに貼り... Yuki 11/4/21(木) 18:32 発言[未読]
【68918】Re:ある列ごとコピーして別のブックに貼り... ひよっこ 11/4/27(水) 16:15 お礼[未読]

【68815】ある列ごとコピーして別のブックに貼り付...
質問  ひよっこ  - 11/4/20(水) 14:33 -

引用なし
パスワード
   おせわになります。

業務の工数を減らすためにあるツールを作成しています。
ブック1のある行(A列とします)ごとコピーして
現在開いているブック2のB列に貼り付ける際に
「クリップボードに保存されているデータの大きさや形が、
 指定された領域と異なります。貼り付けますか?」
とメッセージが出て処理が中断されてしまいます。

ブック1のA列はどこまでデータが入っているのかわかりません。
なので、A列ごとコピーして貼り付けているのですが・・・
列には全てデータが入っているわけではなく、空きセルも存在します。
以下、コードです。

'Excelファイル以外を開けないようにする
  OpenFileName = Application.GetOpenFilename( _
      "Excelファイル(*.xls;*.xlt),*.xls;*.xlt")
  
  'ファイルが見つからない/キャンセルされた場合
  If OpenFileName = False Then
    MsgBox ("もう一度ファイルの選択をして下さい")
    eflg = True
    Exit Sub
  End If
      
  '対象ファイルを開く際に見えないように開く
  Set xlapp = CreateObject("excel.application")
  xlapp.Visible = False
  Set bk = xlapp.Workbooks.Open(OpenFileName, , ReadOnly:=True)

  'A列をコピー
  xlapp.Columns("A").Copy

  
  '集計ブックを選択し、sheet2にコピーする
  ThisWorkbook.Activate
  Sheets(2).Select
  Columns("B").PasteSpecial Paste:=xlPasteValues


お手数をおかけしますが、どなたかご教授お願い致します。

【68819】Re:ある列ごとコピーして別のブックに貼...
発言  SK63  - 11/4/20(水) 16:47 -

引用なし
パスワード
   ▼ひよっこ さん:

これならどうでしょうか??
>
>  'A列をコピー
>  xlapp.Columns("A").Copy
>
>  
>  '集計ブックを選択し、sheet2にコピーする
>  ThisWorkbook.Activate
>  Sheets(2).Select

’変更点  Range("B1").PasteSpecial Paste:=xlPasteValues

【68833】Re:ある列ごとコピーして別のブックに貼...
発言  ひよっこ  - 11/4/21(木) 17:44 -

引用なし
パスワード
   ▼SK63 さん:
>▼ひよっこ さん:
>
>これならどうでしょうか??
>>
>>  'A列をコピー
>>  xlapp.Columns("A").Copy
>>
>>  
>>  '集計ブックを選択し、sheet2にコピーする
>>  ThisWorkbook.Activate
>>  Sheets(2).Select
>
>’変更点  Range("B1").PasteSpecial Paste:=xlPasteValues

SK63さん、ご回答頂き、ありがとうございます。
ためしてみましたが、
実行時エラー1004 Rangeメソッドは失敗しました'_Global'オブジェクト
とエラーが出てしまいました。

【68834】Re:ある列ごとコピーして別のブックに貼...
発言  SK63  - 11/4/21(木) 18:24 -

引用なし
パスワード
   ▼ひよっこ さん:
>▼SK63 さん:
>>▼ひよっこ さん:
>>


>SK63さん、ご回答頂き、ありがとうございます。
>ためしてみましたが、
>実行時エラー1004 Rangeメソッドは失敗しました'_Global'オブジェクト
>とエラーが出てしまいました。


  gyo=xlapp.Range("$A$65536").End(xlUp).Row'最終行を、、、
  xlapp.Range("A1:A" & GYO).Copy
  ThisWorkbook.Activate
  Sheets(2).Select
  Range("B1:B" & gyo).PasteSpecial Paste:=xlPasteValues

もしくはZ変数にいったん格納して変数をセルへ転記する方法
gyo=xlapp.Range("$A$65536").End(xlUp).Row'最終行を、、
Z =xlapp .Cells(1, 1).Resize(gyo, 1).Value
ThisWorkbook.Sheets(2).Cells(1, 2).Resize(gyo, 2).Value = Z

【68835】Re:ある列ごとコピーして別のブックに貼...
発言  Yuki  - 11/4/21(木) 18:32 -

引用なし
パスワード
   ▼ひよっこ さん:
チョット添削です。

  '対象ファイルを開く際に見えないように開く
  Set xlApp = CreateObject("excel.application")
  xlApp.Visible = False
  Set bk = xlApp.Workbooks.Open(OpenFileName, , ReadOnly:=True)

  'A列をコピー
  bk.Worksheets(1).Columns("A").Copy

 
  '集計ブックを選択し、sheet2にコピーする
  ThisWorkbook.Sheets(2).Range("B1").PasteSpecial Paste:=xlPasteValues
  xlApp.CutCopyMode = False

'  Close
  bk.Close
  xlApp.Quit
  Set xlApp = Nothing

【68836】Re:ある列ごとコピーして別のブックに貼...
発言  UO3  - 11/4/21(木) 18:34 -

引用なし
パスワード
   ▼ひよっこ さん:

横から失礼します。
SK63 さんのアドバイスどおり変更して実行しましたが、
メッセージでず、またエラーにもならずに終了しました。
念のため、コードを以下に貼り付けます。

bk.Sheets(1).Columns("A").Copy コピー元がxlapp でしたが、特定しています。
また最後に
  xlapp.CutCopyMode = False
  Set bk = Nothing
  xlapp.Quit
  Set xlapp = Nothing
を追加しています。

(このあたりは、このプロシジャを抜けた後、別のプロシジャで実行しているとは
 思いますが、単体でテストしていますので)

加えて、単体でテストしましたので、変数宣言をこのプロシジャ内で行っています。

Sub test()
  Dim OpenFileName As Variant
  Dim eflg As Boolean
  Dim xlapp As Application
  Dim bk As Workbook
  
'Excelファイル以外を開けないようにする
  OpenFileName = Application.GetOpenFilename( _
      "Excelファイル(*.xls;*.xlt),*.xls;*.xlt")
 
  'ファイルが見つからない/キャンセルされた場合
  If OpenFileName = False Then
    MsgBox ("もう一度ファイルの選択をして下さい")
    eflg = True
    Exit Sub
  End If
   
  '対象ファイルを開く際に見えないように開く
  Set xlapp = CreateObject("excel.application")
  xlapp.Visible = False
  Set bk = xlapp.Workbooks.Open(OpenFileName, , ReadOnly:=True)

  'A列をコピー
  bk.Sheets(1).Columns("A").Copy

 
  '集計ブックを選択し、sheet2にコピーする
  ThisWorkbook.Activate
  Sheets(2).Select
  Range("B1").PasteSpecial Paste:=xlPasteValues
  xlapp.CutCopyMode = False
  Set bk = Nothing
  xlapp.Quit
  Set xlapp = Nothing
  
End Sub

【68918】Re:ある列ごとコピーして別のブックに貼...
お礼  ひよっこ  - 11/4/27(水) 16:15 -

引用なし
パスワード
   皆様のおかげで問題なくコピー処理ができました!
添削までして頂き、ありがとうございます!

初歩的な質問に丁寧にやさしくお答えいただき、ありがとうございました!

2293 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free