2009-07-09 17 views
2

Je dois avoir un code vb dans MS Word 2003 qui copient une cellule spécifique dans un fichier Excel et le collez dans un mot (déposé). Voici ce que j'ai fait et il en résulte une erreur.Comment copier la valeur d'une cellule dans MSExcel dans un champ dans un fichier MSWord avec le code VB?

Sub cmdGetNumber() 
Dim XL As Object 
Dim WBEx As Object 
Dim ExelWS As Object 
Dim appwd As Object 
Dim wdApp As Word.Application 

'''' 

'On Error GoTo OLE_ERROR 
Set XL = CreateObject("Excel.Application") 
Set wdApp = CreateObject("Word.Application") 

'Open Excel document 
Set WBEx = XL.Workbooks.Open("C:\Documents and Settings\121567\Desktop\tafket1.xls") 
Set ExelWS = WBEx.Worksheets("Sheet1") 
XL.Visible = True 
'appwd.Visible = True 

ExelWS.Range("c2").Select 
'Selection.Copy 

'wdApp.Selection.PasteSpecial Placement:=wdInLine, DataType:=wdPasteMetafilePicture 
'wdApp.Documents.Save 
Set wdApp = Nothing 
Set ExelWS = Nothing 
Set WBEx = Nothing 

End Sub 
+0

Peut-être essayer wdPasteText ou wdPasteRTF au lieu de wdPasteMetafilePicture? – barrowc

+0

Veuillez coller le texte d'erreur à la fin de votre question. – RBarryYoung

Répondre

2

Étant donné que cette macro est dans Word, vous n'avez pas besoin d'ouvrir explicitement une instance de mot. Vous pouvez simplement faire Documents.Add pour ajouter un nouveau document, ou Documents.Open pour en ouvrir un existant.

Essayez ceci:

Sub cmdGetNumber() 
    Dim XL As Object 
    Dim WBEx As Object 
    Dim ExelWS As Object 
    Dim wdDoc As Word.Document 

    'On Error GoTo OLE_ERROR 
    Set XL = CreateObject("Excel.Application") 

    'Open Excel document 
    Set WBEx = XL.Workbooks.Open("C:\Documents and Settings\121567\Desktop\tafket1.xls") 
    Set ExelWS = WBEx.Worksheets("Sheet1") 
    'XL.Visible = True 
    ExelWS.Range("C2").Copy 

    Set wdDoc = Documents.Add 
    wdDoc.Activate 
    wdDoc.Select 
    Selection.Paste 

    WBEx.Close 
    XL.Quit 
    Set WBEx = Nothing 
    Set ExelWS = Nothing 
    Set XL = Nothing 
End Sub 

Le code ci-dessus ouvrir votre fichier Excel, copiez le C2 cellulaire, puis ouvrez un nouveau document de texte, et de le coller là.

Je vois que vous avez mentionné un (filed) dans votre question. Vouliez-vous dire Field ou File? Si c'est un Field alors vous pouvez remplacer Selection.Paste par le nom de champ correspondant

+0

+ 1 Bien fait :) –