Microsoft 365 Excel.Workbook(File.Contents("C:\Book1.xlsx"))

fhuillier

XLDnaute Nouveau
Bonjour dans une macro j'ai la ligne suivante

Dim NomDossier as string
NomDossier = Feuil1.Rnage("B2").Value 'nom du chemin et fichier D:\Test\mes-cles_2023-test.xls chemin

Cette commande me permet d'importer un fichier Excel externe dans ma feuille

ActiveWorkbook.Queries.Add Name:="mes-cles_2023-02-Sage", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Excel.Workbook(File.Contents(""D:\Test\mes-cles_2023-test.xls""), null, true)," & Chr(13) & "" & Chr(10) & " #""mes-cles_2023-02-Sage1"" = Source{[Name=""tableau""]}[Data]," & Chr(13) & "" & Chr(10) & " #""En-têtes promus"" = Table.PromoteHeaders(#""mes-cles_2023-02-tableau"", [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Type modifié"" = Table.TransformColumnTypes(#""En-têtes promus"",{{""Nom" & _
" Commercial"", type text}, {""Code client"", Int64.Type}, {""N° de série"", Int64.Type}, {""Référence produit"", type text}, {""Libellé produit"", type text}, {""Date de fin de contrat"", type date}, {""Version "", type text}, {""Clé "", type text}, {""Date clé"", type date}, {""Code d’activation"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""" & _
"Type modifié"""

J'aimerai mettre ExcelWorkBook(File.Contants("NomDossier") car le chemin du fichier que j'importe peut changer de dossier ou de nom.

Merci de votre aide cordialement
Francis
 

Oneida

XLDnaute Impliqué
Bonjour,
Vous avez deja NomDossier.
VB:
NomDossier = Feuil1.Range("B2").Value 'nom du chemin et fichier D:\Test\mes-cles_2023-test.xls chemin
Excel.Workbook (File.Contants(NomDossier), null, true)

Si le nom du fichier change, il faudra cree une autre variable Fichier
NomDossier devra etre "D:\Test\" 'donc cellule a modifier
Fichier="mes-cles_2023-test.xls" 'qui serait dans une cellule
VB:
Excel.Workbook (File.Contants(NomDossier & Fichier), null, true)
 

fhuillier

XLDnaute Nouveau
Oneida bonjour,
Je vous remercie par contre quand je remplace :

Excel.Workbook(File.Contents(""D:\Test\mes-cles_2023-test.xls""), null, true)
par
Excel.Workbook (File.Contants(NomDossier & Fichier), null, true)


ActiveWorkbook.Queries.Add Name:="mes-cles_2023-02-Sage", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Excel.Workbook (File.Contants(NomDossier & Fichier), null, true)," & Chr(13) & "" & Chr(10) & " #""mes-cles_2023-02-Sage1"" = Source{[Name=""tableau""]}[Data]," & Chr(13) & "" & Chr(10) & " #""En-têtes promus"" = Table.PromoteHeaders(#""mes-cles_2023-02-tableau"", [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Type modifié"" = Table.TransformColumnTypes(#""En-têtes promus"",{{""Nom" & _
" Commercial"", type text}, {""Code client"", Int64.Type}, {""N° de série"", Int64.Type}, {""Référence produit"", type text}, {""Libellé produit"", type text}, {""Date de fin de contrat"", type date}, {""Version "", type text}, {""Clé "", type text}, {""Date clé"", type date}, {""Code d’activation"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""" & _
"Type modifié"""

Debogage !!!
Merci de votre aide cordialement Francis
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans une requête (ici power query), "File.Contants" n'existe pas ! C'est : File.Contents
Et pour votre formule :

..... & " Source = Excel.Workbook (File.Contents(" & NomDossier & Fichier & "), null, true)," & ....
En espérant que NomDossier & Fichier forment un chemin correcte vers un fichier existant.

Mais pourquoi faire ça par macro alors qu'une requête paramétrée power query le ferait directement.

par exemple pour vous si le dossier est en B2, nommez cette cellule Dossier et la requête pourrait avoir pour source :

= Excel.Workbook(File.Contents(Table.FirstValue(Excel.CurrentWorkbook(){[Name="NomDossier"]}[Content]) & NomFichier
NomFichier étant définit ailleurs.
 

fhuillier

XLDnaute Nouveau
Bonjour,
Vous avez deja NomDossier.
VB:
NomDossier = Feuil1.Range("B2").Value 'nom du chemin et fichier D:\Test\mes-cles_2023-test.xls chemin
Excel.Workbook (File.Contants(NomDossier), null, true)

Si le nom du fichier change, il faudra cree une autre variable Fichier
NomDossier devra etre "D:\Test\" 'donc cellule a modifier
Fichier="mes-cles_2023-test.xls" 'qui serait dans une cellule
VB:
Excel.Workbook (File.Contants(NomDossier & Fichier), null, true)
Merci de ton aide cordialement.
 

fhuillier

XLDnaute Nouveau
Bonjour,

Dans une requête (ici power query), "File.Contants" n'existe pas ! C'est : File.Contents
Et pour votre formule :


En espérant que NomDossier & Fichier forment un chemin correcte vers un fichier existant.

Mais pourquoi faire ça par macro alors qu'une requête paramétrée power query le ferait directement.

par exemple pour vous si le dossier est en B2, nommez cette cellule Dossier et la requête pourrait avoir pour source :


NomFichier étant définit ailleurs.
Merci de ton aide cordialement
 

Discussions similaires

Réponses
4
Affichages
2 K

Statistiques des forums

Discussions
315 093
Messages
2 116 140
Membres
112 669
dernier inscrit
Guigui2502