fork download
  1. Option Explicit
  2.  
  3. Const Folder As String = "D:\goo\data9"
  4. Public Sub 測定結果設定()
  5. Dim fname As String
  6. Dim fcount As Long: fcount = 0
  7. Dim ms As Worksheet
  8. Dim mscol As Long '差分値距離列番号(統合)
  9. Dim mjcol As Long '実測値列番号(統合)
  10. Dim tscol As Long '差分値距離列番号(CSV)
  11. Dim tjcol As Long '実測値列番号(CSV)
  12. Dim msrow As Long '差分値距離行番号(統合)
  13. Dim mjrow As Long '実測値行番号(統合)
  14. Dim tsrow As Long '差分値距離行番号(CSV)
  15. Dim tjrow As Long '実測値行番号(CSV)
  16. Dim fno As Long 'CSVファイル番号
  17. Dim bno As Long 'CSVファイル内ブロック番号
  18. Dim t1 As Double
  19. Dim t2 As Double
  20. t1 = Timer
  21. Application.ScreenUpdating = False
  22. Set ms = Worksheets("測定結果")
  23. '前回使用領域のクリア
  24. ms.Cells.ClearContents
  25. ms.Cells.Font.Color = RGB(0, 0, 0)
  26. ms.Cells(1, "A").Value = "取得ファイル名"
  27. ms.Cells(3, "A").Value = "コメント"
  28. fname = Dir(Folder & "\" & "LS?.??_L0?.csv")
  29. Do While fname <> ""
  30. fcount = fcount + 1
  31. '実測値距離、差分値距離設定(横複数列に設定)
  32. Call set_data(ms, fcount, fname)
  33. fname = Dir
  34. Loop
  35. If fcount = 0 Then
  36. MsgBox ("該当ファイルなし")
  37. Exit Sub
  38. End If
  39. '差分値距離、実測値距離設定(縦1列に設定)
  40. mscol = fcount * 2 + 3
  41. mjcol = mscol + 1
  42. ms.Cells(3, mscol).Value = "差分値距離"
  43. ms.Cells(3, mjcol).Value = "実測値距離"
  44. For fno = 1 To fcount
  45. tscol = fno * 2 + 1
  46. tjcol = fno * 2
  47. For bno = 1 To 3
  48. tjrow = (bno - 1) * 8 + 4
  49. tsrow = tjrow + 4
  50. msrow = (fno - 1) * 12 + (bno - 1) * 4 + 4
  51. mjrow = msrow
  52. '差分値設定
  53. ms.Cells(tsrow, tscol).Resize(4, 1).Font.Color = RGB(255, 0, 0) '赤
  54. ms.Cells(msrow, mscol).Resize(4, 1).Value = ms.Cells(tsrow, tscol).Resize(4, 1).Value
  55. '実測値設定
  56. ms.Cells(tjrow, tjcol).Resize(4, 1).Font.Color = RGB(0, 0, 255) '青
  57. ms.Cells(mjrow, mjcol).Resize(4, 1).Value = ms.Cells(tjrow, tjcol).Resize(4, 1).Value
  58. Next
  59. Next
  60. ms.Columns(mscol).Font.Color = RGB(255, 0, 0) '赤
  61. ms.Columns(mjcol).Font.Color = RGB(0, 0, 255) '青
  62. Application.ScreenUpdating = True
  63. t2 = Timer
  64. MsgBox ("完了 所要時間=" & t2 - t1 & "秒")
  65. End Sub
  66.  
  67. Private Sub set_data(ByRef ms As Worksheet, ByVal fcount As Long, ByVal fname As String)
  68. 'CSVファイルをオープン
  69. Dim csvpath As String 'CSVファイルパス
  70. Dim wb As Workbook 'CSVファイルブック
  71. Dim ws As Worksheet 'CSVファイルシート
  72. Dim mcol As Long '測定結果設定列番号
  73. csvpath = Folder & "\" & fname
  74. Workbooks.OpenText Filename:=csvpath, DataType:=xlDelimited, comma:=True, textqualifier:=xlTextQualifierNone
  75. Set wb = Workbooks.Item(Workbooks.count)
  76. Set ws = wb.Worksheets(1)
  77. 'コメント設定
  78. If fcount = 1 Then
  79. ms.Range("A4:A27").Value = ws.Range("B9:B32").Value
  80. End If
  81. mcol = fcount * 2
  82. 'ファイル名設定
  83. Dim bname As String
  84. bname = Left(fname, Len(fname) - 4)
  85. ms.Cells(1, mcol).Value = bname
  86. '実測値距離
  87. ms.Cells(3, mcol).Value = "実測値距離"
  88. ms.Range(ms.Cells(4, mcol), ms.Cells(27, mcol)).Value = ws.Range("D9:D32").Value
  89. '差分値距離
  90. ms.Cells(3, mcol + 1).Value = "差分値距離"
  91. ms.Range(ms.Cells(4, mcol + 1), ms.Cells(27, mcol + 1)).Value = ws.Range("E9:E32").Value
  92. 'CSVファイルクローズ
  93. wb.Close
  94. End Sub
  95.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty