|
Jakaさん ありがとうございます
>なんせ、マカフィ―に資料が全部消されて残ってないんです。
>テキストに書いておいたものも。
時折、見かけることが有るような気がしましたが
こうして、生に聞くと、実際に削除されてしまうんですね〜
やはり、こういう操作は・・・避けるようにしたいけど・・・
データ入力補助でシートイベントを多用していて
うまくDTブックとマクロブックが分離できなかったみたいなです
時間が取れたときにブックの分離について再考してみたいと思いますが時間がないです・・・
ただ、本件は、入れ替えが済めば重過ぎるので、修正する気にはなりません・・・
です
>モジュールを削除した後、1度VBProjectの中を1番最初に提示した方法で空回りさせてみてください。
空回りですか
了解です
ハチさん ありがとうございます
>上書きされずに違うモジュール名でImportされましたが、
すいません、書き間違いです
Module9.basに追加でModule91.basとなります
>そのあたりにコードのバグとかないですか?
症状は、アップ頂いたpopoと同じものになります。
以下は切り分けのためpopoでの検証結果1-3です
で
1)-2)時は、basが残るエラーがあったのですが
3)時に作成途中になぜかエラーが出なくなってしまいました
で、動作確認しようとするとフォームが古いままで動作せず
フォーム他入れ替えも組み込んでしまいました。
1)-2)は、対象ブックを開いたまま実行
3)はコードからブックを開いています
で、対象ブックの途中保存も不要となりました
原因がはっきりつかめていないのでなんともですが・・・
コメント頂けるとうれしいですよろしくお願いいたします
'1)上書き時 (途中でsaveしない場合)
Sub popo()
Dim wb As Workbook
Dim vbc As Object
PAS = CreateObject("WScript.Shell").SpecialFolders("Desktop")
With Workbooks("TG_BOOK.xls").VBProject
'basが11個表示
DoEvents
For Each vbc In .VBComponents
If vbc.Type = 1 Then
.VBComponents.Remove vbc
End If
Next
'Module9.basが残
DoEvents
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Next
End With
'Module9.basが残
DoEvents
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Next
End With
'Module9.basが残
DoEvents
For I = 1 To 11 '←ここでストップ?
.VBComponents.Import CreateObject("WScript.Shell").SpecialFolders("Desktop") & NEW_MD & I & ".bas"
Next
'11bas+Module91.basが追加
DoEvents
End With
End Sub
'2)上書き時 (途中でsaveした場合)
Sub popo()
Dim wb As Workbook
Dim vbc As Object
PAS = CreateObject("WScript.Shell").SpecialFolders("Desktop")
With Workbooks("TG_BOOK.xls").VBProject
'basが11個表示
DoEvents
For Each vbc In .VBComponents
If vbc.Type = 1 Then
.VBComponents.Remove vbc
End If
Next
'Module9.basが残
DoEvents
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Next
End With
'Module9.basが残
DoEvents
Workbooks("TG_BOOK.xls").Save '上書き保存
'Module9.basが残
DoEvents
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Next
End With
'Module9.basが残
DoEvents
For I = 1 To 11 '←ここでストップ?
.VBComponents.Import CreateObject("WScript.Shell").SpecialFolders("Desktop") & NEW_MD & I & ".bas"
Next
'11bas+Module91.basが追加
DoEvents
End With
End Sub
'3)エラーがなくなりました
Sub popo()
Dim wb As Workbook
'Dim vbc As Object
Dim vbcs As VBIDE.VBComponents
Dim vbc As VBComponent
'PAS = CreateObject("WScript.Shell").SpecialFolders("Desktop")
Application.EnableEvents = False
On Error Resume Next
Workbooks.Open ("\\TG_FLD\TG_BOOK.xls")
On Error GoTo 0
Application.EnableEvents = True
With Workbooks("TG_BOOK.xls").VBProject
'basが11個表示
DoEvents
'For Each vbc In .VBComponents
'If vbc.Type = 1 Then
' .VBComponents.Remove vbc
'End If
Set vbcs = Workbooks("TG_BOOK.xls").VBProject.VBComponents
For Each vbc In vbcs
Select Case vbc.Type
'Case vbext_ct_StdModule, vbext_ct_ClassModule, vbext_ct_ClassModule
Case vbext_ct_StdModule, vbext_ct_ClassModule, vbext_ct_MSForm
vbcs.Remove vbc
Case vbext_ct_Document
With vbc.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
vbcs.Remove vbc
End Select
Next
'basが無し
DoEvents
'For I = 1 To 11 '←ここでストップ?
' .VBComponents.Import CreateObject("WScript.Shell").SpecialFolders("Desktop") & NEW_MD & I & ".bas"
'Next
Call AllMdlImport("TG_BOOK.xls", "C:\Documents and Settings\NEW_MD")
DoEvents
' Workbooks("TG_BOOK.xls").Save '上書き保存
End With
End Sub
|
|