| 
    
     |  | csvファイルを読み込んで、各ユーザのログイン時刻とログアウト時刻 また、実利用時間を取得するスクリプトを作成しています
 
 スクリプト自動実行をおこなっている関係上、
 1つのマクロで全処理を実施する必要が発生したため、
 各処理を結合したのですが、処理が冗長化しているのか、
 別々にしたときよりも実行時間がかかってしまいます。
 
 そこで、スリム化を計画しているのですが、
 具体的に手を入れる箇所がうまくわからない状態です。
 
 申し訳ございませんが、
 どこを修正すればよいのか、ご教授いただけますでしょうか。
 (処理が遅くなっている原因などもお分かりになりましたら、お願いいたします)
 
 Option Explicit
 
 Sub CSV_READ()
 'マスタファイルを読み込むマクロ
 
 Dim varFileName As Variant
 Dim varFileName2 As Variant
 Dim intFree As Integer
 Dim intFree2 As Integer
 Dim strRec As String
 Dim strRec2 As String
 Dim strSplit() As String
 Dim strSplit2() As String
 Dim i As Long, j As Long
 Dim i2 As Long, j2 As Long
 Dim i3 As Long, j3 As Long
 Dim m As Long, n As Long
 Dim dic As Object
 Dim rng As Range
 Dim vA As Variant, vB As Variant, v As Variant
 Dim ii As Long, jj As Long, kk As Long, nn As Long
 
 Dim vA2 As Variant, vB2 As Variant, v2 As Variant
 Dim ii2 As Long, jj2 As Long, kk2 As Long, nn2 As Long
 
 
 Dim dic2 As Object
 Dim vA3 As Variant, vK2 As Variant, vK3 As Variant
 
 
 Dim csvFile As String
 Dim ii3 As Long, jj3 As Long
 
 Dim ws_master_csv As Worksheet
 Dim ws_master_csv_new As Worksheet
 Dim ws_btn As Worksheet
 Dim ws_group As Worksheet
 Dim ws_group_new As Worksheet
 Dim ws_group_user As Worksheet
 Dim ws_cover As Worksheet
 Dim ws_usetime As Worksheet
 Dim ws_usetime_new As Worksheet
 Dim ws_addtime As Worksheet
 Dim ws_res As Worksheet
 Dim ws_last As Worksheet
 Dim ws_group_name As Worksheet
 Dim ws_group_new_3 As Worksheet
 Dim ws_group_new_2 As Worksheet
 
 
 Dim ws_add As Worksheet
 Set ws_add = Worksheets.Add
 ws_add.Name = "最終csv"
 
 
 Set ws_master_csv = Worksheets("マスタCSV")
 Set ws_master_csv_new = Worksheets("マスタCSV更新")
 Set ws_btn = Worksheets("ボタン")
 Set ws_group = Worksheets("グループ情報")
 Set ws_group_new = Worksheets("グループ情報更新")
 Set ws_group_user = Worksheets("利用ユーザ")
 Set ws_cover = Worksheets("名称補完")
 Set ws_usetime = Worksheets("開始終了")
 Set ws_usetime_new = Worksheets("開始終了更新")
 Set ws_addtime = Worksheets("時間合計")
 Set ws_res = Worksheets("出力結果")
 Set ws_last = Worksheets("最終csv")
 Set ws_group_name = Worksheets("グループ名")
 Set ws_group_new_3 = Worksheets("グループ補完")
 Set ws_group_new_2 = Worksheets("グループ補完2")
 
 Set dic = CreateObject("Scripting.Dictionary")
 Set dic2 = CreateObject("Scripting.Dictionary")
 
 
 ws_master_csv.Activate
 
 
 '貼り付け先を空白にする
 ws_master_csv.Cells.Clear
 ws_master_csv_new.Cells.Clear
 ws_group.Cells.Clear
 ws_group_new.Cells.Clear
 ws_group_user.Cells.Clear
 ws_cover.Cells.Clear
 ws_usetime.Cells.Clear
 ws_usetime_new.Cells.Clear
 ws_addtime.Cells.Clear
 ws_res.Cells.Clear
 ws_last.Cells.Clear
 ws_group_name.Cells.Clear
 ws_group_new_3.Cells.Clear
 ws_group_new_2.Cells.Clear
 
 '読み込むファイルを指定する
 varFileName = "P:\ログ.csv"
 varFileName2 = "P:\ライセンス.csv"
 
 
 intFree = FreeFile '空番号を取得
 Open varFileName For Input As #intFree 'CSVファイルをオープン
 
 'ログ情報のcsvファイルを1行ずつ読み込んで貼り付ける
 i = 0
 Do Until EOF(intFree)
 Line Input #intFree, strRec '1行読み込み
 i = i + 1
 strSplit = Split(strRec, ",") 'カンマ区切りで配列へ
 For j = 0 To UBound(strSplit)
 Cells(i, j + 1) = strSplit(j)
 Next
 Loop
 
 'グループ情報のcsvファイルを1行ずつ読み込んで貼り付ける
 ws_group.Activate
 
 intFree2 = FreeFile '空番号を取得
 Open varFileName2 For Input As #intFree2 'CSVファイルをオープン
 
 'csvファイルを1行ずつ読み込んで貼り付ける
 i2 = 0
 Do Until EOF(intFree2)
 Line Input #intFree2, strRec2 '1行読み込み
 i2 = i2 + 1
 strSplit2 = Split(strRec2, ",") 'カンマ区切りで配列へ
 For j2 = 0 To UBound(strSplit2)
 Cells(i2, j2 + 1) = strSplit2(j2)
 Next
 Loop
 
 
 |  |