ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part52
http://mevius.5ch.net/test/read.cgi/tech/1517052305/
探検
Excel VBA 質問スレ Part53
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/04/27(金) 19:02:38.39ID:+ocy8bIv536デフォルトの名無しさん
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
なお動作確認はしていない
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
537デフォルトの名無しさん
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
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
538デフォルトの名無しさん
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()
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()
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 働いて参ります
- ( ・᷄ὢ・᷅ )あ?
- 地震
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- ブタをぶったたく
