Coller un fichier CSV avec VBA d'Excel est gênant car vous devez écrire beaucoup de code. J'ai essayé de savoir s'il y avait un moyen facile d'écrire en Python.
Collez le contenu CSV sur la feuille d'Excel spécifiée.
Python dispose de plusieurs modules pour travailler avec Excel. Le plus célèbre est peut-être Openpyxl. Cependant, bien qu'Openpyxl soit rapide, il existe de nombreux problèmes (réduction du format, etc.), donc Cette fois, j'aimerais utiliser xlwings.
Si xlwings n'est pas installé, installez-le avec la commande suivante.
$ pip install xlwings
Puisqu'il semble qu'il sera fréquemment utilisé à l'avenir, j'en ai fait une fonction. Après avoir lu le fichier CSV avec Pandas, il est collé dans la cellule A1 de la feuille spécifiée. Avec VBA, il est nécessaire de lire le CSV ligne par ligne et de le sortir, Avec Pandas, c'est très simple à écrire.
import pandas as pd
import xlwings as xw
def csv_to_sheet(wb_name, ws_name, csv_name, save_flg=True, quit_flg=True):
"""\
Description de la fonction:
Une fonction qui copie le contenu du CSV dans une feuille spécifiée
Description de l'argument:
wb_name: nom du classeur
ws_name: Nom de la feuille
csv_name: nom de fichier CSV
save_flg: l'écrasement est effectué par défaut.
quit_flg: la valeur par défaut est fermée
"""
df = pd.read_csv(csv_name,encoding='cp932', index_col=0) #Lire le fichier CSV avec DataFrame
wb = xw.Book(wb_name) #Créer un objet de classeur
wss = wb.sheets
ws = wss[ws_name] #Créer un objet de feuille de calcul
ws.range('A1').value = df #Coller DataFrame
#save_Écraser si flg est vrai
if save_flg:
wb.save(path=None)
#quit_Fermez Excel si flg est vrai
if quit_flg:
app = xw.apps.active
app.quit() #Quitter Excel
Veuillez remplacer le fichier Excel, le nom de la feuille et le fichier CSV par ceux de votre choix. Si vous ne souhaitez pas écraser, définissez save_flg = False dans l'argument. Si vous souhaitez continuer l'édition sans fermer le fichier, transmettez quit_flg = False.
wb_name = 'Nom du fichier Excel.xlsx'
ws_name = 'Nom de la feuille'
csv_name = 'Fichier CSV'
csv_to_sheet(wb_name, ws_name, csv_name)