VBA(固定長CSVファイル読み取り)

 

https://qiita.com/Q11Q/items/3cec233950158110d0e8

 

-- 1. 開発タブの挿入でボタンを作成
ActiveXコントロールのものを使用する

-- 2. デザインモードONで作成したボタンをダブルクリックするとエディタが開くので下記コードを記載。デザインモードOFFで実行

 

Option Explicit

 


Private Sub CommandButton1_Click()


    '画面を更新しない
    Application.ScreenUpdating = False
    '確認メッセージを表示しない
    Application.DisplayAlerts = False


    'テスト固定長ファイル作成
    Call createTextFile(ThisWorkbook.Path & "\" & "a.txt")

    Dim wb As Workbook


    Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & "a.txt" _
                     , DataType:=xlFixedWidth _
                     , FieldInfo:=Array(Array(0, xlTextFormat), _
                                        Array(8, xlTextFormat), _
                                        Array(14, xlTextFormat))
    
    
    Set wb = Workbooks(Workbooks.Count)
    
    Dim r As Range
    
    
    ThisWorkbook.Worksheets("Sheet1").Cells.ClearContents
    
    Set r = wb.Worksheets("a").Range("A1").CurrentRegion
    
    
    r.Copy Range("A16")
    
    

    wb.Close

 

 

    MsgBox "処理完了"
    
    '確認メッセージを表示する
    Application.DisplayAlerts = True
    '画面を更新する
    Application.ScreenUpdating = True


End Sub

 


'ファイル作成関数
Private Sub createTextFile(filepath As String)

    Open filepath For Output As #1
    Dim i As Long
    
    Randomize
    
    For i = 1 To 100
    
        If i Mod 10 = 1 Then
            Print #1, Right("        " & CStr(Int(10000000 * Rnd)), 8)
                      
        Else
            Print #1, Right("        " & CStr(Int(10000000 * Rnd)), 8) & _
                      Left(CStr(Int(100000 * Rnd) & "       "), 6) & _
                      Right("    " & CStr(Int(100000000 * Rnd)), 8)
              
        End If
        
    Next i
    
    Close #1
 
End Sub