Excel VBA質問箱 IV

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

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


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

【53007】モジュール削除後、エクセルが落ちる ウーロン 07/12/11(火) 16:39 質問[未読]
【53008】Re:モジュール削除後、エクセルが落ちる ウーロン 07/12/11(火) 17:01 発言[未読]
【53010】Re:モジュール削除後、エクセルが落ちる neptune 07/12/11(火) 17:54 発言[未読]
【53011】Re:モジュール削除後、エクセルが落ちる ウーロン 07/12/11(火) 18:27 発言[未読]
【53015】Re:モジュール削除後、エクセルが落ちる ichinose 07/12/11(火) 22:32 発言[未読]
【53021】Re:モジュール削除後、エクセルが落ちる ウーロン 07/12/12(水) 10:24 お礼[未読]

【53007】モジュール削除後、エクセルが落ちる
質問  ウーロン  - 07/12/11(火) 16:39 -

引用なし
パスワード
   こんにちは
モジュールに不具合があり、入れ換えしたいのですが
下記コードでは ←ココで落ちる で
"0x6501d9d4" の命令が "0x00000068" のメモリを参照しました。メモリが "read" になることはできませんでした。
プログラムを終了するには [OK] をクリックしてください
で落ちてしまいます

どう修正すればよいでしょうか


あわせて
修正ブックは、特定フォルダーに、多数存在します
コードが完成したらループで処理したいと考えていますが
注意点等ありましたらあわせて、アドバイス頂けるとうれしいです。

よろしくお願いいたします。


環境
試行環境 win2k エクセル2k
運用環境 上記 + winxp エクセル203

'エクセル2003での利用時は、ツール/マクロ/セキュリティ
'  /VBプロジェクトへのアクセスを信頼するにチェック
'Visual Basic for Application Extensiblityの参照設定


Sub Del_All_TGBKMdl()
 Dim myVBComp
 Dim W_Book As Workbook
 
 Dim TG_BK As String

 TG_BK = "C:\CP\2007\200712\Book1.xls" 
 
 On Error GoTo Err1  

  Set W_Book = Workbooks(TG)   'TG_BKが開いているとき
  
  For Each myVBComp In W_Book.VBProject.VBComponents
  
    If myVBComp.Type = 100 Then
    'Documentモジュール(ThisWorkbokやSheet)なら消去
     With myVBComp.codemodule
       .DeleteLines 1, .CountOfLines
     End With
     
    Else
    'Documentモジュール(標準モージュール、クラスモジュール、Formなど)以外なら削除
      'Application.VBE.ActiveVBProject.VBComponents.Remove myVBComp
      W_Book.Application.VBE.ActiveVBProject.VBComponents.Remove myVBComp
      
    End If
    
  Next myVBComp
  
  W_Book.Save  '←ココで落ちる
  
  Set W_Book = Nothing      
  
  Exit Sub
  
Err1:

  MsgBox Err().Number & vbLf & Err().Description
  Resume
End Sub

コード上でなくても、手動保存しようとすると、同様に落ちてしまう

【53008】Re:モジュール削除後、エクセルが落ちる
発言  ウーロン  - 07/12/11(火) 17:01 -

引用なし
パスワード
   修正 追記

 'TG_BK = "C:\CP\2007\200712\Book1.xls"
 ↓
 TG_BK = "Book1.xls"

  'W_Book.Save
と、すると、モジュール実行後
手動で上書き保存しようとすると
同じエラーで落ちてしまいます。

【53010】Re:モジュール削除後、エクセルが落ちる
発言  neptune  - 07/12/11(火) 17:54 -

引用なし
パスワード
   ▼ウーロン さん:
こんにちは

あの〜やる事が根本的に間違ってますよ。
こんな、ウイルスまがいの手法ではなく、Bookを差し替える方法を検討する
事をお勧めします。

で、本題ですが、のBookに対してこのような事をした事は無いのですが、
ActiveVBProjectは操作するprojectはActiveになっているのでしょうか?
名前で指定した方が硬いです。

それと、Bookが閉じる時に改造したBookがAuto_Closeなんかで、
何か処理をしてませんか?

VBProjectかなんかにも、Saveメソッドがあったような記憶がありますが、
それは試してみましたか?

何よりも最初に書いたとおり、マクロの管理方法を変更する事をお勧めします。
O/Sのウィルスチェックにも引っかかりそうだし、ろくな事無いですから。

【53011】Re:モジュール削除後、エクセルが落ちる
発言  ウーロン  - 07/12/11(火) 18:27 -

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

>あの〜やる事が根本的に間違ってますよ。
>こんな、ウイルスまがいの手法ではなく、Bookを差し替える方法を検討する
>事をお勧めします。

>何よりも最初に書いたとおり、マクロの管理方法を変更する事をお勧めします。
>O/Sのウィルスチェックにも引っかかりそうだし、ろくな事無いですから。

ですよね・・・
手動で入れ替えることも考えたのですが、大変そうなです

ブックは、データ入力用で、入力補助マクロの変更対応(参照先変更他)です
新規ブックはいいのですが、旧登録ブックが対応できない状況となっています

で、新規ブックにデータコピーを行おうとしたのですが
結合セルが有ると
実行時エラー '1004':結合されたセルの一部を変更することはできません。
だったと思うのですが、のエラーを回避することが出来ないようなです。

これは、別件で、何度か経験したことがあって、無理ではと思っています。

>Bookが閉じる時に改造したBookがAuto_Close
は無いです

>ActiveVBProjectは操作するprojectはActiveになっているのでしょうか?
>名前で指定した方が硬いです。

