VBA


TeraTerm接続マクロ


Private Sub CommandButton1_Click()

Dim rc As VbMsgBoxResult
rc = MsgBox("Cドライブ直下にttl接続ディレクトリを作成します。", vbYesNo)
If rc = vbYes Then
Else
    Exit Sub
End If

'最終行取得
Dim LastRow As Integer
LastRow = Range("B6").End(xlDown).row

Dim row As Integer
Dim FileNumber As Integer
Dim newDirectory As String
If Dir("C:\ttl接続", vbDirectory) = "" Then
    newDirectory = "C:\ttl接続"
    MkDir newDirectory
Else
    newDirectory = "C:\ttl接続_" & Format(Now, "yyyymmddHHMMss")
    MkDir newDirectory
End If

    FileNumber = FreeFile
    Dim fileNm As String
    For row = 6 To LastRow
    
        '<番号>.<環境>_<ホスト名>_<IPアドレス>_<ユーザ名>
        fileNm = Cells(row, "B").Value & "." & Cells(row, "C").Value & "_" & Cells(row, "D").Value & "_" & Cells(row, "E").Value & "_" & Cells(row, "F").Value
        
        Open newDirectory & "\" & fileNm & ".ttl" For Append As #FileNumber
        
        Print #FileNumber, "hostname='" & Cells(row, "E").Value & "'"
        Print #FileNumber, "msg=hostname"
        Print #FileNumber, "strconcat msg ':22 /ssh /auth=password /user=" & Cells(row, "F").Value & " /passwd=" & Cells(row, "G").Value & "'"
        
        Print #FileNumber, "Connect msg"
        
        Print #FileNumber, "getdir PWD"
        Print #FileNumber, "logfile=PWD"
        Print #FileNumber, "strconcat logfile '\'"
        Print #FileNumber, "strconcat logfile '" & fileNm & "'"
        Print #FileNumber, "strconcat logfile '.log'"
        Print #FileNumber, "logopen logfile 0 1"
        
        '==============================================================
        
        Print #FileNumber, "wait '#'"
        Print #FileNumber, "sendln 'date;hostname'"
        Close #FileNumber

    Next
    
    MsgBox newDirectory & "ディレクトリの生成が完了しました。"
    
    Dim ShellObj
    Set ShellObj = CreateObject("Shell.Application")
    ShellObj.Explore newDirectory & "\"

End Sub

LFで出力


Private Sub CommandButton1_Click()

    Dim i As Integer
    Open "C:\Users\usre\Desktop\マクロ\aaa\aaa.txt" For Output As #1

        Print #1, "ABC" & vbLf;
        Print #1, "ABC" & vbLf;

    Close #1

    
End Sub

複数テキストファイル内容入力


Private Sub CommandButton1_Click()

'    Dim 対象ディレクトリ As String: 対象ディレクトリ = ThisWorkbook.Path
'    Dim strFileName As String: strFileName = Dir(対象ディレクトリ & "\*.txt")
'
'    Do Until strFileName = ""
'        FNo = FreeFile
'        Dim buf As String
'
'            Open 対象ディレクトリ & "\" & strFileName For Input As #FNo
'                Do Until EOF(1)
'                Line Input #FNo, buf
'                n = n + 1
'                Cells(n, 1) = buf
'                Loop
'            Close #FNo
'
'        strFileName = Dir()
'    Loop

    Dim buf As String, Target As String
    Dim 対象ディレクトリ As String: 対象ディレクトリ = ThisWorkbook.Path
    Dim strFileName As String: strFileName = Dir(対象ディレクトリ & "\*.txt")
    
    Do Until strFileName = ""
    With CreateObject("ADODB.Stream")
        .Charset = "UTF-8"
        .Open
        .LoadFromFile 対象ディレクトリ & "\" & strFileName
        buf = .ReadText
        .Close
        tmp1 = Split(buf, vbLf)
            For i = 0 To UBound(tmp1)
            tmp2 = Split(tmp1(i), ",")
            j = j + 1
            Cells(j, 1) = tmp2
            Next i
    strFileName = Dir()
    End With
    Loop


End Sub
Private Sub CommandButton3_Click()

Workbooks.Add
newbk = ActiveWorkbook.Name
'Workbooks(newbk).Activate

With ThisWorkbook.Sheets("差分")
For i = 1 To 5
    If .Cells(16, i) >= 1 Then
        .Rows("19:19").AutoFilter
        .Range("$A$19:$E$22").AutoFilter Field:=i, Criteria1:="=1", Operator:=xlOr, Criteria2:="=3"
        If i <> 1 Then
            .Range(Columns(1), Columns(i - 1)).EntireColumn.Hidden = True
        End If
        If i <> 5 Then
            .Range(Columns(i + 1), Columns(5)).EntireColumn.Hidden = True
        End If
        .Range("A17:H22").Copy Worksheets(1).Cells(Worksheets(1).Cells(10000, 1).End(xlUp).Row + 1, 1)
        .Columns("A:F").EntireColumn.Hidden = False
    End If
Next i
End With

Dim ファイル名 As String: ファイル名 = "差分_" & Format(Now, "yyyymmddhhmmss")
Workbooks(newbk).SaveAs ThisWorkbook.Path & "\" & ファイル名
Workbooks(ファイル名 & ".xlsx").Close

End Sub
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub CommandButton1_Click()
    Dim cmdStr1 As String, cmdStr2 As String
    cmdStr1 = "Get-Item ""F:\VBA\02\aaa\111.txt"" | Select-Object -ExpandProperty LastWriteTime"
    cmdStr2 = "Get-Item ""F:\VBA\02\bbb\111.txt"" | Select-Object -ExpandProperty LastWriteTime"
    
    Dim a1 As String, a2 As String
    a1 = ExecCommand(cmdStr1)
    a2 = ExecCommand(cmdStr2)

    If a1 <> a2 Then
        MsgBox "NG"
    Else: MsgBox "OK"
    End If
End Sub

Private Function ExecCommand(command As String) As String
    Dim oExec As Object
    Set oExec = CreateObject("Wscript.shell").Exec("powershell -NoLogo -ExecutionPolicy RemoteSigned -Command " & command)
    oExec.StdIn.Close
    Do While oExec.Status = 0
        Sleep 100
    Loop

    ExecCommand = oExec.StdOut.ReadAll
End Function