升级到Office 2013后Excelmacros不起作用

我的公司使用excel来生成networkingconfiguration,发送到我们所有的商店。 这些configuration与在Excel中input到variables表中的一些variables的例外几乎相同。 用户然后单击一个命令button,瞧,variables被放入configuration,并在工作簿中创build一个新工作表。 这已经为我们多年工作了。 不过,我们最近升级到了Office 2013,现在我们的configuration模板都没有工作。 代码没有太多,所以这可能相对容易,但我不是程序员。 这里是代码:

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 

任何帮助是极大的赞赏。 谢谢。

升级时出现错误使我认为你的代码可能使用早期绑定(虽然我看到的唯一的引用是像msoOLEControlObjectxlByColumns ,我不知道为什么这些会导致复制失败)。 您可能需要检查VBA中的引用,或者查看转换为后期绑定。 不幸的是,这里有些复杂。

另一种可能是Copy在VBA的新版本中发生了变化(仍然在2007年)。 你应该能够在光标位于单词复制的时候按下F1来找出它应该如何工作。

无论哪种方式,你可能会学习一点编程! ;)