Excel VBA質問箱 IV

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

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


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

【5957】シート削除について ミッフィー 03/6/11(水) 10:19 質問
【5979】Re:シート削除について Jaka 03/6/11(水) 12:51 回答
【5984】Re:シート削除について ミッフィー 03/6/11(水) 13:34 質問
【5993】Re:シート削除について Jaka 03/6/11(水) 14:47 回答
【6002】Re:シート削除について ミッフィー 03/6/11(水) 16:06 お礼
【6003】Re:シート削除について Jaka 03/6/11(水) 16:38 回答
【6009】Re:シート削除について ミッフィー 03/6/11(水) 17:28 お礼

【5957】シート削除について
質問  ミッフィー  - 03/6/11(水) 10:19 -

引用なし
パスワード
   はじめまして。
シート削除について教えてください。

ブック1のシートをブック2へコピーし、
ブック2の不要シートを削除したいのですが、
ブレイクポイントをはって、ステップ実行を行うと、
保存したブック2を開くことができるのですが、
マクロの実行から一連の処理を行うと、
アプリケーションエラーメッセージが表示され、
ブック2が開けません。
(「メモリが"written"になることはありません」と表示され、
マシン再起動をしないとブックの削除もできなくなります)

どのようにしたら、マクロの実行からブック2を保存して
開くことができるのでしょうか?
ご教授よろしくお願いします。

sub test()

  '保存用ブックにコピー
  Windows("ブック1.xls").Activate
  Sheets("コピー").Select
  Sheets("コピー").Copy Before:=Workbooks("ブック2.xls").Sheets("Sheet1")
  
  '保存用ブックのいらないシートを削除
  Windows("ブック2.xls").Activate
  Sheets("Sheet1").Activate
  ActiveWindow.SelectedSheets.Delete

end sub

【5979】Re:シート削除について
回答  Jaka  - 03/6/11(水) 12:51 -

引用なし
パスワード
   こんにちは。

上記コードをどのブックに書いてあるのか解りませんが、上記コードの場合ブック1、2とも開いていないとダメです。

確かマクロ記録だと、
Windows("ブック1.xls").Activate
と、こうなっていたと思いますが、
WorkBooks("ブック1.xls").Activate
と、した方が良いと思います。

【5984】Re:シート削除について
質問  ミッフィー  - 03/6/11(水) 13:34 -

引用なし
パスワード
   Jakaさん、ありがとうございます。

>上記コードをどのブックに書いてあるのか解りませんが、上記コードの場合ブック1、2とも開いていないとダメです。

説明不足ですみません。
ブック1にコードを書いています。
ブック1、ブック2共に開いている状態です。

>WorkBooks("ブック1.xls").Activate

こちらでやってみたんですが、
やはり結果は同じで、ステップ実行だとOKで、
マクロの実行をすると、ブックを開けません。
この削除のコードをコメントにして実行すると
何の問題もなくブックを開くことができるのですが。。。

何度もすみませんが、ご教授よろしくお願いします。

【5993】Re:シート削除について
回答  Jaka  - 03/6/11(水) 14:47 -

引用なし
パスワード
   ▼ミッフィー さん:
>説明不足ですみません。
>ブック1にコードを書いています。
>ブック1、ブック2共に開いている状態です。
>
>>WorkBooks("ブック1.xls").Activate

自分をアクティブにしたいなら、
ThisWorkBook.Activate

【6002】Re:シート削除について
お礼  ミッフィー  - 03/6/11(水) 16:06 -

引用なし
パスワード
   Jakaさん、ありがとうございます。

>ThisWorkBook.Activate

コードを書いているブック(ここではブック1)が
アクティブになるんですよね。

ブック1にコードを書いていて、
ブック2にあるシート1を削除し、ブック2を保存
っていうことをやりたいんですが、
自分なりに試したんですが、やっぱりエラーメッセージが
表示されて、開くことが出来ません。

先ほどのレスも参考に、いろいろと試してみます。
ありがとうございます。

【6003】Re:シート削除について
回答  Jaka  - 03/6/11(水) 16:38 -

引用なし
パスワード
   Sub test()
  ThisWorkbook.Sheets("コピー").Copy Before:=Workbooks("ブック2.xls").Sheets("Sheet1")

  Application.DisplayAlerts = False
  Workbooks("ブック2.xls").Sheets("Sheet1").Delete
  Workbooks("ブック2.xls").Save
  Application.DisplayAlerts = True
  ThisWorkbook.Activate
End Sub

【6009】Re:シート削除について
お礼  ミッフィー  - 03/6/11(水) 17:28 -

引用なし
パスワード
   Jakaさん、ありがとうございます。

先ほどのコードで試したところ、や〜っと出来ました。
いろいろとありがとうございました。

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