Excel VBA質問箱 IV

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

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


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

【53147】モジュールインポート時のThisWorkbook、シートモジュールについて ウーロン 07/12/17(月) 17:10 質問[未読]
【53150】Re:モジュールインポート時のThisWorkbook... ウーロン 07/12/17(月) 17:54 質問[未読]
【53162】Re:モジュールインポート時のThisWorkbook... neptune 07/12/17(月) 22:58 発言[未読]
【53171】Re:モジュールインポート時のThisWorkbook... ウーロン 07/12/18(火) 11:50 お礼[未読]

【53147】モジュールインポート時のThisWorkbook、...
質問  ウーロン  - 07/12/17(月) 17:10 -

引用なし
パスワード
   よろしくお願いいたします

モジュールインポート時、下記コードでは
ThisWorkbook、シートモジュールはクラスモジュールになってしまいます

修正方法 アドバイスよろしくお願いいたします

'要 参照設定 MicroSoft Scripting Runtime
'TG_wk_FULLPATH : インポート先ブックフルパス
'TG_FLD_STR : 更新モジュールフォルダ

Function MD_IMPORT2(TG_wk_FULLPATH As String, TG_FLD_STR As String) As Boolean

  Dim myFSO As New FileSystemObject
  Dim myFolder As Folder
  Dim myFile As File
  
  Dim I As Integer
  
  I = 1
  
  Set myFolder = myFSO.GetFolder(TG_FLD_STR)
  
  For Each myFile In myFolder.Files
    
    If CreateObject("Scripting.FileSystemObject").GetExtensionName(TG_FLD_STR & myFile.Name) <> "frx" Then
    
      '下記では、シートモジュール、ThisWorkbookは、クラスモジュールにインポートされてしまう
      Workbooks(Right(TG_wk_FULLPATH, Len(TG_wk_FULLPATH) - InStrRev(TG_wk_FULLPATH, "\"))). _
          VBProject.VBComponents.Import (TG_FLD_STR & "\" & myFile.Name)
          
    End If
    
  Next
  
  Set myFSO = Nothing
  Set myFolder = Nothing
  
End Function

【53150】Re:モジュールインポート時のThisWorkbo...
質問  ウーロン  - 07/12/17(月) 17:54 -

引用なし
パスワード
   下記まで切り分けしました
ココ1,2アドバイスありましたらよろしくお願いいたします

Function MD_IMPORT2(TG_wk_FULLPATH As String, TG_FLD_STR As String) As Boolean
  
  Dim myFSO As New FileSystemObject
  Dim myFolder As Folder
  Dim myFile As File
  
  Dim I As Integer
  
  Dim TYPE_MD As String
  Dim MD_NAME As String
  
  I = 1
  
  Set myFolder = myFSO.GetFolder(TG_FLD_STR)
  
  For Each myFile In myFolder.Files

    TYPE_MD = CreateObject("Scripting.FileSystemObject").GetExtensionName(TG_FLD_STR & "\" & myFile.Name)
    MD_NAME = CreateObject("Scripting.FileSystemObject").GetBaseName(TG_FLD_STR & "\" & myFile.Name)
    
    If TYPE_MD <> "frx" Then
      
      If TYPE_MD = "cls" Then
      
        If Left(MD_NAME, 5) = "Sheet" Then
          'ココ1
        ElseIf Left(MD_NAME, 5) = "ThisW" Then
          'ココ2
        Else
          Workbooks(Right(TG_wk_FULLPATH, Len(TG_wk_FULLPATH) - InStrRev(TG_wk_FULLPATH, "\"))). _
              VBProject.VBComponents.Import (TG_FLD_STR & "\" & myFile.Name)
        End If
      
      Else
        Workbooks(Right(TG_wk_FULLPATH, Len(TG_wk_FULLPATH) - InStrRev(TG_wk_FULLPATH, "\"))). _
            VBProject.VBComponents.Import (TG_FLD_STR & "\" & myFile.Name)
      End If

    End If
    
  Next
  
  Set myFSO = Nothing
  Set myFolder = Nothing
  
End Function

【53162】Re:モジュールインポート時のThisWorkbo...
発言  neptune  - 07/12/17(月) 22:58 -

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

>モジュールインポート時、下記コードでは
>ThisWorkbook、シートモジュールはクラスモジュールになってしまいます
記憶だけで書きますので、間違ってたらすみません。
先ず、ThisWorkbook、シートモジュールですが、これらは分類すれば
クラスモジュールの類ですから、それで正解のような気もします。
 ですので、私なら、そういうことには悩まず、
エクスポートされているファイル(確かテキストベースのファイルです。)
を直接テキストファイルとして読み取り、
インポート側のThisWorkbook、シートモジュールに1行ずつ書き込む操作
をすると思います。

【53171】Re:モジュールインポート時のThisWorkbo...
お礼  ウーロン  - 07/12/18(火) 11:50 -

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

>エクスポートされているファイル(確かテキストベースのファイルです。)
>を直接テキストファイルとして読み取り、
>インポート側のThisWorkbook、シートモジュールに1行ずつ書き込む操作

他のモジュールと同様にImport出来ないものかと思いましたが
モジュール削除方法も異なっていました。
了解です

vbc.CodeModule.InsertLines 1, .Lines(1, .CountOfLines)

で、希望の操作かないました。

ありがとうございました。
解決です

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