| 
    
     |  | ▼ウーロン さん: >>>上書きされずに違うモジュール名で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
 '---------------------------------------------------------
 
 |  |