さまざまなワークブックから一連のシートシートを取り出して1つのワークブックに配置する簡単なスクリプトを作成しています。私が持っている他のスクリプトで機能するように、すべてのシートの名前を変更する必要があります。私がeodループから取得しているシートを除いて、すべてのシートの名前が正しく変更されます。最初の2枚のシートは問題なく名前が変更されますが、その後はループ内のどのシートも名前が変更されません。eodシートの元となっているすべてのワークブックはxlsx形式であり、残りはxls形式です。マクロが完了すると、xlsにあるすべてのシートが閉じますが、すべてのxlsx形式のファイルは閉じません。これが問題の一部であるかどうかはわかりません。これにより、特定のシートの名前が変更されるだけになるのはなぜですか?
Sub getSheets()
num = 1
-----> ' loop for eod
Do Until copyover("Weekly", "EOD Week " & num) = False
num = num + 1
Loop
temp = copyover("Voice_of_the_Customer", "VOC")
temp = copyover("Daily_Cp%_v2", "COMP")
temp = copyover("MPJ-Scorecard-QC-Summary", "QC")
temp = copyover("MPJ-Scorecard-SCOI-Summary", "SCOI")
temp = copyover("TechUpstreamTransmit", "UPSQ")
temp = copyover("Daily_CCG_OTG", "MTF")
temp = copyover("summary", "S7 QC")
temp = copyover("MPJ-Scorecard-TCF-Summary", "TCF")
End Sub
Function copyover(SheetAd As String, SheetName As String) As Boolean
Dim origWork As Workbook
Dim fileName As String
Dim copytoFile As Variant
Dim copytoFile2 As Workbook
Set origWork = ActiveWorkbook
tem = MsgBox("Do you want to add " & SheetName, vbYesNoCancel)
If (tem = vbYes) Then
copyover = True
On Error GoTo ErrHandler
copytoFile = Application.GetOpenFilename _
(Title:=SheetAd, _
FileFilter:="Excel Files *.x* (*.x*),")
Workbooks.Open copytoFile
Set copytoFile2 = ActiveWorkbook
copytoFile2.Sheets(SheetAd).Move After:=origWork.Sheets("TechScore")
'ActiveSheet.Name = SheetName
origWork.Activate
origWork.Sheets(SheetAd).Name = SheetName
'ThisWorkbook.VBProject.VBComponents(SheetAd).Name = "Mudface"
Workbooks(copytoFile).Close False
Else
If (tem = vbNo) Then
copyover = False
End If
End If
ErrHandler:
End Function