2017-06-06 79 views
0

我對VBA相對來說比較新,並且很遺憾爲什麼我無法從Word中粘貼到Excel中。以下宏最終將值粘貼到Word中,即使我認爲我正在激活Excel文檔。
該宏旨在從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運行宏並讀取文件,然後將其粘貼到EXCEL中? – JahKnows

+0

Word文檔將被填寫;目的是讓填寫Word表格的用戶在填寫表格後運行宏,將各種表單域的值發送到Excel以便每月跟蹤Word表單。在本月底,希望有一個Excel文件包含所有的Word數據。 –

+0

好的,你可以張貼一個你的word文件樣本 – 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

感謝您的時間,這與其他文章一樣工作,感謝您的幫助! –