[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAコピペでのエラー』(ピノ)
いつも参考にさせて頂いております。
下記VBAを、毎日走らせ、今までは正常作動しておりますが、
今日いきなり下記のようなエラーが発生しました。
特にフォーマットの変更はしていないのですが…
考えられる原因、もしわかれば教えてください。
<VBA>
'調査抽出生データ(単価違い)をコピー Windows("調査抽出生データ(単価違い).csv").Activate ActiveWindow.WindowState = xlNormal
Rows("2:2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy
'調査フォーマットに値貼付け Windows("◆【更新用】調査.xlsx").Activate Range("A9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Range("A9").Select
<エラー箇所>
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
<エラー内容>
コピー領域と貼り付け領域のサイズが違うため、これをここに貼り付けることができません。貼付領域内のいずれか一つのセルを選ぶか、または同じサイズの領域を選びもう一度貼り付けてください。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
また、コードは「Sub 〇〇 〜 End Sub」までが一つのプロシージャと呼ばれるものなので、数行くらい横着せずに提示されたほうがお互いに誤解が無くてよいと思います。
■2
回答のほうは、ステップ実行して観察してみましたか?
(1) Rows("2:2").Select (2) Range(Selection, Selection.End(xlDown)).Select (3) Selection.Copy
↑ですと
(1) 2行目【全体】を選択
(2)-1 選択されている範囲のうち最初のセル(=A2セル)から下方向に見てデータが終わる行 -2 選択されている範囲(=2行目全体)〜その行を【選択】
(3)【選択中】のセル範囲をコピー
となっていますから、仮にA2セル以下が何もはいってないと、2行目全体〜最大行全体をコピーすることになり、別ブックの9行目に貼り付けようとしても(行があふれちゃうから)エラーになるとおもいます。
したがって、最終行は別のアプローチを使って、【A列以外も含めてどの行が最終行なのか】チェックされたほうがよいです。
■3
踏まえて「◆【更新用】調査.xlsx」ブックの【1番目】のシートに貼り付けるなら、例えば↓のようにすることも可能だとおもいます。
Sub さんぷる()
With Workbooks("調査抽出生データ(単価違い).csv").Worksheets(1) .Range("A1", .Cells.SpecialCells(xlCellTypeLastCell)).Offset(1).Copy End With
Workbooks("◆【更新用】調査.xlsx").Worksheets(1).Range("A9").PasteSpecial Paste:=xlPasteValues
End Sub
※↑未テストです。
■4
以下は、ちょっと難しく(ややこしく)なるので参考としてですが。
元データがCSVファイルのようですから、ブックとして開くのではなく「QueryTables.Add」を使って外部データとしてインポートするというアプローチも有効だとおもいます。(開始行や形式制御が可能になるため)
(もこな2 ) 2020/04/14(火) 17:39
■2、3
わかりやすいご説明、ありがとうございます。
そういうことだったんですね…。
最終行を指定するようにいたします。
いただいた構文で、やりたいことができそうです。
■4
QueryTables.Addメソッドを初めて知りました!
Workbooks.OpenText を使用していましたが、
同じシートでもテキストを開けるんですね、勉強になりました。
ご教授、いつもありがとうございます。
(ピノ) 2020/04/14(火) 21:52
(もこな2 ) 2020/04/14(火) 22:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.