Скопируйте таблицу из Excel в Word, а затем обратно в Excel с помощью VBA - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь скопировать таблицу из excel в word, а затем обратно, чтобы преуспеть, используя VBA. У меня есть сценарий для выполнения обеих этих задач, но как я могу сделать копию слова обратно в Excel из активного файла Word, созданного с помощью «Copy2word», чтобы мне не приходилось указывать расположение документа Word в «Copy2excel» "?

Sub Copy2word()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim wkSht As Worksheet

    '\\ Stay on any sheet from which you want to copy data
    Set wkSht = ActiveSheet
    wkSht.UsedRange.Copy

    '\\ Start word and create new document to paste data
    On Error Resume Next
    Set wdApp = GetObject(, "Word.Application")
    If wdApp Is Nothing Then
      Set wdApp = CreateObject("Word.Application")
      wdApp.Visible = True
    End If
    Set wdDoc = wdApp.Documents.Add

    '\\ Paste Data from Excel
    wdDoc.Range.PasteExcelTable False, False, True

    '\\ Stop Excel's cut copy mode
    Application.CutCopyMode = False

    MsgBox "Copy to Word Finished!", vbInformation, "Copy to Word"
End Sub


Sub Copy2excel()
    Const DOC_PATH As String = "C:\Users\MASS\Desktop\Test\TK1.docx"

    Dim sht As Worksheet
    Dim WordDoc As Word.Document
    Dim WordApp As Word.Application
    Dim i As Long, r As Long, c As Long
    Dim rng As Range, t As Word.Table

    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = False
    Set WordDoc = WordApp.Documents.Open(DOC_PATH, ReadOnly:=True)

    Set sht = Sheets("Sheet4")
    Set rng = sht.Range("A20")
    sht.Activate

    For Each t In WordDoc.Tables
        t.Range.Copy
        rng.Select
        rng.Parent.PasteSpecial Format:="Text", Link:=False, _
                    DisplayAsIcon:=False
        With rng.Resize(t.Rows.Count, t.Columns.Count)
            .Cells.UnMerge
            .Cells.ColumnWidth = 14
            .Cells.RowHeight = 14
            .Cells.Font.Size = 10
        End With

        Set rng = rng.Offset(t.Rows.Count + 2, 0)
    Next t
    WordDoc.Close
    WordApp.Quit
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...