2017-08-28 1 views
2

J'ai un document Word incorporé (*.docm) dans ma feuille de calcul Excel.Passer une variable de XLSM à DOCM incorporé

Le document Word contient un table, qui a la relation entre ses correspondants Table dans Excel WorkSheet.

Je veux nombre de lignes de table dans le document Word incorporé été dynamiquement mis dans l'événement Document_Open, avec une valeur ci-dessous, de sa participation Feuille de travail:

ThisWorkbook.Worksheets("Sheet1").ListObjects("Salary").ListRows.Count 

Comment puis-je transmettre des valeurs entre Excel (document conteneur macro) et son document de mot de conteneur de macro intégré? -S'il est une bonne réponse pour le problème audacieux ci-dessus ou une autre solution?

S'il y a une autre réponse de solution, S'il vous plaît noter que le besoin de couverture:

Remplir la table de destination (qui est dans le document Wordclock) cellules avec des valeurs correspondantes de données de base sont dans le tableau parent de la feuille de travail ?, même lieu avec des champs générant automatiquement des événements Document_Open à partir du document de mot incorporé du conteneur de macros.

Répondre

1

Je suggère d'intégrer le document .docx pour éviter que les macros ne soient désactivées à chaque ouverture et de placer tout le code dans le projet Excel VBA. Voici l'exemple, montrant comment modifier le nombre de lignes dans un document Word incorporé à partir d'Excel VBA:

Sub ChangeRowsCount() 

    Dim n As Long 

    With ThisWorkbook.Worksheets("Sheet1") 
     n = .ListObjects("Table1").ListRows.Count 
     With .Shapes("Object 1") 
      Select Case True 
       Case .Type <> msoEmbeddedOLEObject 
        MsgBox "Invalid OLE Object type" 
       Case InStr(1, .OLEFormat.progID, "Word.Document", vbTextCompare) <> 1 
        MsgBox "Invalid Application" 
       Case Else 
        .OLEFormat.Object.Verb xlVerbOpen 
        With .OLEFormat.Object.Object.Parent ' Word.Application 
         With .ActiveDocument.Tables(1).Rows 
          Do While .Count <> n 
           If .Count > n Then .Item(.Count).Delete Else .Add 
          Loop 
         End With 
         .Quit 
        End With 
        .Select 
        MsgBox "Success" 
      End Select 
     End With 
    End With 

End Sub 
+0

Avec remerciements; Ainsi, je vais étendre la question: Et puis, Comment pouvons-nous remplir la table de destination (c'est-à-dire dans le document Word incorporé) avec les valeurs correspondantes des données sources dans le parent 'Table' de' Worksheet'? Document_Open' événements de document Word incorporé. ** – mgae2m

+0

@ MGae2M Dans la réponse, j'ai suggéré ** de ne pas utiliser VBA et les événements du document incorporé **, mais le faire à partir d'Excel VBA. – omegastripes

+0

Alors, comment pouvons-nous remplir des cellules de table de destination (c'est-à-dire dans un document Word incorporé) avec les valeurs correspondantes des données sources dans la source 'Table' est dans' Worksheet'? Semble avoir besoin d'exécuter certaines méthodes Word en tant que 'Selection.TypeText Text: = ...' à partir du module Excel ou mieux agir pour remplir la table en document Word incorporé. Comment pouvons-nous utiliser les méthodes Word dans le module Excel, passer la variable, ou mieux faire cela? Comme j'ai étendu ma question ci-dessus, s'il vous plaît étendre votre réponse concernant cette question. – mgae2m