| 
    
     |  | ▼kanabun さん: 
 大変申し訳ありません。
 
 Option Explicit
 
 Public TS_Sht      As Worksheet    ':  Set Ts_Sht = Worksheets("テスト用")
 
 Public AD_Sht      As Worksheet     ' 管理設定シート
 Public EL_Sht      As Worksheet     ' イベント一覧シート(Event-List)[List:表]
 Public EC_Sht      As Worksheet     ' イベント対応シート(Event-Cope)[Cope:対処]
 Public WK_Sht      As Worksheet     ' ワーク用シート
 
 Public fs        As Variant
 Public fi        As Variant
 
 Public Open_SW     As String      ' オープンエラー確認[エラー有:Error エラー無:OK]
 Public Open_SW1     As String      ' 現在の設定イベント一覧確認[有:OK 無:NG]
 Public Open_SW2     As String      ' 現在の設定イベント対応確認[有:OK 無:NG]
 Public TL_Name     As String      ' 起動ツール名(ファイル名)
 Public TL_Path     As String      ' 起動ツールのフルパス名
 Public WK_Name     As String      ' ワーク用イベント一覧名(ファイル名)
 Public WK_Path     As String      ' ワーク用イベント一覧のフルパス名
 
 Public WK_Path2     As String      ' 参照のフルパス名
 
 Public WK_Date1     As String      ' ワーク用更新日1
 Public WK_Date2     As String      ' ワーク用更新日2
 Public AD_Name1     As String      ' 現在の設定イベント一覧内容(ファイル名)
 Public AD_Name2     As String      ' 現在の設定イベント対応内容(ファイル名)
 Public AD_Path1     As String      ' 現在の設定イベント一覧内容のフルパス名
 Public AD_Path2     As String      ' 現在の設定イベント対応内容のフルパス名
 Public AD_Proc1     As String      ' イベント一覧の更新処理(ON:処理あり OFF:処理なし)
 Public AD_Proc2     As String      ' イベント対応の更新処理(ON:処理あり OFF:処理なし)
 Public Name1      As String      ' イベント一覧名(ファイル名)
 Public Name2      As String      ' イベント対応(ファイル名)
 Public Path1      As String      ' イベント一覧のフルパス名
 Public Path2      As String      ' イベント対応のフルパス名
 Public Folder_Name   As String      ' 当ツールの上位フォルダ名
 Public AD_Date1     As String      ' 管理設定シート上のイベント一覧表の更新日
 Public AD_Date2     As String      ' 管理設定シート上のイベント対応表の更新日
 Public Cnt(60)                ' カウンタの配列(イベント表検索にて使用)
 
 Public WK_Box1     As String      ' 検索画面 クラス  選択コンボボックス用
 Public WK_Box2     As String      ' 検索画面 メッセージ選択コンボボックス用
 Public WK_Box3     As String      ' 対応画面 クラス  選択コンボボックス用
 Public WK_Box4     As String      ' 対応画面 対応クラス選択コンボボックス用
 
 Public Search_Code1   As String      ' 検索画面にて選択した障害の対応コード引渡し用(対応表示用)
 Public Search_Code2   As String      ' 検索画面にて選択した障害の対応コード引渡し用(対応種類用)
 
 Public List_End, Cope_End          ' ワークエリア
 Public EL_Cnt, EC_Cnt
 Public EL_Disp_S, EL_Disp_E, EC_Disp_S, EC_Disp_E
 Public i, j, k                ' 添字エリア
 
 Sub Auto_Open()
 
 Application.DisplayAlerts = False  ' Display 非表示
 '  Application.DisplayAlerts = True  ' Display 表示
 
 Application.Visible = False
 
 '  Application.ScreenUpdating = False
 
 ' 初期値設定処理
 Variable_Set
 
 ' ファイルチェック(当ツールで使用するExcelの、イベント一覧.xls・イベント対応.xls がオープンされている時は、クローズする)
 i = Workbooks.Count
 Do Until i = 1
 If (Workbooks(i).Name = "TEC103イベント一覧.xls") Or _
 (Workbooks(i).Name = "TEC104イベント対応.xls") Then
 Workbooks(i).Close SaveChanges:=False
 End If
 i = i - 1
 Loop
 
 ' 現在の設定ファイルの有無確認
 Open_SW1 = "NG"
 Open_SW2 = "NG"
 
 ' イベント一覧.xls・イベント対応.xls の存在チェック
 ' 存在する場合は、Open_SWにOKがセットされる
 
 File_Open_CHK
 
 ' ファイル 検索
 ' └フォルダ 検索
 i = 1
 j = 1
 Do Until InStr(i, TL_Path, "\") = 0    'TL_Path = 当ツールのフルパス名 (¥全てを検索し終わるまで繰り返す)
 Cnt(j) = InStr(i, TL_Path, "\")    'Excelブック名の前に付いている¥の位置をセットする
 i = Cnt(j) + 1             'i = 当ツール名の先頭の位置
 j = j + 1               'j = ¥検索の為に繰り返した回数 = カウンタ配列のセットされたカウンタの位置
 Loop
 Cnt(0) = j - 1
 
 ' イベント一覧.xlsの存在チェックで、NGの場合、再度検索を行う。
 ' └イベント一覧 検索
 If Open_SW1 = "NG" Then
 WK_Name = "TEC103イベント一覧.xls"
 WK_Path = ""
 
 File_Search   'イベント一覧.xlsの検索
 
 If Open_SW = "Error" Then
 Exit Sub
 End If
 
 AD_Name1 = WK_Name
 AD_Path1 = WK_Path '検索出来たイベント一覧.xlsの絶対パスをセット
 End If
 
 ' イベント対応.xlsの存在チェックで、NGの場合、再度検索を行う。
 ' └イベント対応 検索
 If Open_SW2 = "NG" Then
 WK_Name = "TEC104イベント対応.xls"
 WK_Path = ""
 
 File_Search   'イベント対応.xlsの検索
 If Open_SW = "Error" Then
 Exit Sub
 End If
 AD_Name2 = WK_Name
 AD_Path2 = WK_Path '検索出来たイベント対応.xlsの絶対パスをセット
 End If
 
 Set fs = CreateObject("Scripting.FileSystemObject")       ' 日付取得
 
 ' イベント一覧・対応の更新日チェック
 For i = 1 To 2
 Select Case i
 Case 1:   Set fi = fs.getfile(AD_Path1)        ' イベント一覧セット
 WK_Date1 = AD_Date1
 Select Case i
 Case 1:   AD_Proc1 = "ON"             ' イベント一覧更新処理あり
 AD_Sht.Cells(2, 3) = WK_Date2      ' 管理情報シートの最新データに、イベント一覧の最終更新日をセット
 
 Case 2:   AD_Proc2 = "ON"             ' イベント対応更新処理あり
 AD_Sht.Cells(3, 3) = WK_Date2      ' 管理情報シートの最新データに、イベント対応の最終更新日をセット
 End Select
 End If
 Next
 
 '  Application.WindowState = xlMinimized    ' テストの為に最小化
 
 ' 当ツールの保持する2つのExcelの最終更新日よりも、実際の更新日が新しい場合のみ、更新用のフォームを開く
 If (AD_Proc1 = "ON") Or (AD_Proc2 = "ON") Then
 Uf_Main.Show
 Else
 Uf_Search.Show
 '    MsgBox "Search"
 End If
 
 End Sub
 
 ' * Function領域 スタート
 '
 Function Variable_Set()                  ' シート名・パス名等のセット
 
 ' シート設定
 Set AD_Sht = Worksheets("管理設定")
 Set EL_Sht = Worksheets("イベント一覧")
 Set EC_Sht = Worksheets("イベント対応")
 
 ' ツール情報設定
 TL_Name = ActiveWorkbook.Name               'Excelの名前のセット
 TL_Path = ActiveWorkbook.FullName             'Excelのフルパス&名前のセット
 
 ' 管理設定シート情報セット
 AD_Path1 = AD_Sht.Cells(6, 2)  'TEC103イベント一覧.xlsのパス
 AD_Path2 = AD_Sht.Cells(7, 2)  'TEC104イベント対応.xlsのパス
 AD_Name1 = AD_Sht.Cells(6, 5)  'TEC103イベント一覧
 AD_Name2 = AD_Sht.Cells(7, 5)  'TEC104イベント対応
 AD_Date1 = AD_Sht.Cells(2, 2)
 AD_Date2 = AD_Sht.Cells(3, 2)
 AD_Proc1 = "OFF"
 AD_Proc2 = "OFF"
 
 End Function
 
 Function File_Open_CHK()          ' 関連Excelの、イベント一覧・イベント対応のオープン・クローズによって、存在をチェックする
 
 On Error GoTo Open_Error          ' オープンエラーの場合、Open_Errorに飛ぶ
 
 Dim SW
 
 '存在チェックのため、イベント一覧.xlsを開いて閉じる
 'AD_Path1 : イベント一覧.xlsのフルパス名(管理設定シート内)
 
 Open_Event1:
 SW = 1
 Workbooks.Open Filename:=AD_Path1  'TEC103イベント一覧.xlsのオープン
 ActiveWorkbook.Close
 Open_SW1 = "OK"
 
 '存在チェックのため、イベント対応.xlsを開いて閉じる
 'AD_Path2 : イベント対応.xlsのフルパス名(管理設定シート内)
 
 Open_Event2:
 SW = 2
 Workbooks.Open Filename:=AD_Path2  'TEC104イベント対応.xlsのオープン
 ActiveWorkbook.Close
 Open_SW2 = "OK"
 
 Exit Function
 
 Open_Error:
 If Err.Number <> 1004 Then  'ファイルが存在しないとき以外のエラーの場合
 MsgBox Err.Description
 Exit Function
 End If
 
 If SW = 1 Then        '2つ目のファイルのオープンが行われていない場合
 Resume Open_Event2    'Open_Event2に飛ぶ
 End If
 
 End Function
 
 Function File_Search()                   ' ファイル検索
 
 Open_SW = "OK"
 
 Set fs = Application.FileSearch
 j = Cnt(0)
 Do Until j = 0
 With fs
 .LookIn = Left(TL_Path, Cnt(j))    '検索するフォルダのセット
 .SearchSubFolders = True        'フォルダ配下のフォルダ内も検索する
 .Filename = WK_Name          '検索するファイル名のセット
 
 If (.Execute < 1) And (j = 1) Then   '検索出来たファイル数が0以下のときは、エラー
 MsgBox "【 " & WK_Name & " 】 対象ファイルなし " & Chr(10) & Chr(10) & _
 "対象ファイルを準備後、処理して下さい。"
 Open_SW = "Error"
 Exit Function
 End If
 
 If .Execute > 0 Then          '検索出来たファイル数が1以上のとき
 For i = 1 To .Execute       '検索出来たファイル中に、同名ファイルが存在した場合、フォルダのパスをセット
 If "\" & .Filename = Right(.FoundFiles(i), 17) Then
 WK_Path = .FoundFiles(i)
 Exit Do
 End If
 Next
 End If
 End With
 j = j - 1
 Loop
 
 End Function
 
 |  |