|
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
|
|