2017-06-06 19 views
0

VBAには比較的新しいので、WordからExcelに貼り付けることができないのはなぜですか?次のマクロは、Excelドキュメントをアクティブにしているとは思えますが、Wordに値を貼り付けることになります。
マクロはWordから実行するためのものです。さまざまなFormFieldの値を既存のExcelファイルのセルに貼り付ける必要があります。 返されたものは、私が経験しているもののバリエーションであるように見えましたが、同様の問題を探しましたが、私はこれらの答えを変更できませんでした。 ご協力いただければ幸いです。VBA - Wordからマクロを実行してExcelに値を貼り付けます。

Sub Transfer() 

Dim WD As Object 
Dim ED As Excel.Application 
Dim EDS As Excel.Workbook 

Set WD = ActiveDocument 
Set ED = CreateObject("excel.application") 
ED.Visible = True 
Workbooks.Open FileName:= _ 
"C:\Users\Documents\AppealData.xlsx" 
ActiveWorkbook.Activate 
Set EDS = ActiveWorkbook 

WD.FormFields("AppNum").Copy 
EDS.Activate 
EDS.Sheets("Sheet1").Range("A1").Select 
Selection.Paste 

End Sub 
+0

マクロをEXCELから実行してwordというファイルを読んでから、それをEXCELに貼り付けないのはなぜですか? – JahKnows

+0

Word文書は記入されるフォームになります。目的はWordフォームを記入しているユーザーに、フォームが記入されたらマクロを実行させ、Wordフォームの毎月の追跡のためにExcelにさまざまなフォームフィールドの値を送信させることです。月末には、うまくいけば、すべてのWordデータを含むExcelファイルがあります。 –

+0

OK、あなたの単語ファイルのサンプルを投稿できますか? – JahKnows

答えて

0

Selectionは現在のアプリケーションを参照しています。 Excelアプリケーションを参照するには、ED.Selectionを使用する必要があります。とにかくActivateSelectに頼るのは悪い考えです。私はあなたがあなたのコードを変更示唆

Sub Transfer() 

    Dim WD As Document 
    Dim ED As Excel.Application 
    Dim EDS As Excel.Workbook 

    Set WD = ActiveDocument 
    Set ED = CreateObject("excel.application") 
    ED.Visible = True 
    'Avoid "Activate" 
    Set EDS = ED.Workbooks.Open(FileName:= _ 
      "C:\Users\Documents\AppealData.xlsx") 

    WD.FormFields("AppNum").Copy 
    'Avoid "Activate" and "Select" and "Selection" 
    '"Paste" is a worksheet Method, use "PasteSpecial" for a Range 
    'Use "xlPasteValues" to avoid formatting issues 
    EDS.Sheets("Sheet1").Range("A1").PasteSpecial Excel.xlPasteValues 
End Sub 
+0

ありがとう、ありがとう、ありがとう、あなたは何かをアクティブにするか、何かを選択する必要があります。 –

0

これここではあなたのために働く必要があります。

Sub Transfer() 
    Dim oExcel As Excel.Application 
    Dim oWB As Workbook 

    Set oExcel = New Excel.Application 
    Set oWB = oExcel.Workbooks.Open("C:\Users\Documents\AppealData.xlsx") 

    oExcel.Visible = True 

    Workbooks("Book1").Worksheets("Sheet1").Cells(1, 1).Value = _ 
     CStr(Documents("Document1").FormFields("AppNum").Result) 
End Sub 
+0

あなたのお時間をいただきありがとうございます。これは、以下の別の投稿と同様に動作します。ご協力いただきありがとうございます! –

関連する問題