Excel VBA質問箱 IV

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

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


8793 / 13646 ツリー ←次へ | 前へ→

【31135】実行時エラー '1004': で かずぴち 05/11/11(金) 23:38 質問[未読]
【31138】Re:実行時エラー '1004': で ichinose 05/11/12(土) 8:23 発言[未読]
【31147】Re:実行時エラー '1004': で HiroHiro 05/11/12(土) 15:08 回答[未読]
【31167】ありがとうございます かずぴち 05/11/13(日) 19:04 お礼[未読]

【31135】実行時エラー '1004': で
質問  かずぴち  - 05/11/11(金) 23:38 -

引用なし
パスワード
   済みません。教えてください。
実行時エラー '1004':
そのコマンドは複数の選択範囲に対して実行できません。
と出るんです
マクロの記録を使って試したものと記述がそう違いがないのに、動かないのです
マクロは"a.xls"に保存してます。

  Windows("a.xls").Activate
  Cells.Select
  Selection.Copy
  Workbooks.Open Filename:="b.xls"
  ActiveSheet.Paste
  Application.CutCopyMode = False
  Windows("b.xls").Activate

前後こんな感じなのですが5行目で止まるんです。教えてもらえませんでしょうか

【31138】Re:実行時エラー '1004': で
発言  ichinose  - 05/11/12(土) 8:23 -

引用なし
パスワード
   ▼かずぴち さん:
おはようございます。

>済みません。教えてください。
>実行時エラー '1004':
>そのコマンドは複数の選択範囲に対して実行できません。
>と出るんです
>マクロの記録を使って試したものと記述がそう違いがないのに、動かないのです
>マクロは"a.xls"に保存してます。
テスト問題だとすると、面白い問題ですね。


>
>  Windows("a.xls").Activate
>  Cells.Select
>  Selection.Copy
>  Workbooks.Open Filename:="b.xls"
'  ↑ここでb.xlsが開かれたとき、アクティブシートの複数のセル範囲を
'  選択していませんか? 
'  複数のセル範囲を選択して保存すれば、複数のセル範囲を選択したまま
'  開いてしまいます(便利な場合もあるから、開いてくれます)。
   range("a1").select '一度、A1を選択し直してから・・・ペースト
>  ActiveSheet.Paste
>  Application.CutCopyMode = False
>  Windows("b.xls").Activate
>
でいかがですか?
もうちょっと短い記述もできますが、
それは、次の機会に・・・。

【31147】Re:実行時エラー '1004': で
回答  HiroHiro  - 05/11/12(土) 15:08 -

引用なし
パスワード
   ▼かずぴち さん:
>済みません。教えてください。
>実行時エラー '1004':
多分Workbooks.Openの行で出ていると思います。
「b」というブックが見出だせないのです。
Pathを明示すると良いでしょう。試してみてください。

Sub test2()
  Workbooks("a.xls").Activate
  Cells.Select
  Selection.Copy
  Workbooks.Open Filename:=(ThisWorkbook.Path & "\b.xls")
  Sheets(1).Range("A1").Select
  ActiveSheet.Paste
  Application.CutCopyMode = False 
End Sub

または
Sub test3()
 Dim a As Workbook
 Dim b As Workbook   
  Set a = ThisWorkbook
  Set b = Workbooks.Open(ThisWorkbook.Path & "\b.xls") 
   With a.Sheets(1).UsedRange
  .Copy b.Sheets(1).Range("A1")
 End With
End Sub

【31167】ありがとうございます
お礼  かずぴち  - 05/11/13(日) 19:04 -

引用なし
パスワード
   遅くなりまして済みません
ありがとうございます
元々フォームに貼り付けたボタン2つの動作を、Bookを開いただけで動くようにくっ付けただけだったので、なぜなぜ??って思ってしまって
結局ボタン1つにまとめると動いてしまって、もう少しアドバイスを参考に見てみます。ありがとうございます

▼HiroHiro さん:
>▼かずぴち さん:
>>済みません。教えてください。
>>実行時エラー '1004':
>多分Workbooks.Openの行で出ていると思います。
>「b」というブックが見出だせないのです。
>Pathを明示すると良いでしょう。試してみてください。
>
>Sub test2()
>  Workbooks("a.xls").Activate
>  Cells.Select
>  Selection.Copy
>  Workbooks.Open Filename:=(ThisWorkbook.Path & "\b.xls")
>  Sheets(1).Range("A1").Select
>  ActiveSheet.Paste
>  Application.CutCopyMode = False 
>End Sub
>
>または
>Sub test3()
> Dim a As Workbook
> Dim b As Workbook   
>  Set a = ThisWorkbook
>  Set b = Workbooks.Open(ThisWorkbook.Path & "\b.xls") 
>   With a.Sheets(1).UsedRange
>  .Copy b.Sheets(1).Range("A1")
> End With
>End Sub

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