VBA处理文件框架代码 【第五部分(5.1.1):具体业务处理代码】
来源:互联网 发布:php客户端开发 编辑:程序博客网 时间:2024/06/05 06:58
本程序共分7个部分
【框架代码】 1.处理流程
【框架代码】 2.变量定义
【框架代码】 3.具体处理
【框架代码】 4.bat定义
【框架代码】 5.Excel文件操作
└ 5.1.具体业务流程(读取,写入文件)
└ 5.1.1.具体业务处理代码
6.目录结构,框架功能介绍
7.程序页面布局
创建成果物文件
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * *'* *'* Out対象の全員シート作成 *'* 作成日:2017/08/13 *'* 作成者:sun *'* 更新日:2017/08/13 *'* 更新者:sun *'* *'* * * * * * * * * * * * * * * * * * * * * * * * * * * * *Public Sub createOutFileAllSheets(outWb As Workbook) On Error GoTo errl '★★★Operate Out ファイル step1 start★★★ outWb.Activate outWb.Sheets("LIST").Select Dim peopleName As String Dim peopleNumber As String For i = 3 To 100 outWb.Sheets("LIST").Select peopleName = Cells(i, 3).Value peopleNumber = Cells(i, 2).Value If peopleName = Empty Then Exit For End If Sheets("000").Copy After:=Sheets(2 + (i - 3)) Sheets("000 (2)").Name = peopleNumber Sheets(peopleNumber).Select Range("C3").Value = peopleName 'KEY:peopleName, Value:peopleNumber peopleInfo.Add peopleName, peopleNumber Next Sheets("000").Select ActiveWindow.SelectedSheets.Delete '★★★Operate Out ファイル step1 end★★★ GoTo endokerrl: '異常処理 ERROR_FLG = "1" ERROR_INFO_LIST.Add ("関数「createOutFileAllSheets」で、エラー発生しました。") ERROR_INFO_LIST.Add ("エラー詳細:" & Err.Number & " : " & Err.Description)endok:End Sub
读取数据(IN)
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * *'* *'* Read IN 指紋情報取込 *'* 作成日:2017/08/13 *'* 作成者:sun *'* 更新日:2017/08/13 *'* 更新者:sun *'* *'* * * * * * * * * * * * * * * * * * * * * * * * * * * * *Public Sub setFingerprintInfoIntoDictionary(wks As Worksheet) On Error GoTo errl '人たち毎月の情報 Dim peopleStartTimeList(31) As String Dim peopleEndTimeList(31) As String '★★★Read fingerprint INFO start★★★ For i = 0 To 31 peopleStartTimeList(i) = "" peopleEndTimeList(i) = "" Next Dim peopleName As String Dim peopleNumber As String Dim lastTimePeopleName Dim strDate Dim lastTimeStrDate lastTimeStrDate = "" strDate = "" lastTimePeopleName = "" peopleName = "" For i = 2 To 10000 '名前を取得する peopleName = wks.Cells(i, 1).Value If peopleName = Empty Then '該当人の出勤、退勤情報を保存する========================================start Dim varCurrentPeopleStartTimeList_lastOne(31) Dim varCurrentPeopleEndTimeList_lastOne(31) For j = 0 To 31 varCurrentPeopleStartTimeList_lastOne(j) = peopleStartTimeList(j) varCurrentPeopleEndTimeList_lastOne(j) = peopleEndTimeList(j) Next fingerprintStartTimeInfo.Add lastTimePeopleName, varCurrentPeopleStartTimeList_lastOne fingerprintEndTimeInfo.Add lastTimePeopleName, varCurrentPeopleEndTimeList_lastOne 'Erase peopleEndTimeList For k = 0 To 31 peopleStartTimeList(k) = "" peopleEndTimeList(k) = "" Next '該当人の出勤、退勤情報を保存する========================================end Exit For End If '日付を取得する strDate = wks.Cells(i, 3).Value '日付によって、時間保存のindexを算出する Dim strsDate() As String strsDate = Split(strDate, "/") dateIndex = strsDate(2) '人変化かどうか判断する If peopleName = lastTimePeopleName Then '日付変更かどうか判断する If strDate = lastTimeStrDate Then '当日、最後の時間は、退勤時間を保存する peopleEndTimeList(Int(dateIndex)) = wks.Cells(i, 4).Value Else '初めて、日付け変化の場合、出勤時間です、出勤時間を保存する peopleStartTimeList(Int(dateIndex)) = wks.Cells(i, 4).Value '(※:一日中、一回の記録のみの可能性があります、この場合、二つ時間が同じ) '最後の時間は、退勤時間を保存 peopleEndTimeList(Int(dateIndex)) = wks.Cells(i, 4).Value End If Else '人変更、前回の人の出勤、退勤情報を保存する========================================start Dim varCurrentPeopleStartTimeList(31) Dim varCurrentPeopleEndTimeList(31) For j = 0 To 31 varCurrentPeopleStartTimeList(j) = peopleStartTimeList(j) varCurrentPeopleEndTimeList(j) = peopleEndTimeList(j) Next fingerprintStartTimeInfo.Add lastTimePeopleName, varCurrentPeopleStartTimeList fingerprintEndTimeInfo.Add lastTimePeopleName, varCurrentPeopleEndTimeList 'Erase peopleEndTimeList For k = 0 To 31 peopleStartTimeList(k) = "" peopleEndTimeList(k) = "" Next lastTimeStrDate = "" '前回の人の出勤、退勤情報を保存する========================================end '人変更の初回、人の出勤、退勤情報を保存する========================================start '日付変更かどうか判断する If strDate = lastTimeStrDate Then '当日、最後の時間は、退勤時間を保存する peopleEndTimeList(Int(dateIndex)) = wks.Cells(i, 4).Value Else '初めて、日付け変化の場合、出勤時間です、出勤時間を保存する peopleStartTimeList(Int(dateIndex)) = wks.Cells(i, 4).Value '(※:一日中、一回の記録のみの可能性があります、この場合、二つ時間が同じ) '最後の時間は、退勤時間を保存 peopleEndTimeList(Int(dateIndex)) = wks.Cells(i, 4).Value End If '次回人の出勤、退勤情報を保存する========================================end End If lastTimeStrDate = strDate lastTimePeopleName = peopleName Next '★★★Read fingerprint INFO end★★★ GoTo endokerrl: '異常処理 ERROR_FLG = "1" ERROR_INFO_LIST.Add ("関数「setFingerprintInfoIntoDictionary」で、エラー発生しました。") ERROR_INFO_LIST.Add ("エラー詳細:" & Err.Number & " : " & Err.Description)endok:End Sub
写入数据(OUT)
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * *'* *'* Write Out 指紋情報を出力対象に記入 *'* 作成日:2017/08/13 *'* 作成者:sun *'* 更新日:2017/08/13 *'* 更新者:sun *'* *'* * * * * * * * * * * * * * * * * * * * * * * * * * * * *Public Sub writeFingerprintInfoToOutFile(outWb As Workbook) On Error GoTo errl '人たち毎月の情報 Dim peopleStartTimeList(31) As String Dim peopleEndTimeList(31) As String '★★★Operate Out ファイル 指紋情報記入 start★★★ outWb.Activate outWb.Sheets("LIST").Select For i = 3 To 100 outWb.Sheets("LIST").Select peopleName = Cells(i, 3).Value peopleNumber = Cells(i, 2).Value If peopleName = Empty Then Exit For End If Sheets(peopleNumber).Select If fingerprintStartTimeInfo.exists(peopleName) Then Dim outFilePeopleStartTimeList() Dim outFilePeopleEndTimeList() outFilePeopleStartTimeList = fingerprintStartTimeInfo.Item(peopleName) outFilePeopleEndTimeList = fingerprintEndTimeInfo.Item(peopleName) '退勤時間を記録する For j = 3 To 33 Cells(j, 4).Value = outFilePeopleStartTimeList(j - 3 + 1) Cells(j, 5).Value = outFilePeopleEndTimeList(j - 3 + 1) Next '数式をTEXTへ転換 start Range("G3:G33").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Range("A1").Select '数式をTEXTへ転換 end End If Next '★★★Operate Out ファイル 指紋情報記入 end★★★ GoTo endokerrl: '異常処理 ERROR_FLG = "1" ERROR_INFO_LIST.Add ("関数「writeFingerprintInfoToOutFile」で、エラー発生しました。") ERROR_INFO_LIST.Add ("エラー詳細:" & Err.Number & " : " & Err.Description)endok:End Sub
阅读全文
0 0
- VBA处理文件框架代码 【第五部分(5.1.1):具体业务处理代码】
- VBA处理文件框架代码 【第五部分(5.1):具体业务】
- VBA处理文件框架代码 【第三部分:具体处理】
- VBA处理文件框架代码 【第五部分:Excel文件操作】
- VBA处理文件框架代码 【第一部分:处理流程】
- VBA处理文件框架代码 【第二部分:变量定义】
- VBA处理文件框架代码 【第四部分:bat定义】
- VBA处理文件框架代码 【第七部分:程序页面布局】
- VBA处理文件框架代码 【第六部分:目录结构,框架功能介绍】
- VBA代码做匹配处理
- Struts1框架学习(六)--业务分发器ActionServlet和业务具体处理组件Action
- 部分matlab处理图像代码
- 图片处理的部分代码
- 部分matlab处理图像代码
- kfs代码研究(三、meta server具体消息处理)
- kfs代码研究(三、meta server具体消息处理)
- 处理程序的代码框架
- 文件处理小代码行(aardio)
- 百度之星2017初赛题解(A)
- 3、如何将用户加入sudo配置文件中
- 日间和夜间的主题色
- SpringBoot19-springboot的Web开发-Favicon配置
- Search a 2D Matrix leetcode java
- VBA处理文件框架代码 【第五部分(5.1.1):具体业务处理代码】
- rTorrent使用方法
- python 百度地图 ip 转经纬度
- 我眼中的ASP.NET Core之微服务 (二)
- EffectiveC++学习笔记-条款46
- Python性能测试
- 【java】整数逆序,递归实现和字符串切割实现。
- 禁位排列与棋盘多项式
- Spark VS Hadoop