Je lis des données à partir d'une feuille de calcul Excel dans une macro de mot pour que je puisse utiliser la feuille de calcul pour instancier un document à partir d'un modèle et définir les propriétés du document instancié de la table Excel. J'essaie d'être aussi explicite avec les types que je peux, mais il s'avère que l'objet qui revient d'une sélection excel a des lignes tapées différemment d'une ligne dans un document Word. Pas vraiment si surprenant maintenant que j'y pense. Existe-t-il une classe de base commune plus spécifique que Object entre un type de ligne de feuille de calcul Excel et un type de ligne de table de mots? Peut-être un moyen de spécifier ce type de ligne Excel? Ou est mon meilleur pari d'utiliser le type d'objet et ne pas s'inquiéter des détails. Le typage dynamique est incroyable ici, la plupart des méthodes de classe sont les mêmes.VBA Interop: Existe-t-il un moyen d'utiliser explicitement les types de données Excel dans une macro de mots et inversement?
Je suis également intéressé à l'exécution de VBA base des sous-routines de mots (situés dans des conditions normales) à partir d'Excel VBA. J'ai essayé de chercher par Google, mais je n'ai pas eu de chance.
Les tripes sont ici:
Set testList = LoadExcel(strFile)
testList.Activate
Dim allSuites As Object
' LoadExcel also selects the rows that contains the data we want in excel
Set allSuites = testList.sheets("FullSuiteList").Application.Selection
Dim myRow As row
Dim Columns() As String
Dim i As Integer
' Previously I used a table in word, but there are too many columns
' to be manageable
' LoadPropertyNames testList.Tables(1).Rows(1), Columns
' For i = 2 To testList.Tables(1).Rows.Count
' Now we get data directly from our Excel sheet
LoadPropertyNames allSuites.Rows(1), Columns
For i = 2 To allSuites.Rows.Count
CreateOne allSuites.Rows(i), Columns
Next I
' row type yields type mismatch at runtime. myrow as Object works though.
Function LoadPropertyNames(myRow As row, Columns() As String)
...
End Function
' row type yields type mismatch at runtime. myrow as Object works though.
Function CreateOne(myRow As row, Columns() As String)
...
End Function
En regardant les questions similaires, VBA n'est pas bien reçu ici, intéressant. – BenPen
Dans l'éditeur VBA, dans le menu Outils, choisissez Références, puis ajoutez "Microsoft Excel ##. # Bibliothèque d'objets" à votre projet Word VBA. Cela vous donnera accès à tous les objets d'Excel. Notez que certains noms d'objets, par ex. "Range" représente différents objets dans Word vs Excel, donc déclarez les variables comme Word.Range ou Excel.Range comme approprié. – xidgel
@xidgel Oh, c'est super facile, putain. C'est exactement ce dont j'avais besoin, transformer cela en une réponse, et je vais mettre l'étiquette élémentaire sur cette question. – BenPen