Excel macro ne fonctionne pas après la mise à niveau vers Office 2013

Mon entreprise utilise excel pour produire réseau configs qui vont à l'ensemble de nos magasins. les configs sont à peu près identiques à l'exception de quelques variables qui se entrés dans une variable feuille dans Excel. L'utilisateur puis cliquez sur un bouton de commande et le tour est joué, les variables sont mis dans la config et une nouvelle fiche est créée dans le classeur. C'était pour nous depuis des années. Toutefois, nous avons récemment mis à niveau vers Office 2013 et présent, aucun de nos config modèles de travail. Il n'y a pas beaucoup pour le code, alors cela pourrait être relativement facile, mais je ne suis pas un programmeur. Voici le code:

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

Toute aide est grandement appréciée. Merci.

  • Ce qui ne fonctionne pas? Des valeurs erronées ou avez-vous des erreurs? Quelque chose d'autre?
  • Désolé, ça pourrait aider. Quand je clique sur le bouton de commande à l'entrée les variables, j'obtiens une erreur d'Exécution '1004': la méthode Copy de la classe Worksheet a échoué. Je reçois un bouton et un bouton de Débogage. lorsque je clique sur le bouton debug, il met en évidence cette ligne : ThisWorkbook.Feuilles(OriginalSheetName).Copie d'après:=ThisWorkbook.Feuilles(ThisWorkbook.Les draps.Le comte)
  • Quelle est la ligne de code qui appelle ce code? Après avoir cliqué sur le Débogage, si vous passez votre souris sur OriginalSheetName ce que la petite pop-up de dire? Et est-ce un nom à l'un de la feuille de calcul dans le classeur 3 qui est en cours d'exécution du code?
  • Vous pouvez poster votre classeur - avec les données supprimées si nécessaire?
  • Dim iVariableRowCounter As String doit sûrement être un Integer au lieu d'un String?
  • est votre classeur protégé? Est votre feuille de calcul protégée? Sont-il caché des feuilles de calcul?
  • Une astuce utile, après l'appui sur le bouton Debug, est de mettre en évidence une partie de la ligne et appuyez sur Maj + F9 pour créer une "montre". Cela permet de garder la trace d'une variable ou d'une expression et d'afficher la valeur dans la mémoire à l'instant. Vous pouvez créer autant de montres que vous le souhaitez. Je voudrais créer une alerte pour ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) et voir si c'est une feuille de calcul valide ou pas.

InformationsquelleAutor user2340287 | 2013-05-01