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