私の会社では、Excel を使用して、すべての店舗に送信されるネットワーク構成を作成しています。Excel の変数シートに入力されるいくつかの変数を除いて、構成はほとんど同じです。ユーザーがコマンド ボタンをクリックすると、出来上がり。変数が構成に配置され、ワークブックに新しいシートが作成されます。これは何年もの間私たちのために働いていました。しかし、最近 Office 2013 にアップグレードしたところ、構成テンプレートがどれも機能しなくなりました。コードにはそれほど多くはないので、これは比較的簡単かもしれませんが、私はプログラマーではありません。コードは次のとおりです。
Public Sub ReplaceValues(OriginalSheetName As String, VariableSheetName As String, NewSheetName As String)
Dim iVariableRowCounter As String
Dim sSearchValue As String
Dim sReplacementValue As String
Dim iControlCounter As Integer
ThisWorkbook.Sheets(OriginalSheetName).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = NewSheetName
For iControlCounter = ThisWorkbook.Sheets(NewSheetName).Shapes.Count To 1 Step -1
    If ThisWorkbook.Sheets(NewSheetName).Shapes(iControlCounter).Type = msoOLEControlObject Then
        ThisWorkbook.Sheets(NewSheetName).Shapes(iControlCounter).Delete
    End If
Next
iVariableRowCounter = 2
While ThisWorkbook.Sheets(VariableSheetName).Cells(iVariableRowCounter, 1).Value <> ""
    sSearchValue = ThisWorkbook.Sheets(VariableSheetName).Cells(iVariableRowCounter, 1).Value
    sReplacementValue = ThisWorkbook.Sheets(VariableSheetName).Cells(iVariableRowCounter, 2).Value
    ThisWorkbook.Sheets(NewSheetName).UsedRange.Replace what:=sSearchValue, replacement:=sReplacementValue, searchorder:=xlByColumns, MatchCase:=False, lookat:=xlPart
    iVariableRowCounter = iVariableRowCounter + 1
Wend
End Sub
Public Function GenerateNewWorksheetName(OriginalSheetName As String) As String
Dim sNewSheetName As String
Dim iIncrement As Integer
Dim iSheetCounter As Integer
Dim bGoodName As Boolean
Dim bSheetFound As Boolean
iIncrement = 1
bGoodName = False
While Not bGoodName
    sNewSheetName = OriginalSheetName & " - " & iIncrement
    bSheetFound = False
    For iSheetCounter = 1 To ThisWorkbook.Sheets.Count
        If ThisWorkbook.Sheets(iSheetCounter).Name = sNewSheetName Then
            bSheetFound = True
            Exit For
        End If
    Next
    If Not bSheetFound Then
        bGoodName = True
    End If
    iIncrement = iIncrement + 1
Wend
GenerateNewWorksheetName = sNewSheetName
End Function
どんな助けでも大歓迎です。ありがとうございました。