約500個のExcelファイルにシートを追加するVBAスクリプトがあります。 VBAスクリプトを実行してシンプルなシートを追加するのに問題はありませんでしたが、VBAスクリプトとグラフとボタンを含むシートを追加しようとすると、しばらくの間、フリーズします。VBAスクリプトを実行するとExcelが応答を停止する
ここにコードがあります。私はそれがエラー処理を持っていないことを知っています - どのようにこの問題に取り組むべきか、あるいは何が凍結するのを引き起こしているのでしょうか?
Sub FindOpenFiles()
Const ForReading = 1
Set oFSO = New FileSystemObject
Dim txtStream As TextStream
Dim FSO As Scripting.FileSystemObject, folder As Scripting.folder, file As Scripting.file, wb As Workbook, sh As Worksheet
Dim directory As String
'The path for the equipement list. - add the desired path for all equipement or desired value stream only.
Set txtStream = oFSO.OpenTextFile("O:\SiteServices\Maintenance\Maintenance Support Folder\Maintenance Department Information\HTML for Knowledgebase\Excel for Knowledgebase\Equipement paths-all.txt", ForReading)
Do Until txtStream.AtEndOfStream
strNextLine = txtStream.ReadLine
If strNextLine <> "" Then
Set FSO = CreateObject("Scripting.FileSystemObject")
Set folder = FSO.GetFolder(strNextLine)
For Each file In folder.Files
If Mid(file.Name, InStrRev(file.Name, ".") + 1) = "xls" Then
Workbooks.Open strNextLine & Application.PathSeparator & file.Name
Set wb = Workbooks("Equipment Further Documentation List.xls")
For Each sh In Workbooks("Master File.xls").Worksheets
sh.Copy After:=wb.Sheets(wb.Sheets.Count)
Next sh
ActiveWorkbook.Close SaveChanges:=True
ActiveWorkbook.CheckCompatibility = False
End If
Next file
End If
Loop
txtStream.Close
End Sub
'Application.ScreenUpdating = false'の部分に最初の行を追加し、' End Sub': 'Applicationの直前にもう1行追加してください。ScreenUpdating = true' –
どこでクラッシュしますか? (どのラインなど) –
私はそれが圧挫する場所を確認する機会がありません...最初の4つまたは5つのファイルにシートを追加し、それが失敗した場所をチェックする機会なしにクラッシュします... – Saint