>VBProjectかなんかにも、Saveメソッドがあったような記憶がありますが、
>それは試してみましたか?

ありがとうございます。
もう少し、調べて試してみます。

【53015】Re:モジュール削除後、エクセルが落ちる
発言  ichinose  - 07/12/11(火) 22:32 -

引用なし
パスワード
   ▼ウーロン さん:
こんばんは。

>モジュールに不具合があり、入れ換えしたいのですが
>下記コードでは ←ココで落ちる で
>環境
>試行環境 win2k エクセル2k
>運用環境 上記 + winxp エクセル203
>
>'エクセル2003での利用時は、ツール/マクロ/セキュリティ
>'  /VBプロジェクトへのアクセスを信頼するにチェック
>'Visual Basic for Application Extensiblityの参照設定
私は、Excel2002、Win2000で投稿されたコードを試しましたが、
仰られたとおり落ちました。

下記の修正では正常に作動しました。


>Sub Del_All_TGBKMdl()
> Dim myVBComp
> Dim W_Book As Workbook
> 
> Dim TG_BK As String
>
> TG_BK = "C:\CP\2007\200712\Book1.xls" 
> 
> On Error GoTo Err1  
>
>  Set W_Book = Workbooks(TG)   'TG_BKが開いているとき
>  
>  For Each myVBComp In W_Book.VBProject.VBComponents
>  
>    If myVBComp.Type = 100 Then
>    'Documentモジュール(ThisWorkbokやSheet)なら消去
>     With myVBComp.codemodule
>       .DeleteLines 1, .CountOfLines
>     End With
>     
>    Else
>    'Documentモジュール(標準モージュール、クラスモジュール、Formなど)以外なら削除
>      'Application.VBE.ActiveVBProject.VBComponents.Remove myVBComp
     W_Book.VBProject.VBComponents.Remove myVBComp
>      
>    End If
>    
>  Next myVBComp
>  
>  W_Book.Save  '←ココで落ちる
>  
>  Set W_Book = Nothing      
>  
>  Exit Sub
>  
>Err1:
>
>  MsgBox Err().Number & vbLf & Err().Description
>  Resume
>End Sub

バージョンが違った場合でも正常に作動するか試してみて下さい。

>こんな、ウイルスまがいの手法ではなく、Bookを差し替える方法を検討する
事をお勧めします。

私は、neptuneさんとはちょっと意見が違います。
私は、再利用可能なプロシジャーを沢山資源として貯蓄しておいて、
初回作成のプログラムより、2回目、2回目作成のプログラムより、3回目と
作成時間を少しでも短縮したいと考えています。
再利用可能なプログラムを色んな種類のブックに適応した後にバグ修正や
機能追加なりを既に作成した多くのブックに適応させる(昔のパッチに似ています)
等便利なツールがあれば良いなあ と思っています。
こんなツールを将来、ウーロンさんが作成してくれたら・・・、
と期待しています。

ウイルスまがいもうまく使えば、薬になりますよね!!

これに関しては、以前にも

www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=1619;id=

ここに私の意見を記述させていただきました。
Vbprojectに関して、掲示板で投稿することに懸念される方の考え方も私は
決して違うとは思いませんが、ここで意見交換をしないとせっかくのVBAの可能性
を潰してしまいます(きっと不具合もあるでしょうから、その回避方法など)。

仕様によっては、他の方法があるとか、Vbprojectを操作すれば
こんな方法もある等の投稿をここですることが正しい使用方法の
指針になると思いますが、いかがですか?

【53021】Re:モジュール削除後、エクセルが落ちる
お礼  ウーロン  - 07/12/12(水) 10:24 -

引用なし
パスワード
   ichinose さん おはようございます

動作検証 修正コードのUP ありがとうございます。

win2k エクセル2k
winxp エクセル2003

両方で動かしましたが、正常に終了することが出来ました
手動、コード上でも保存することが出来ました。
希望の操作かないました。
ありがとうございました。


>www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=1619;id=
ご紹介ありがとうございます
興味深く拝見させて頂きました。

こちらの板の雰囲気はまだ掴みきれていませんが
やはり、このあたりの議論は行われているんですか
また、
個人で設置されているサイトと聞いてビックリです。


実は、別掲示板でVBAを勉強させて頂いたのですが
そちらでは、この問題はご法度のため、こちらにおじゃまさせて頂きました。


実際、難しい問題だとは思うのですが
ichinose さん
>Vbprojectに関しては、「Vbproject」というワードが分かれば、検索すれば容易に情報が入手できますよね?
>そもそもHELPでもVBEから辿れば、メソッド、プロパティの詳細が参照できます。
>つまり、れっきとした公開された手法ということになります
と、思います

WEB検索かければ、それはそれで、類似の情報も取得できるわけですし・・・

レベルが低いですが
パスワード忘れ
www2.moug.net/bbs/security/20071006000001.htm
に、マヨラーで書き込みをしています


>私は、再利用可能なプロシジャーを沢山資源として貯蓄しておいて、
>初回作成のプログラムより、2回目、2回目作成のプログラムより、3回目と
>作成時間を少しでも短縮したいと考えています。
>再利用可能なプログラムを色んな種類のブックに適応した後にバグ修正や
>機能追加なりを既に作成した多くのブックに適応させる(昔のパッチに似ています)
>等便利なツールがあれば良いなあ と思っています。
>こんなツールを将来、ウーロンさんが作成してくれたら・・・、
そうですよね
こんな風に、利用することができればいいなと思っています。


neptune さん
ichinose さん
ありがとうございました。 

今後もご教授よろしくお願いいたします。
解決です

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