Excel VBA 質問スレ Part53

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/04/27(金) 19:02:38.39ID:+ocy8bIv
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part52
http://mevius.5ch.net/test/read.cgi/tech/1517052305/
2018/05/05(土) 22:15:32.03ID:LkKePK4y
長すぎワロタ
なお動作確認はしていない

Sub GetProcessTargetFilesImpl(ByVal folder As Object, ByVal tester As Object, ByVal result As Collection)
For Each file In folder.Files
If tester.Test(file.Name) Then
result.Add file
End If
Next
For Each subFolder In folder.SubFolders
GetProcessTargetFilesImpl subFolder, result
Next
End Sub

Function GetProcessTargetFiles(ByVal rootFolderPath As String) As Collection
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim tester As Object
Set tester = CreateObject("VBScript.RegExp")
tester.Pattern = "^2018-\d\d-\d\d\.xlsx$"
tester.IgnoreCase = True
Set GetProcessTargetFiles = New Collection
GetProcessTargetFilesImpl fso.GetFolder(rootFolderPath), tester, GetProcessTargetFiles
End Function
2018/05/05(土) 22:16:12.51ID:LkKePK4y
Sub DeleteTempWorksheets(ByVal filePath As String)
Dim book As Workbook
Set book = Workbooks.Open(filePath)
Dim tempSheets As Collection
Set tempSheets = New Collection
For Each sheet In book.Worksheets
If Left(tempSheets.Name, 3) = "tmp" Then
tempSheets.Add sheet
End If
Next
For Each sheet In tempSheets
sheet.Delete
Next
book.Save
book.Close
End Sub

Sub MainProgram()
For Each file In GetProcessTargetFiles()
DeleteTempWorksheetsDeleteTempSheet file.Path
Next
End Sub
2018/05/05(土) 23:42:21.67ID:LkKePK4y
PSだとこう
rubyやpythonだとどうなるのかね?

$app = New-Object -ComObject Excel.Application
$app.DisplayAlerts = $false
Get-ChildItem -Path "D:\tmp\" -Recurse -Filter "*.xlsx" |
 where { $_.Name -match "^2018-\d\d-\d\d\.xlsx" } |
 foreach {
  $book = $app.Workbooks.Open($_.FullName)
  $sheets = $book.Worksheets | where { $_.Name.StartsWith("tmp") }
  $sheets | foreach { $_.Delete() | Out-Null }
  $book.Close($true)
 }
$app.Quit()
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況