Malicious Office (OLE) — malware analysis report

Static analysis result for SHA-256 a0fbf7e361c67a98…

MALICIOUS

Office (OLE)

623.0 KB Created: 2011-05-18 05:23:52 Authoring application: Microsoft Excel First seen: 2018-06-21
MD5: c1ed7e876eabb8837eff76cb533c78e5 SHA-1: e198aeb9c994bff71d48e40c56d1f78689c4c828 SHA-256: a0fbf7e361c67a98dca9d0137f5a2e6dc0c252d0f1ff50ddbafd4f45aa28591b
142 Risk Score

Malware Insights

MITRE ATT&CK
T1059.005 Visual Basic T1204.002 Malicious File

The file is an Excel document containing VBA macros. The macros reference ShellExecute and WScript, indicating script execution. The script likely attempts to download a PDF from the provided URL, which is a common lure for malicious documents. The presence of VBA macros and the embedded URL strongly suggest a macro-based attack.

Heuristics 5

  • Reference to ShellExecute API high SC_STR_SHELLEXEC
    Reference to ShellExecute API
  • Reference to Windows Script Host high SC_STR_WSCRIPT
    Reference to Windows Script Host
  • VBA macros detected medium 1 related finding OLE_VBA_MACROS
    Document contains VBA macro code
  • CreateObject call high OLE_VBA_CREATEOBJ
    CreateObject call
    Matched line in script
        Set myFso = New Scripting.FileSystemObject
        Set f = CreateObject("Shell.Application").Namespace(ThisWorkbook.Path & "\中安金\原本\")        '原本フォルダ
        Set g = CreateObject("Shell.Application").Namespace(ThisWorkbook.Path & "\中安金\" & MyB & "\") '会社フォルダ
  • Embedded URL info EMBEDDED_URL
    One or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.
    URL http://plus-samurai.jp/daityo/wp-content/uploads/tyuuankin.pdf In document text (OLE body)

Extracted artifacts 1

Files carved from inside the sample during analysis.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source) 164304 bytes
SHA-256: 1a7ba0bc14d707ff19e5a04148c864a3799e462bdb3fb52fb56d452b51979b61
Preview script
First 1,000 lines of the extracted script
Attribute VB_Name = "ThisWorkbook"
Attribute VB_Base = "0{00020819-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.Worksheets("DATA").Cells(1, 1).value <> "" Then
        MsgBox "「メニュー画面」の終了ボタンから終了してください。", 16, "終了"
        Cancel = True
    End If
End Sub


Attribute VB_Name = "Sheet3"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True

Attribute VB_Name = "Sheet2"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True

Attribute VB_Name = "共通処理"
Option Explicit
Sub 印刷基本情報()
    If MsgBox("プリンタの準備はいいですか?", 4 + 32, "印刷") <> 6 Then Exit Sub
    ActiveSheet.PrintOut
End Sub
Sub 印刷個人情報()
    If MsgBox("プリンタの準備はいいですか?", 4 + 32, "印刷") <> 6 Then Exit Sub
    Range(Cells(6, 2), Cells(Cells(10000, 3).End(xlUp).Row, 7)).PrintOut
End Sub
Sub 対象者へ()
    対象者.Show
End Sub
Sub 並び替えへ()
    並び替え.Show 0
End Sub
Sub MENU(ByVal ファイル名 As String, Optional ByVal ActiveFileName As String = vbNullString)
    
    Application.OnTime Now + TimeValue("00:00:01"), "'CloseActiveWorkbookB """ & ファイル名 & "'"
    ThisWorkbook.Activate
End Sub
Sub CloseActiveWorkbookB(ファイル名 As String)
    Application.ScreenUpdating = False
    If IsOpenBook(ファイル名) Then Workbooks(ファイル名).Close False
    Application.ScreenUpdating = True
End Sub
Sub 印刷Fへ()
    印刷F.Show
End Sub
Sub A保存へ()
    ADa保存.Show
End Sub
Sub 過去データ読込みへ()
    A過去データ.Show
End Sub
Sub 集計へ()
    Dim n As Integer
    Dim i As Integer
    Dim g As Integer
    Dim MSG1 As String
    n = Cells(10000, 3).End(xlUp).Row
    Application.Calculation = xlCalculationManual
    Range("D7:AJ7").FormulaR1C1 = "=COUNTIF(R12C:R" & n & "C,R6C7)" '休業の縦計
    Range("D8:AJ8").FormulaR1C1 = "=COUNTIF(R12C:R" & n & "C,R6C11)+COUNTIF(R12C:R" & n & "C,R6C20)+COUNTIF(R12C:R" & n & "C,R6C15)/2" '教育訓練全ての縦計
    Range("AM1:BQ1").FormulaR1C1 = "=COUNTIF(R12C[-35]:R" & n & "C[-35],R6C11)+COUNTIF(R12C[-35]:R" & n & "C[-35],R6C15)/2" '教育訓練事業所内の縦集計
    Range("AM2:BQ2").FormulaR1C1 = "=COUNTIF(R12C[-35]:R" & n & "C[-35],R6C20)" '教育訓練事業所外の縦集計
    Range("AM10:BQ10").FormulaR1C1 = "=SUM(R12C[-35]:R" & n & "C[-35])" '休業の短時間の縦集計(各日別)
    
    Range("AI12:AI" & n).FormulaR1C1 = "=COUNTIF(RC4:RC34,R6C7)" '休業の横計
    Range("AJ12:AJ" & n).FormulaR1C1 = "=COUNTIF(RC4:RC34,R6C11)+COUNTIF(RC4:RC34,R6C20)+COUNTIF(RC4:RC34,R6C15)/2" '教育訓練全ての横計
    Range("CA12:CA" & n).FormulaR1C1 = "=COUNTIF(RC4:RC34,R6C11)+COUNTIF(RC4:RC34,R6C15)/2" '教育訓練事業場内の横計
    Range("CB12:CB" & n).FormulaR1C1 = "=COUNTIF(RC4:RC34,R6C20)" '教育訓練事業場外の横計
        
    Range("AI7").FormulaR1C1 = "=SUM(RC4:RC34)" '休業縦計の合計値
    Range("AJ8").FormulaR1C1 = "=ROUNDUP(SUM(RC4:RC34),0)" '教育訓練全ての縦計の合計値
    Range("AK8").FormulaR1C1 = "=COUNTA(R12C3:R" & n & "C3)" '氏名欄の人数合計
    
    '20120907 kon
'    Range("C7").FormulaR1C1 = "=COUNTIF(R12C35:R" & n & "C35,"">0"")" '休業の人数
    Range("C7").FormulaR1C1 = "=SUMPRODUCT((R12C35:R" & n & "C35+R12C39:R" & n & "C39>0)*1)"
    
    Range("C8").FormulaR1C1 = "=COUNTIF(R12C36:R" & n & "C36,"">0"")" '教育訓練の人数
    Cells(12, 41).FormulaR1C1 = "=SUMPRODUCT((R12C35:R" & n & "C35+R12C39:R" & n & "C39>0)*1)" '休業の被保険者総数
    Cells(12, 42).FormulaR1C1 = "=COUNTIF(R12C36:R" & n & "C36,"">0"")"  '教育訓練の日保険者総数
    
    Range("AM12:AM" & n).FormulaR1C1 = "=SUM(RC4:RC34)" '休業の短時間の横集計(各人別)
    Range("BS10").FormulaR1C1 = "=INT(SUM(RC39:RC69)+0.9)" '休業の短時間の縦集計(各日別)合計値
    Range("BT1").FormulaR1C1 = "=INT(SUM(RC39:RC69)+0.9)" '教育訓練事業所内の縦集計合計値
    Range("BU2").FormulaR1C1 = "=INT(SUM(RC39:RC69)+0.9)" '教育訓練事業所外の縦集計合計値
        
   
    
    '20120512 masa 様式変更------------------------------------------------------------------------
     '正規職員等の数のチェック
    'Range("AM7:AS8").ClearContents
    'Range("AN12").ClearContents
    '    With Worksheets("休業等対象者")
    '        For i = 12 To Cells(10000, 3).End(xlUp).Row
    '            If Trim(Cells(i, 35).Value) > 0 Or Trim(Cells(i, 39).Value) > 0 Or Trim(Cells(i, 36).Value) > 0 Then  '横計が1以上だったら
    '                If IsError(Application.Match(Cells(i, 3).Value, .Range("C1:C1000"), 0)) = False Then
    '                    g = Application.Match(Cells(i, 3).Value, .Range("C1:C1000"), 0) '行番号
    '                    If .Cells(g, 6).Value = "正規職員" Then
    '                        Cells(7, 39).Value = Cells(7, 39).Value + 1 '正規職員の合計値
    '                        ElseIf .Cells(g, 6).Value = "正規職員以外" Then
    '                        Cells(7, 40).Value = Cells(7, 40).Value + 1
    '                        ElseIf .Cells(g, 6).Value = "派遣労働者" Then
    '                        Cells(7, 41).Value = Cells(7, 41).Value + 1
    '                    End If
    '                    If .Cells(g, 7).Value = "障" Then
    '                        Cells(7, 42).Value = Cells(7, 42).Value + Cells(i, 35).Value '障害有
    '                        Cells(7, 43).Value = Cells(7, 43).Value + Cells(i, 39).Value ' 短時間の障害者の集計 20110418 masa 場所変更した
    '                        Cells(7, 44).Value = Cells(7, 44).Value + Cells(i, 79).Value '教育訓練事業場内 障害者の集計
    '                        Cells(7, 45).Value = Cells(7, 45).Value + Cells(i, 80).Value '教育訓練事業場外 障害者の集計
    '
    '                    End If
    '
    '                    '20110613 入社6か月未満の人はメッセージを表示する
    '                    If IsNumeric(.Cells(g, 5).Value) Then
    ''対象期間の初日と比較するように変更 20110721 kon
    ''                        If fncNenrei(CDate(.Cells(g, 5).Value), Date) <= 0.06 Then
    '                        If fncNenrei(CDate(.Cells(g, 5).Value), Cells(5, 5).Value) < 0.06 Then
    '                            MSG1 = MSG1 & .Cells(g, 3).Value & " " & fcnNenrei & Chr(13)
    '                        End If
    '                    End If
    '
    '                End If
    '            End If
    '        Next
    '
    '    End With---------------------------------------------------------------------------------------------

    '正規職員等の数のチェック
    Range("AM7:AY8").ClearContents
    Range("AN12").ClearContents
    With Worksheets("休業等対象者")
        For i = 12 To Cells(10000, 3).End(xlUp).Row
            If Trim(Cells(i, 35).value) > 0 Or Trim(Cells(i, 39).value) > 0 Or Trim(Cells(i, 36).value) > 0 Then  '横計が1以上だったら
                If IsError(Application.Match(Cells(i, 3).value, .Range("C1:C1000"), 0)) = False Then
                    g = Application.Match(Cells(i, 3).value, .Range("C1:C1000"), 0) '行番号
                        
                        If .Cells(g, 6).value = "正規職員" Then  '休業教育訓練対象者で集計
                            Cells(7, 39).value = Cells(7, 39).value + 1 '正規職員の合計値
                            ElseIf .Cells(g, 6).value = "正規職員以外" Then
                                Cells(7, 40).value = Cells(7, 40).value + 1
                            ElseIf .Cells(g, 6).value = "派遣労働者" Then
                                Cells(7, 41).value = Cells(7, 41).value + 1
                        End If
                        If Trim(Cells(i, 35).value) > 0 Or Trim(Cells(i, 36).value) > 0 Then '休業者のみで集計
                           If .Cells(g, 6).value = "正規職員" Then
                              Cells(7, 46).value = Cells(7, 46).value + 1 '正規職員の合計値
                              ElseIf .Cells(g, 6).value = "正規職員以外" Then
                                Cells(7, 47).value = Cells(7, 47).value + 1
                              ElseIf .Cells(g, 6).value = "派遣労働者" Then
                                Cells(7, 48).value = Cells(7, 48).value + 1
                            End If
                        End If
                        If Trim(Cells(i, 36).value) > 0 Then  '教育訓練のみで集計集計
                           If .Cells(g, 6).value = "正規職員" Then
                              Cells(7, 49).value = Cells(7, 49).value + 1 '正規職員の合計値
                              ElseIf .Cells(g, 6).value = "正規職員以外" Then
                                Cells(7, 50).value = Cells(7, 50).value + 1
                              ElseIf .Cells(g, 6).value = "派遣労働者" Then
                                Cells(7, 51).value = Cells(7, 51).value + 1
                            End If
                        End If
                        
                        If .Cells(g, 7).value = "障" Then
                            Cells(7, 42).value = Cells(7, 42).value + Cells(i, 35).value '障害有
                            Cells(7, 43).value = Cells(7, 43).value + Cells(i, 39).value ' 短時間の障害者の集計 20110418 masa 場所変更した
                            Cells(7, 44).value = Cells(7, 44).value + Cells(i, 79).value '教育訓練事業場内 障害者の集計
                            Cells(7, 45).value = Cells(7, 45).value + Cells(i, 80).value '教育訓練事業場外 障害者の集計
                        End If

                        '20110613 入社6か月未満の人はメッセージを表示する
                        If IsNumeric(.Cells(g, 5).value) Then
                        '対象期間の初日と比較するように変更 20110721 kon
                        ' If fncNenrei(CDate(.Cells(g, 5).Value), Date) <= 0.06 Then
                            If fncNenrei(CDate(.Cells(g, 5).value), Cells(5, 5).value) < 0.06 Then
                                MSG1 = MSG1 & .Cells(g, 3).value & " " & fncNenrei(CDate(.Cells(g, 5).value), Cells(5, 5).value) & Chr(13)
                            End If
                        End If
    
                End If
            End If
        Next
    End With


    Application.Calculation = xlCalculationAutomatic
    Range("AM10:BS10").value = Range("AM10:BS10").Value2
    Range("C7:AP" & n).value = Range("C7:AP" & n).Value2
    Range("AM1:BU2").value = Range("AM1:BU2").Value2
    Cells(12, 40).value = Int(Cells(12, 40).value + 0.9) '短時間の障害者の集計 切り上げる  20091207 重
    '20110613 入社6か月未満の人はメッセージを表示する
    If MSG1 <> "" Then
        MsgBox "雇用保険資格取得6ヶ月以下の被保険者が存在します。" & Chr(13) & MSG1, 16, "被保険者期間"
    End If
    MsgBox "OK", 64, aaa
End Sub

Attribute VB_Name = "個人情報"
Attribute VB_Base = "0{2318A52F-4645-4308-A7C2-8AB553CD8BEA}{ABBB4D3B-323E-4386-B828-18317BF201F3}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False


Option Explicit
Private Sub CommandButton1_Click()
    If ListBox1.ListIndex = -1 Then Exit Sub
        TextBox1.value = ListBox1.List(ListBox1.ListIndex, 2)
        TextBox2.value = ListBox1.List(ListBox1.ListIndex, 1)

End Sub

Private Sub CommandButton2_Click()
    If ListBox1.ListIndex = -1 Then Exit Sub
        TextBox3.value = ListBox1.List(ListBox1.ListIndex, 3)
        TextBox4.value = ListBox1.List(ListBox1.ListIndex, 1)
End Sub

Private Sub CommandButton3_Click()
Cells(23, 4).value = TextBox1.value & " " & TextBox2.value
Cells(34, 4).value = TextBox4.value
Cells(35, 4).value = TextBox3.value
Unload Me
End Sub

Private Sub UserForm_Activate()
    Dim i As Integer
    Dim n As Integer
    Dim da As String
    da = ThisWorkbook.Worksheets("DATA").Cells(1, 1).value

    n = 0
    With Workbooks(da).Worksheets("個人情報")
        For i = 6 To .Cells(10000, 2).End(xlUp).Row
            If IsDate(.Cells(i, 29).value) = True And Trim(.Cells(i, 30).value) = "" Then '取得日があって喪失日がない
                ListBox1.AddItem Format(.Cells(i, 2).value, "000000")
                ListBox1.List(n, 1) = .Cells(i, 5).value & " " & .Cells(i, 6).value
                ListBox1.List(n, 2) = .Cells(i, 31).value
                ListBox1.List(n, 3) = .Cells(i, 32).value
                n = n + 1
            End If
        Next
    End With

End Sub

Attribute VB_Name = "並び替え"
Attribute VB_Base = "0{FE184BFA-7B52-4823-A084-F0C5DA79AD30}{6CAA8600-8596-47AA-B0A8-9540A19E34C3}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False


Option Explicit

Private Sub CommandButton1_Click()
    Dim Hani As String
    Dim kii As String
    Hani = "B6:G" & Cells(10000, 3).End(xlUp).Row
    If OptionButton1.value = True Then
        kii = "B6"
        ElseIf OptionButton2.value = True Then
        kii = "E6"
        Else
        kii = "F6"
    End If
    Range(Hani).Sort Key1:=Range(kii), Order1:=xlAscending, Header:=xlNo, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
    :=xlPinYin
    Unload Me

End Sub

Private Sub CommandButton2_Click()
    If ActiveCell.Column <> 3 Or Trim(ActiveCell.value) = "" Then
        MsgBox "シート上で削除したい氏名にカーソルをおいて実行してください。", 16, aaa
        Exit Sub
    End If
    If MsgBox("社員データは「支給申請」が終了するまで必要です。このデータを「削除」してもいいですか?", 4 + 48, aaa) <> 6 Then Exit Sub
    Selection.EntireRow.Delete
    Cells(5, 3).Select
    MsgBox "削除しました。", 64, aaa
    Unload Me
End Sub


Attribute VB_Name = "Open1"
Option Explicit
Public Const aaa As String = "中安金"
Dim シート名 As String
Dim ファイル名  As String
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub 初期処理()
     Dim strPathName As String
     Dim myFso       As Scripting.FileSystemObject
     Dim myName      As String
     Dim MyB         As String

     Set myFso = New Scripting.FileSystemObject

     Application.Calculation = xlCalculationAutomatic
     MyB = ThisWorkbook.Worksheets("DATA").Cells(2, 1).value
     strPathName = ThisWorkbook.Path & "\中安金\" & MyB
     If MyB = Dir(strPathName, 16) Then
        Sheets("MENU").Select
        バージョンチェック
     Else
        '初めて開く場合
        Application.ScreenUpdating = True
        Cells(1, 7).value = "初期設定中・・・"
        myName = ThisWorkbook.Path & "\中安金\原本"                                   'コピー元フォルダ
        myFso.CopyFolder myName, strPathName, OverWriteFiles:=True                    'フォルダのコピー
        Cells(1, 7).MergeArea.ClearContents
     End If
     Cells(7, 11).Select
     
        
End Sub
Sub バージョンチェック()
    Dim FileName As String
    Dim Ver As String
    Dim MyB         As String
    
    MyB = ThisWorkbook.Worksheets("DATA").Cells(2, 1).value
    FileName = ThisWorkbook.Path & "\中安金\" & MyB & "\ver.txt"    '会社フォルダのVer.txtにバージョン値が記載されている。
    Cells(5, 5).value = GetTextData(1, FileName)                    'Ver.txtのバージョン値を取得
    If Cells(4, 5).value = Cells(5, 5).value Then                   'バージョンが一致していてたら何もしない
        Cells(5, 5).MergeArea.ClearContents
        Exit Sub
    End If
    Application.ScreenUpdating = True
    
    If MsgBox("バージョンアップしますか?", 4 + 32, Cells(4, 5).value) <> 6 Then Exit Sub
    
    Cells(1, 7).value = Cells(4, 5).value & "バージョンアップ中・・・"
    'Da保存フォルダがなかったら作成する
    If Dir(ThisWorkbook.Path & "\中安金\" & MyB & "\Da保存", 16) = "" Then
        MkDir ThisWorkbook.Path & "\中安金\" & MyB & "\Da保存"
    End If
    
    Call 書類入替
    
    Cells(1, 7).MergeArea.ClearContents
    Cells(1, 10).ClearContents
    Cells(5, 5).MergeArea.ClearContents
    
    Application.Run "DaAddin.xla!SetTextData", 1, Cells(4, 5).value, FileName
    MsgBox "完了"
   
End Sub
Sub 書類入替()
    Dim MyB         As String
    Dim OS          As String
    Dim n           As String
    Dim f           As Object
    Dim g           As Object
    Dim Adb         As String
    Dim myBPath     As String
    Dim myFso       As Scripting.FileSystemObject
    
    On Error GoTo ErrorCheck
    
    MyB = ThisWorkbook.Worksheets("DATA").Cells(2, 1).value '会社名
    myBPath = ThisWorkbook.Path & "\中安金\" & MyB & "\"    '会社のフォルダパス
    
    OS = Application.OperatingSystem                        'OSのバージョン情報
    If Right(OS, 4) = "6.00" Or Right(OS, 4) = "6.01" Then
        n = 24 'Vista 7 コメント
        Else
        n = 14 'XP コメント
    End If
    
    Set myFso = New Scripting.FileSystemObject
    Set f = CreateObject("Shell.Application").Namespace(ThisWorkbook.Path & "\中安金\原本\")        '原本フォルダ
    Set g = CreateObject("Shell.Application").Namespace(ThisWorkbook.Path & "\中安金\" & MyB & "\") '会社フォルダ
    
    ファイル名 = Dir(ThisWorkbook.Path & "\中安金\原本" & "\*.xls")  '会社フォルダのエクセルファイル
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Do While ファイル名 <> ""
            
            
            '存在するか否か 存在しない場合は新規書類のためただ入れ込むだけ
            If myFso.FileExists(Filespec:=myBPath & ファイル名) Then
               Else
                myFso.CopyFile ThisWorkbook.Path & "\中安金\原本\" & ファイル名, myBPath
                Cells(1, 10).value = "新規書類" & ファイル名 & "設定中・・・"
            End If
  
            '20110721 kon
            If g.GetDetailsOf(g.ParseName(ファイル名), n) = 10001 Then
                Workbooks.Open myBPath & "\" & ファイル名
                Cells(1, 10).value = ファイル名 & "入れ替え中・・・"
                Workbooks(ファイル名).BuiltinDocumentProperties(5).value = 10002
                Cells(1, 10).value = ""
                
                Workbooks(ファイル名).Save
                Workbooks(ファイル名).Close
            End If
  

            If f.GetDetailsOf(f.ParseName(ファイル名), n) <> g.GetDetailsOf(g.ParseName(ファイル名), n) Then 'コメントに記載されている文字を比較して異なっていたら・・・
                
                Cells(1, 10).value = ファイル名 & "入れ替え中・・・"
                
'                Application.ScreenUpdating = False
                Workbooks.Add
                Adb = ActiveWorkbook.Name

                '新規ブックにシートを移動
                Call シート名取得
                シート移動 MyB, Adb, ファイル名, シート名
                '20120316 masa 複数シートあるため ----------------------------------
                If ファイル名 = "休業手当と平均賃金の計算.xls" Then
                    シート移動 MyB, Adb, ファイル名, "簡易計算"
                    シート移動 MyB, Adb, ファイル名, "平均賃金"
                End If
               ' --------------------------------------------------------------------
               
               
                '新規ブックにシートを移動したファイルをDa保存フォルダにバックアップ
'                Workbooks(Adb).SaveAs FileName:=ThisWorkbook.Path & "\中安金\" & MyB & "\Da保存\" & Format(Date, "gemmdd") & "_" & Format(Time, "h_mm ") & "_" & ファイル名 _
                                    , FileFormat:=xlWorkbookNormal
                
                Cells(1, 10).value = ""
                
                Workbooks(Adb).SaveAs FileName:=ThisWorkbook.Path & "\中安金\" & MyB & "\Da保存\vup" & Format(Date, "gemmdd") & "_" & Format(Time, "h_mm ") & "_" & ファイル名 _
                                    , FileFormat:=xlWorkbookNormal
                ActiveWorkbook.Close False

                '原本フォルダのファイルと入替
                myFso.CopyFile ThisWorkbook.Path & "\中安金\原本\" & ファイル名, myBPath '異なっていたら入れる。
'                Application.ScreenUpdating = True
                
            End If
            ファイル名 = Dir()
            
    Loop
    
    '20120712 masa 基本手当日額いれる
    Workbooks.Open FileName:=myBPath & "Master.xls"
    With Worksheets("会社基本情報")
        If .Cells(42, 4).value <> GetTextData(2, ThisWorkbook.Path & "\中安金\原本\ver.txt") Then
           .Cells(42, 4).value = GetTextData(2, ThisWorkbook.Path & "\中安金\原本\ver.txt")
           Workbooks("Master.xls").Save
        End If
    End With
    Workbooks("Master.xls").Close False
    
    
    
    Set f = Nothing
    Set g = Nothing
    Set myFso = Nothing
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    Exit Sub

ErrorCheck:
    MsgBox "バージョンアップに失敗しました。"
    Cells(1, 7).MergeArea.ClearContents
    Cells(1, 10).ClearContents
    Cells(5, 5).MergeArea.ClearContents
    End
End Sub
Sub シート名取得()
    Select Case ファイル名
        Case "予定表.xls"
              シート名 = "予定"
        Case "休業等実施計画届.xls"
              シート名 = "実施計画届"
        Case "休業協定書.xls"
              シート名 = "休業協定書"
        Case "5号3実績一覧表.xls"
              シート名 = "実績表"
        Case "教育訓練協定書.xls"
              シート名 = "教育訓練協定書"
        Case "5号2助成額算定書.xls"
              シート名 = "第105号の2"
        Case "休業等支給申請書.xls"
              シート名 = "支給申請書"
        Case "雇用維持事業主申告書.xls"
              シート名 = "雇用維持事業主申告書"
        Case "労働者代表選任届.xls"
              シート名 = "労働者選任届"
        Case "賃金支払確認書.xls"
              シート名 = "確認書"
        Case "事業活動の状況に関する申出書地震.xls"
              シート名 = "円高の影響"
        Case "事業活動の状況に関する申出書円高.xls"
              シート名 = "円高の影響"
        Case "事業活動の状況に関する申出書.xls"
              シート名 = "雇用状況申出書"
        Case "支給申請確認書.xls"
              シート名 = "支給申請確認書"
        Case "雇用維持事業主申告書.xls"
              シート名 = "雇用維持事業主申告書"
        Case "契約期間遵守証明書.xls"
              シート名 = "派遣契約期間遵守証明書"
        Case "休業手当と平均賃金の計算.xls"
              シート名 = "休業手当"
        Case "Master.xls"
              シート名 = "休業等対象者"
        Case "委任状.xls"
              シート名 = "委任状"
        Case "年間休日表の作成.xls"
              シート名 = "休日1"
         Case "結果表.xls"
              シート名 = "結果"
        
'20111101 kon 円高の影響1箇月追加
        Case "事業活動の状況に関する申出書円高の影響.xls"
              シート名 = "円高の影響1箇月"
        
        
        End Select
    
End Sub

Sub 会社基本情報へ()
    Application.ScreenUpdating = False
    FileOpen1 ("Master.xls")
    Worksheets("会社基本情報").Select
    Application.ScreenUpdating = True
End Sub
Sub 休業等対象者へ()
    Application.ScreenUpdating = False
    FileOpen1 ("Master.xls")
    Worksheets("休業等対象者").Select
    Application.ScreenUpdating = True
End Sub
Sub 計画届へ()
   FileOpen1 ("休業等実施計画届.xls")
End Sub
Sub 事業活動の状況へ()
   FileOpen1 ("事業活動の状況に関する申出書.xls")
End Sub
Sub 事業活動円高の状況へ()
   FileOpen1 ("事業活動の状況に関する申出書円高.xls")
End Sub

'20111101  kon 円高の影響1箇月追加
Sub 事業活動円高の状況1箇月へ()
   FileOpen1 ("事業活動の状況に関する申出書円高の影響.xls")
End Sub

Sub 事業活動地震の状況へ()
   FileOpen1 ("事業活動の状況に関する申出書地震.xls")
End Sub
'20121001kon
Sub 事業活動電力の状況へ()
   FileOpen1 ("事業活動の状況に関する申出書(電力制限).xls")
End Sub
'20121001kon
Sub 事業活動電力2の状況へ()
   FileOpen1 ("事業活動の状況に関する申出書(電力事業主).xls")
End Sub



Sub 休業協定書へ()
   FileOpen1 ("休業協定書.xls")
End Sub
Sub 休業教育訓練協定書へ()
   FileOpen1 ("教育訓練協定書.xls")
End Sub
Sub 労働者代表選任届へ()
   FileOpen1 ("労働者代表選任届.xls")
End Sub
Sub 委任状へ()
   FileOpen1 ("委任状.xls")
End Sub
Sub 支給申請確認へ()
   FileOpen1 ("支給申請確認書.xls")
End Sub
Sub 雇用維持事業主申告書へ()
   FileOpen1 ("雇用維持事業主申告書.xls")
End Sub
Sub 契約期間遵守証明書へ()
   FileOpen1 ("契約期間遵守証明書.xls")
End Sub
Sub 賃金支払確認書へ()
   FileOpen1 ("賃金支払確認書.xls")
End Sub
Sub 休業手当と平賃へ()
'   FileOpen1 ("休業手当と平均賃金の計算.xls")
'20120316 masa -------------------------------------
    Dim wb  As Workbook
    Dim MyB As String
    For Each wb In Workbooks
        If wb.Name = "休業手当と平均賃金の計算.xls" Then
            wb.Activate
            Exit For
        End If
    Next
    
    MyB = ThisWorkbook.Worksheets("DATA").Cells(2, 1).value
    If ActiveWorkbook.Name <> ファイル名 Then
        Workbooks.Open ThisWorkbook.Path & "\中安金\" & MyB & "\" & "休業手当と平均賃金の計算.xls"
        Application.Run "休業手当と平均賃金の計算.xls!初期処理"
    End If
   '-----------------------------------------------------------
   
   
End Sub
Sub 年間休日表へ()
   FileOpen1 ("年間休日表の作成.xls")
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    FileOpen1 ("Master.xls")
        
    会社名読み込み "年間休日表の作成.xls", "休日2", "V54", "V55", "V56"
    
    FileClose1 ("Master.xls")
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    
End Sub
Sub 支給申請書へ()
   FileOpen1 ("休業等支給申請書.xls")
   Txt読み込み1
End Sub
Sub 予定表へ()
   
   FileOpen2 "予定表.xls", "予定表", "AF45", "AF46", "AF47"
   
'20120326 kon
   Worksheets("予定").Select
   Cells(1, 1).Select
   
End Sub
Sub 結果表へ()
   FileOpen2 "結果表.xls", "結果表", "AF45", "AF46", "AF47"
   '20120326 kon
   Worksheets("結果").Select
   Cells(1, 1).Select

End Sub
Sub 実績表へ()
    FileOpen2 "5号3実績一覧表.xls", "実績表", "AH37", "AH35", "AH36"
'20120326 kon
   Worksheets("実績表").Select
   Cells(1, 1).Select

End Sub
Sub 助成額算定へ()
    FileOpen3 "5号2助成額算定書.xls"
'20120326 kon
   Worksheets("第105号の2").Select
   Cells(1, 1).Select

End Sub
Sub 裏面へ()
  Call ShellExecute(0, "open", ThisWorkbook.Path & "\5号の1裏面.pdf", vbNullString, vbNullString, 1)
End Sub
Sub 実績一覧裏面へ()
  Call ShellExecute(0, "open", ThisWorkbook.Path & "\実績一覧裏面.pdf", vbNullString, vbNullString, 1)
End Sub
'20120604 YBNO#15934 kon
Sub 休業実施計画裏面へ()
  Call ShellExecute(0, "open", ThisWorkbook.Path & "\1号の1裏面.pdf", vbNullString, vbNullString, 1)
End Sub

'20121001 kon
Sub 助成額算定書裏面へ()
  Call ShellExecute(0, "open", ThisWorkbook.Path & "\助成額算定書裏面.pdf", vbNullString, vbNullString, 1)
End Sub
'20121001 kon
Sub 申出書裏面()
  Call ShellExecute(0, "open", ThisWorkbook.Path & "\1号の2裏面.pdf", vbNullString, vbNullString, 1)
End Sub
'20121001 kon
Sub 申出書96裏面()
  Call ShellExecute(0, "open", ThisWorkbook.Path & "\96号裏面.pdf", vbNullString, vbNullString, 1)
End Sub
'20121001 kon
Sub 申出書97裏面()
  Call ShellExecute(0, "open", ThisWorkbook.Path & "\97号裏面.pdf", vbNullString, vbNullString, 1)
End Sub



Attribute VB_Name = "対象者"
Attribute VB_Base = "0{1443E144-4853-41D7-AB49-56223DD0ECEC}{245791AE-3930-439E-9EBF-5E36F3CBE1A7}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False

Option Explicit
Dim da As String

Private Sub CommandButton1_Click()
    Dim n As Integer
    Dim j As Integer
    Dim i As Integer
    j = Cells(10000, 3).End(xlUp).Row + 1
    Application.Calculation = xlCalculationManual
    If j > 6 Then
        n = MsgBox("すでにデータが存在します。" & Chr(10) & "追加して登録する場合は「はい」を" & Chr(10) & "現在データをクリアして登録する場合は「いいえ」を" & Chr(10) & "処理を中止する場合は「キャンセル」をクリックしてください。", 3 + 32, aaa)
        If n = 2 Then Exit Sub
        If n = 6 Then '追加登録
            Else
            Range(Cells(6, 2), Cells(j, 6)).ClearContents 'クリアして登録
            j = 6
        End If
    End If
    With Workbooks(da).Worksheets("個人情報")
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) = True Then
                Cells(j, 2).value = .Cells(Val(ListBox1.List(i, 0)), 31) '所属
                Cells(j, 3).value = ListBox1.List(i, 2) '名前
                Cells(j, 4).value = .Cells(Val(ListBox1.List(i, 0)), 26) '雇用保険番号
                Cells(j, 5).value = .Cells(Val(ListBox1.List(i, 0)), 29) '取得日
                Cells(j, 6).value = ComboBox1.value
                j = j + 1
            End If
        Next
    End With
    Unload Me
End Sub

Private Sub OptionButton1_Click()
    Dim i As Integer
    Dim n As Integer
    ListBox1.Clear
    n = 0
    With Workbooks(da).Worksheets("個人情報")
        For i = 6 To .Cells(10000, 2).End(xlUp).Row
            If IsDate(.Cells(i, 29).value) = True And Trim(.Cells(i, 30).value) = "" Then '取得日があって喪失日がない
                ListBox1.AddItem i
                ListBox1.List(n, 1) = Format(.Cells(i, 2).value, "000000")
                ListBox1.List(n, 2) = .Cells(i, 5).value & " " & .Cells(i, 6).value
                n = n + 1
            End If
        Next
    End With
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next
End Sub

Private Sub OptionButton3_Click()
    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next
End Sub
Private Sub UserForm_Activate()
    da = ThisWorkbook.Worksheets("DATA").Cells(1, 1).value
    OptionButton1.value = True
    ComboBox1.AddItem "正規職員"
    ComboBox1.AddItem "正規職員以外"
    ComboBox1.AddItem "派遣労働者"
    ComboBox1.ListIndex = 0
End Sub
Private Sub OptionButton2_Click()
    Dim i As Integer
    Dim n As Integer
    ListBox1.Clear
    n = 0
    With Workbooks(da).Worksheets("個人情報")
        For i = 6 To .Cells(10000, 2).End(xlUp).Row
            If Trim(.Cells(i, 15).value) = "" Then '退社日がない
                ListBox1.AddItem i
                ListBox1.List(n, 1) = Format(.Cells(i, 2).value, "000000")
                ListBox1.List(n, 2) = .Cells(i, 5).value & " " & .Cells(i, 6).value
                n = n + 1
            End If
        Next
    End With
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.Calculation = xlCalculationAutomatic
End Sub

Attribute VB_Name = "Function1"
Option Explicit
Function IsOpenBook(ByVal Name As String) As Boolean

    Dim wb As Workbook
    Dim ret As Boolean
    
    ret = False
    
    For Each wb In Workbooks
        If wb.Name = Name Then
            ret = True
            Exit For
        End If
    Next wb

    IsOpenBook = ret

End Function
Public Function GetTextData(ByVal i As Integer, ByVal FileName As String) As String
  
    Dim buffer() As String '文字列受け取り用
    
    GetStringArray buffer, FileName

    GetTextData = buffer(i - 1)

End Function
Function Hani(範囲 As String)
    Dim i As Integer
    For i = 1 To Len(範囲)
        If Mid(範囲, i, 1) = ":" Then
            Hani = Left(範囲, i - 1) & ":"
            Exit For
        End If
    Next
    For i = Len(範囲) To 1 Step -1
        If Mid(範囲, i, 1) = ":" Then
            Hani = Hani & Right(範囲, Len(範囲) - i)
            Exit For
        End If
    Next
End Function
Public Sub GetStringArray(ByRef str() As String, ByVal FileName As String)

    Dim FileNumber As Integer 'ファイル番号
    Dim LineCount As Integer '行数

    '初期処理
    FileNumber = FreeFile
    LineCount = 0

    'DOTO FreeFileで番号を得ること
    Open FileName For Input As FileNumber

        Do While Not EOF(FileNumber)
            'ファイルの長さで配列をデータを保持しながら初期化
            ReDim Preserve str(LineCount)
    
            'ファイルをバイナリで読み込んで配列に格納
            Line Input #FileNumber, str(LineCount)
            LineCount = LineCount + 1
        Loop
           
    Close #FileNumber

End Sub
Sub FileOpen1(ファイル名 As String)
    Dim wb  As Workbook
    Dim MyB As String
    For Each wb In Workbooks
        If wb.Name = ファイル名 Then
            wb.Activate
            Exit For
        End If
    Next
    
    MyB = ThisWorkbook.Worksheets("DATA").Cells(2, 1).value
    If ActiveWorkbook.Name <> ファイル名 Then
    '20120830 kon YBNO 18539
        DoEvents
        Workbooks.Open ThisWorkbook.Path & "\中安金\" & MyB & "\" & ファイル名
    End If
End Sub
Sub FileOpen2(ファイル名, シート, A, B, C As String)
    Dim wb  As Workbook
    Dim MyB As String
    For Each wb In Workbooks
        If wb.Name = ファイル名 Then
            wb.Activate
            Exit For
        End If
    Next
    
    MyB = ThisWorkbook.Worksheets("DATA").Cells(2, 1).value
    If ActiveWorkbook.Name <> ファイル名 Then
        Workbooks.Open ThisWorkbook.Path & "\中安金\" & MyB & "\" & ファイル名
        従業員データ読み込み ファイル名, シート, A, B, C
    End If
End Sub
Sub FileOpen3(ファイル名 As String)
    Dim wb  As Workbook
    Dim MyB As String
    For Each wb In Workbooks
        If wb.Name = ファイル名 Then
            wb.Activate
            Exit For
        End If
    Next
    
    MyB = ThisWorkbook.Worksheets("DATA").Cells(2, 1).value
    If ActiveWorkbook.Name <> ファイル名 Then
        Workbooks.Open ThisWorkbook.Path & "\中安金\" & MyB & "\" & ファイル名
        Workbooks(ファイル名).Activate
        結果表読込 ("第105号の2")
    End If
End Sub
Sub FileOpen4(ファイル名 As String)
    Dim wb  As Workbook
    Dim MyB As String
    For Each wb In Workbooks
        If wb.Name = ファイル名 Then
            wb.Activate
            Exit For
        End If
    Next
    
    MyB = ThisWorkbook.Worksheets("DATA").Cells(2, 1).value
    If ActiveWorkbook.Name <> ファイル名 Then
        Workbooks.Open ThisWorkbook.Path & "\中安金\" & MyB & "\Da保存\" & ファイル名
    End If
End Sub
Sub FileClose1(ファイル名 As String)
    If Workbooks(ファイル名).Saved Then
        Workbooks(ファイル名).Close False
    Else
        Workbooks(ファイル名).Save
        Workbooks(ファイル名).Close False
    End If
End Sub
Sub 従業員データ読み込み(ファイル, シート, A, B, C As String)
    Dim n As Long
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
     
    With ActiveWorkbook.Worksheets("休業等対象者") '休業等対象者をクリアする。
        Range(.Cells(3, 2), .Cells(.Cells(10005, 3).End(xlUp).Row, 6)).ClearContents
    End With
    
    FileOpen1 ("Master.xls")
    Workbooks("Master.xls").Activate
    Worksheets("休業等対象者").Select
    n = Cells(10005, 3).End(xlUp).Row '最終行取得
    Range(Cells(6, 2), Cells(n, 7)).Copy
    
    Workbooks(ファイル).Activate
    Worksheets("休業等対象者").Cells(6, 2).PasteSpecial Paste:=xlPasteValues
    
    会社名読み込み ファイル, シート, A, B, C
    
    Application.CutCopyMode = False
    FileClose1 ("Master.xls")
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    
End Sub
Sub 会社名読み込み(ファイル, シート, A, B, C As String)
         
    Workbooks(ファイル).Activate
    
    With Worksheets(シート)
        .Range(A).value = Workbooks("Master.xls").Worksheets("会社基本情報").Cells(7, 4).value '事業主住所
        .Range(B).value = Workbooks("Master.xls").Worksheets("会社基本情報").Cells(8, 4).value '名称
        .Range(C).value = Workbooks("Master.xls").Worksheets("会社基本情報").Cells(9, 4).value '代表者
        
        Select Case シート
            Case "結果表"
                Worksheets("DATA1").Cells(40, 3).value = Workbooks("Master.xls").Worksheets("会社基本情報").Cells(40, 4).value  '労働時間
                Worksheets("DATA1").Cells(42, 3).value = Workbooks("Master.xls").Worksheets("会社基本情報").Cells(22, 4).value  '雇用保険事業所番号
                Worksheets("DATA1").Cells(20, 3).value = Workbooks("Master.xls").Worksheets("会社基本情報").Cells(42, 4).value  '日額

            Case "実績表"
                .Range(A).value = Workbooks("Master.xls").Worksheets("会社基本情報").Cells(34, 4).value '従業員代表
                Call 結果表読込("実績表")
        End Select
        
    End With
    
End Sub
Sub 結果表読込(シート As String)
…