Как скопировать значение из ячейки в MSExcel в поле в файле MSWord с кодом VB? - PullRequest
2 голосов
/ 09 июля 2009

Мне нужен код vb в ms word 2003, который копирует конкретную ячейку в файл excel и вставляет ее в слово (в поле). Ниже то, что я сделал, и это приводит к ошибке.

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

1 Ответ

2 голосов
/ 09 апреля 2014

Поскольку этот макрос находится в Word, вам не нужно явно открывать экземпляр слова. Вы можете просто сделать Documents.Add, чтобы добавить новый документ, или Documents.Open, чтобы открыть существующий.

Попробуйте это:

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

Приведенный выше код откроет ваш файл Excel, скопируйте ячейку C2, затем откройте новый текстовый документ и вставьте его туда.

Я вижу, вы упомянули (filed) в своем вопросе. Вы имели в виду Field или File? Если это Field, то вы можете заменить Selection.Paste на соответствующее имя поля

...