Je voudrais copier les données d'un fichier CSV dans une feuille de calcul Excel. Il y a 11 fichiers .csv. Jusqu'ici 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 une erreur en dehors de la plage en indice sur la ligne:
Set sh1 = Worksheets(filenum(lngPosition)).Activate
Définissez sh1 = Worksheets (filenum (lngPosition)). Activer
Vous obtenez une erreur Subscript out of range error
car il ne peut pas trouver cette feuille de travail.
Veuillez également ... veuillez ... ne pas utiliser svp .Select/.Activate/Selection/ActiveCell
Vous voudrez peut-être voir Comment éviter d'utiliser Select in Excel VBA Macros .
Cela semble un peu mieux que votre version précédente, mais débarrassez-vous de cela. Activez cette ligne et voyez si vous obtenez toujours cette erreur.
Dim sh1 As Worksheet
set sh1 = Workbooks.Add(filenum(lngPosition) & ".csv")
Crée un objet de feuille de calcul. Ce n'est que lorsque vous créez cet objet que vous souhaitez commencer à l'utiliser. Une fois que vous avez cet objet, vous pouvez effectuer les opérations suivantes:
sh1.Range("A69").Paste
sh1.Range("A69").Select
Le sh1. indique explicitement à Excel avec lequel vous souhaitez travailler ... sinon, si vous commencez à sélectionner d'autres feuilles de calcul pendant l'exécution de ce code, vous risquez de coller des données au mauvais endroit.