Guest User

Untitled

a guest
Jul 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.43 KB | None | 0 0
  1. Sub select_Click()
  2.  
  3. Dim sheetA As Worksheet
  4. Dim Shell, myPath
  5.  
  6. Set sheetA = ActiveSheet
  7.  
  8.  
  9. Set Shell = CreateObject("Shell.Application")
  10. Set myPath = Shell.BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10)
  11.  
  12. If Not myPath Is Nothing Then
  13. sheetA.Cells(3, 2).Value = myPath.Items.Item.path
  14. End If
  15.  
  16. Set Shell = Nothing
  17. Set myPath = Nothing
  18.  
  19. End Sub
  20.  
  21.  
  22. Sub copy_Click()
  23. Dim sheetA As Worksheet
  24. Dim strNow As String
  25. Dim cnt As Long
  26. Dim i As Long
  27.  
  28. cnt = 0
  29. Set sheetA = ActiveSheet
  30.  
  31. For i = 7 To 60000
  32. If sheetA.Cells(i, 2).Value = "" Then
  33. cnt = i - 1
  34. Exit For
  35. End If
  36. Next i
  37.  
  38. strNow = Format(Now, "yyyymmdd_hhnnss")
  39.  
  40. Worksheets.Add(After:=Worksheets(Worksheets.Count)).name = strNow
  41. Set sheetDeki = Sheets(strNow)
  42.  
  43. sheetA.Range("A7:F" & i).Copy sheetDeki.Range("A1:F" & (i - 6))
  44.  
  45. sheetDeki.Columns(1).ColumnWidth = 7
  46. sheetDeki.Columns(2).ColumnWidth = 60
  47. sheetDeki.Columns(3).ColumnWidth = 30
  48. sheetDeki.Columns(4).ColumnWidth = 20
  49. sheetDeki.Columns(5).ColumnWidth = 10
  50. sheetDeki.Columns(6).ColumnWidth = 20
  51.  
  52. End Sub
  53.  
  54. Sub clear_Click()
  55.  
  56. Dim sheetA As Worksheet
  57.  
  58. Set sheetA = ActiveSheet
  59.  
  60. Call clearAll(sheetA)
  61.  
  62. MsgBox "クリアしました"
  63.  
  64. End Sub
  65.  
  66. Private Function clearAll(sheetA As Worksheet)
  67.  
  68. Dim cnt As Long
  69. Dim i As Long
  70.  
  71.  
  72. cnt = 0
  73.  
  74. For i = 7 To 60000
  75.  
  76. If sheetA.Cells(i, 2).Value = "" Then
  77.  
  78. cnt = i - 1
  79. Exit For
  80. End If
  81. Next i
  82.  
  83. sheetA.Range(Cells(8, 1), Cells(i, 6)).Clear
  84.  
  85. Application.DisplayAlerts = False
  86.  
  87. If ExistsWorksheet("参照不可フォルダ") Then
  88. Sheets("参照不可フォルダ").Delete
  89. End If
  90. Application.DisplayAlerts = True
  91.  
  92. End Function
  93.  
  94.  
  95.  
  96.  
  97. Sub ref2_Click()
  98.  
  99. End Sub
  100. Sub serach3_Click()
  101.  
  102. Dim sheetA As Worksheet
  103. Dim sheetNG As Worksheet
  104. Dim path As String
  105. Dim cnt As Long
  106. Dim errCnt As Long
  107. Dim fso As Object
  108.  
  109. cnt = 0
  110. errCnt = 2
  111.  
  112. Set sheetA = ActiveSheet
  113.  
  114. Call clearAll(sheetA)
  115.  
  116. Worksheets.Add(Before:=Worksheets(1)).name = "参照不可フォルダ"
  117. Set sheetNG = Sheets("参照不可フォルダ")
  118.  
  119. sheetNG.Cells(1, 1).Value = "参照不可フォルダ"
  120.  
  121. sheetA.Activate
  122.  
  123. path = sheetA.Cells(3, 2).Value
  124.  
  125. Set fso = CreateObject("Scripting.FileSystemObject")
  126.  
  127. Call search(fso, sheetA, sheetNG, path, cnt, errCnt)
  128.  
  129. If errCnt = 2 Then
  130. Application.DisplayAlerts = False
  131. Sheets("参照不可フォルダ").Delete
  132. Application.DisplayAlerts = True
  133. sheetA.Activate
  134. End If
  135.  
  136. MsgBox "検索が完了しました"
  137.  
  138. End Sub
  139.  
  140. Sub search(fso As Object, sheetA As Worksheet, sheetNG As Worksheet, path As String, cnt As Long, errCnt As Long)
  141.  
  142. Dim folderObj As Object
  143.  
  144. If cnt > 60000 Then
  145.  
  146. MsgBox "検索対象が60000件を超えています"
  147. Else
  148. On Error GoTo ErrLabel
  149.  
  150. Set folderObj = fso.GetFolder(path)
  151.  
  152.  
  153.  
  154. For Each objFILE In folderObj.Files
  155. cnt = cnt + 1
  156.  
  157. With objFILE
  158. sheetA.Cells(cnt + 7, 1).Value = cnt
  159. sheetA.Cells(cnt + 7, 2).Value = .ParentFolder
  160. sheetA.Cells(cnt + 7, 3).Value = .name
  161. sheetA.Cells(cnt + 7, 4).Value = .Type
  162. sheetA.Cells(cnt + 7, 5).Value = .Size
  163. sheetA.Cells(cnt + 7, 6).Value = .DateLastModified
  164.  
  165. End With
  166.  
  167.  
  168. Next objFILE
  169.  
  170.  
  171. For Each objPATH2 In folderObj.SubFolders
  172.  
  173. Call search(fso, sheetA, sheetNG, objPATH2.path, cnt, errCnt)
  174. Next objPATH2
  175.  
  176. End If
  177.  
  178. Exit Sub
  179.  
  180. ErrLabel:
  181. If Not (folderObj Is Nothing) Then
  182. sheetNG.Cells(errCnt, 1).Value = folderObj.path
  183. Else
  184. sheetNG.Cells(errCnt, 1).Value = path & "存在しない"
  185. End If
  186. errCnt = errCnt + 1
  187. sheetA.Activate
  188. End Sub
  189.  
  190. Private Function ExistsWorksheet(ByVal name As String)
  191.  
  192. Dim ws As Worksheet
  193. For Each ws In Sheets
  194. If ws.name = name Then
  195. ' 存在する
  196. ExistsWorksheet = True
  197. Exit Function
  198. End If
  199. Next
  200.  
  201. ' 存在しない
  202. ExistsWorksheet = False
  203. End Function
Add Comment
Please, Sign In to add comment