Indice en dehors de la plage d'erreur dans ce script VBA Excel
Je voudrais copier des données à partir d'un fichier CSV dans une feuille de calcul Excel. Il y a 11 .les fichiers csv. Pour l'instant j'ai ceci (c'est une version modifiée d'un post précédent):
Sub importData()
Dim filenum(0 To 10) As Long
filenum(0) = 052
filenum(1) = 060
filenum(2) = 064
filenum(3) = 068
filenum(4) = 070
filenum(5) = 072
filenum(6) = 074
filenum(7) = 076
filenum(8) = 178
filenum(9) = 180
filenum(10) = 182
Dim sh1 As Worksheet
On Error GoTo my_handler
For lngPosition = LBound(filenum) To UBound(filenum)
'Windows(filenum(lngPosition) & ".csv").Activate
Workbooks.Add(filenum(lngPosition) & ".csv").Activate
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("30_graphs_w_Macro.xlsm").Activate
Set sh1 = Worksheets(filenum(lngPosition)).Activate
Range("A69").Paste
Range("A69").Select
Next lngPositionlngPositionlngPosition
my_handler:
MsgBox "All done."
Exit Sub
End Sub
Ce code me donne un indice en dehors de la plage d'erreur sur la ligne:
Set sh1 = Worksheets(filenum(lngPosition)).Activate
- La première supprimer la
.Activate
ligne. Si ce n'est pas l'aider à mettre unMsgBox filenum(lngPosition)
avant laSet sh1..
ligne et voir ce que le MsgBox dit. Assurez-vous d'avoir une feuille avec exactement le même nom. - OK.. je viens de voir ça.. le fichier 052.csv s'ouvre.. et puis je reçois le message il est hors de portée.. Une chose que j'ai remarqué, c'est que le fichier s'ouvre comme un [lecture seule] fichier. Quand je l'ouvre manuellement, il ouvre noramlly
- Désolé de ne pas voir votre commentaire. Laissez-moi savoir si vous souhaitez poster une réponse et je vais supprimer ma réponse.
- pas de soucis, c'est pourquoi il est juste un commentaire, j'etais en train de taper ma réponse alors que vous avez ajouté les vôtres haha alors maintenant, nous avons 2 réponses différentes en fait, bien que correct
Vous devez vous connecter pour publier un commentaire.
Vous obtenez
Subscript out of range error
erreur, car il ne peut pas trouver cette Feuille de calcul.Aussi s'il vous plaît... s'il vous plaît... s'il vous plaît ne pas utiliser
.Select/.Activate/Selection/ActiveCell
Vous pourriez vouloir voir Comment Éviter à l'aide de Select dans Excel Macros VBA.Cela ressemble un peu mieux que la version précédente, mais de se débarrasser de cela .Activer la ligne et voir si vous obtenez toujours cette erreur.
Crée un objet de feuille de calcul. Pas jusqu'à ce que vous créez l'objet voulez-vous commencer à travailler avec elle. Une fois que vous avez cet objet vous pouvez effectuer les opérations suivantes:
Le sh1. explicitement indique à Excel quel objet vous sont en train de travailler... sinon, si vous commencez à sélectionner d'autres feuilles de calcul alors que ce code est en cours d'exécution vous pourriez vous retrouver coller des données à la mauvaise place.