VBA: Comment garder mon format csv lors du transfert de données Excel?

J'ai un file csv que j'ai séparé en fonction de virgules. J'utilise un file csv parce que je l'utilise comme un file «maître» pour contenir beaucoup d'informations, mais je préfère les colonnes plutôt que de les séparer par des virgules.

Donc, le code dont j'ai besoin est d'être en mesure d'exécuter une macro qui prendra des cellules à partir de mon classur Excel "copyr", et que vous l'ajoutez à l'endroit où les nouvelles cellules vierges commencent au bas de mon file csv "maître".

Par exemple:

ABC Week Time Month 3 09:03 March 

Mon Master.csv aura les mêmes en-têtes de colonne et je voudra mettre à jour continuellement le Master.csv lorsque je recevra de nouvelles informations de mon copy.xlsx mis à jour chaque semaine.

 Sub move2() Dim x As Workbook Dim y As Workbook Dim vals As Variant 'Open workbooks Set x = Workbooks.Open("C:\Users\wra\Desktop\macro test\copy") Set y = Workbooks.Open("C:\Users\wra\Desktop\macro test\Master.csv") 'Store value in variable vals = x.Sheets("copy").Range("A5").Value 'Use the variable to assign a value to the other file/sheet: y.Sheets("Master").Range("A3").Value = vals 'Close x: x.Close End Sub 

Je sais que ce code ne fait pas ce que je veux encore (ne prend qu'une valeur et l'ajoute à un endroit spécifique dans master.csv, mais c'est un début, je suppose.

La chose est que, lorsque j'utilise cette macro, les informations de mon copy.xlsx sont déplacées vers Master.csv, MAIS master.csv est reformaté des colonnes au text.

Ainsi, après l'exécution de la macro, il ressemble à ce qui suit:

 A Week,Time,Month 3,09:03,March 

Toutes datatables remontent à une colonne et la fonction Text to Columns utilisée avant la suppression de la main.

Comment puis-je empêcher cela? Et si quelqu'un peut aider à la prochaine partie du code (où je souhaite qu'il ajoute au bas de mes données master.csv, cela serait génial.

J'espère que cela était clair, merci d'avance!

Comme David l'a dit, utilisez Workbooks.OpenText pour vous assurer que votre file principal est ouvert correctement, par exemple:

 Set y = Workbooks.OpenText("C:\Users\wra\Desktop\macro test\Master.csv", DataType:=xlDelimited, Comma:=True) 

Pour append au bas du file maître, vous devez find la dernière ligne dans le file et entrer vos données ci-dessous. Il existe plusieurs façons de find la dernière ligne dans Excel, mais une méthode est de faire ce qui suit:

 myLastRow = y.Sheets("Master").Cells(Rows.Count, 1).End(xlUp).Row 

qui trouve la dernière ligne dans la première colonne de la feuille "Master". Les nouveldatatables pourraient alors être copiées dans:

 y.Sheets("Master").Cells(myLastRow + 1, 1).Resize(number_rows, number_cols).Value = vals