Excel VBA質問箱 IV

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

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


28824 / 76732 ←次へ | 前へ→

【53198】Re:モジュール削除、インポート連続実行で不具合
発言  ハチ  - 07/12/19(水) 20:14 -

引用なし
パスワード
   ▼ウーロン さん:
>>>上書きされずに違うモジュール名でImportされましたが、
>すいません、書き間違いです
>Module9.basに追加でModule91.basとなります

プロジェクト上のモジュール ということですね。

>原因がはっきりつかめていないのでなんともですが・・・
>コメント頂けるとうれしいですよろしくお願いいたします

自分はこの手のコードはあまり書いたことがないので、
自信ないですが・・・
実験のつもりで書いてみました。
新規BookをActiveにした状態で試してみてください。

Option Explicit

'標準モジュールを10枚追加
Sub main_Add()
  Dim i As Integer
  
  For i = 1 To 10
    Call Proc_Mod_Add(ActiveWorkbook)
  Next
  Call Debug_ModName(ActiveWorkbook)
End Sub

Sub Proc_Mod_Add(Wb As Workbook)

  If Wb.Name = ThisWorkbook.Name Then Exit Sub
  
  Wb.VBProject.VBComponents.Add vbext_ct_StdModule
  Wb.Save
End Sub
'---------------------------------------------------------

'全ての標準モジュールを削除
Sub Main_Del()
  
  Call Proc_Mod_Del(ActiveWorkbook)
  Call Debug_ModName(ActiveWorkbook)
End Sub

Sub Proc_Mod_Del(Wb As Workbook)
  Dim objMod As VBComponent
  
  If Wb.Name = ThisWorkbook.Name Then Exit Sub
  
  With Wb.VBProject
    For Each objMod In .VBComponents
      If objMod.Type = vbext_ct_StdModule Then
        .VBComponents.Remove objMod
        Wb.Save
      End If
    Next
  End With
End Sub

'---------------------------------------------------------

'Debug用 イミディエイトに標準モジュール名を,区切で書き出し
Sub Debug_ModName(Wb As Workbook)
  Dim buf As Variant
  
  buf = Get_Mod_Name(Wb)
  If Not IsEmpty(buf) Then
    Debug.Print Join(buf, ",")
  Else
    Debug.Print "標準モジュールなし"
  End If
End Sub

'標準モジュール名を一次配列で返す。なければEmpty値
Function Get_Mod_Name(Wb As Workbook) As Variant
  Dim Mod_Name() As String
  Dim i As Integer
  Dim objMod As VBComponent
  i = 0
  ReDim Mod_Name(i)
  With Wb.VBProject
    For Each objMod In .VBComponents
      If objMod.Type = vbext_ct_StdModule Then
        ReDim Preserve Mod_Name(i)
        Mod_Name(i) = objMod.Name
        i = i + 1
      End If
    Next
  End With
  If i = 0 Then
    Get_Mod_Name = Empty
  Else
    Get_Mod_Name = Mod_Name
  End If
  Erase Mod_Name
End Function
'---------------------------------------------------------

1 hits

【53177】モジュール削除、インポート連続実行で不具合 ウーロン 07/12/18(火) 17:26 質問
【53178】Re:モジュール削除、インポート連続実行で... Jaka 07/12/18(火) 17:38 発言
【53179】Re:モジュール削除、インポート連続実行で... neptune 07/12/18(火) 17:49 発言
【53181】Re:モジュール削除、インポート連続実行で... ウーロン 07/12/18(火) 18:52 発言
【53189】Re:モジュール削除、インポート連続実行で... Jaka 07/12/19(水) 11:42 発言
【53192】Re:モジュール削除、インポート連続実行で... ウーロン 07/12/19(水) 14:54 質問
【53193】Re:モジュール削除、インポート連続実行で... ウーロン 07/12/19(水) 15:10 発言
【53194】Re:モジュール削除、インポート連続実行で... ウーロン 07/12/19(水) 15:43 質問
【53195】Re:モジュール削除、インポート連続実行で... Jaka 07/12/19(水) 16:21 発言
【53196】Re:モジュール削除、インポート連続実行で... ハチ 07/12/19(水) 17:46 発言
【53197】Re:モジュール削除、インポート連続実行で... ウーロン 07/12/19(水) 19:40 発言
【53198】Re:モジュール削除、インポート連続実行で... ハチ 07/12/19(水) 20:14 発言
【53202】Re:モジュール削除、インポート連続実行で... neptune 07/12/19(水) 22:41 発言
【53204】Re:モジュール削除、インポート連続実行で... ウーロン 07/12/20(木) 14:08 お礼

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