Импорт ячеек из Excel в Word как ответы на комментарии - PullRequest
0 голосов
/ 08 сентября 2018

Мне нужно импортировать ячейки из Excel в слово как ответы на комментарии (дочерние к исходным комментариям)

Я экспортировал комментарии из файла .docx в .xls со следующими атрибутами:

oComment.Index
oComment.Reference.Information(wdActiveEndAdjustedPageNumber)
oComment.Initial,
oComment.Author,
oComment.Date,
oComment.Range

Я добавил ответы на эти комментарии в новой ячейке в Excell. Теперь я хочу снова импортировать эти ответы в Word, но в качестве ответов на эти оригинальные комментарии. Я уверен, что это будет возможно, потому что индекс оригинальных комментариев одинаков. Можете ли вы помочь мне с этим вопросом :)? Я не могу кодировать в VBA, и я не нашел ответа на этот вопрос в интернете.

PS. Мне также нужна информация, какую библиотеку я должен добавить, если она мне нужна.

Это макрос, который я использовал для экспорта комментариев из слова в исключение:

Sub Export_Comments()

    ' Purpose: Search for comments in any text that's been p
    ' this document, then export them into a new Excel spreadsheet.
    ' Requires reference to Microsoft Excel 15.0 Object Library in VBA,
    ' which should already be saved with as part of the structure of
    ' this .docm file.

    Dim bResponse As Integer

    ' Exit routine if no comments have been found.
    If ActiveDocument.Comments.Count = 0 Then
      MsgBox ("No comments found in this document")
      Exit Sub
    Else
      bResponse = MsgBox("Do you want to export all comments to an Excel worksheet?", _
                  vbYesNo, "Confirm Comment Export")
      If bResponse = 7 Then Exit Sub
    End If

    ' Create a object to hold the contents of the
    ' current document and its text. (Shorthand
    ' for the ActiveDocument object.
    Dim wDoc As Document
    Set wDoc = ActiveDocument

    ' Create objects to help open Excel and create
    ' a new workbook behind the scenes.
    Dim xlApp As Excel.Application
    Dim xlWB As Excel.Workbook

    Dim i As Integer
    Dim oComment As Comment         'Comment object

    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False

    ' Create a new Workbook. Shouldn't interfere with
    ' other Workbooks that are already open. Will have
    ' at least one worksheet by default.
    Set xlWB = xlApp.Workbooks.Add

    With xlWB.Worksheets(1).Range("A1")

      ' Create headers for the comment information
      .Offset(0, 0) = "Comment Number"
      .Offset(0, 1) = "Page Number"
      .Offset(0, 2) = "Reviewer Initials"
      .Offset(0, 3) = "Reviewer Name"
      .Offset(0, 4) = "Date Written"
      .Offset(0, 5) = "Comment Text"

      ' Export the actual comments information
      For i = 1 To wDoc.Comments.Count
       Set oComment = wDoc.Comments(i)
       Set rngaComment = oComment.Reference
       rngaComment.Select
       Set rngHeading = wDoc.Bookmarks("\HeadingLevel").Range
       rngHeading.Collapse wdCollapseStart
       Set rngHeading = rngHeading.Paragraphs(1).Range
      .Offset(i, 0) = oComment.Index
      .Offset(i, 1) = oComment.Reference.Information(wdActiveEndAdjustedPageNumber)
      .Offset(i, 2) = oComment.Initial
      .Offset(i, 3) = oComment.Author
      .Offset(i, 4) = Format(oComment.Date, "dd/mm/yyyy")
      .Offset(i, 5) = oComment.Range
      .Offset(i, 6) = rngHeading.ListFormat.ListString & " " & rngHeading.Text
      .Offset(i, 7) = Format(oComment.Date, "dd/mm/yyyy hh:mm:ss")
    Next i
    End With

    ' Make the Excel workbook visible
    xlApp.Visible = True

    ' Clean up our objects
    Set oComment = Nothing
    Set xlWB = Nothing
    Set xlApp = Nothing
    End Sub 

Спасибо!

1 Ответ

0 голосов
/ 08 сентября 2018

Итак, прежде всего вам нужно использовать предоставленный вами макрос, а затем сохранить файл Excel, созданный макросом.

Тогда, скажем, вы добавили ответы на комментарии в колонке "I"

enter image description here

Затем скопируйте приведенный ниже код в ваш основной документ Word и запустите его. Он собирается открыть файл Excel (не забудьте изменить путь в коде!), Пройтись по всем строкам, взять индекс комментария и ваш ответ, найти этот комментарий в файле Word и добавить новый ответ в Это. Если вы оставите одно из значений в столбце I пустым, макрос пропустит его и перейдет к следующей строке.

Sub Reply()
Dim excel As excel.Application
Dim wb    As Workbook
Dim ws    As Worksheet

Set excel = New excel.Application
'change this path to the path of excel file with extracted comments
Set wb = excel.Workbooks.Open("C:\Users\Kirszu\Desktop\Book1.xlsx")
Set ws = wb.Worksheets(1)
excel.Visible = True

Dim doc As Document
Set doc = ActiveDocument

Dim comments As Variant
Dim com      As Variant
Set comments = doc.comments()

Dim i        As Long
Dim lastRow  As Long
Dim index As Long
Dim count As Long
lastRow = ws.Cells(ws.Rows.count, "A").End(xlUp).Row

For i = 2 To lastRow
    index = ws.Cells(i, 1).Value
    comReply = ws.Cells(i, 9).Value
    For Each com In comments
        If com.index() = index + count Then
            Set repl = com.replies()
            If comReply <> "" Then
                repl.Add Range:=com.Range, _
                Text:=comReply
                count = count + 1
            End If
            Exit For
        End If
    Next com
Next i
End Sub

Надеюсь, это сработает! Если что-то сбивает с толку или нуждается в дополнительных разъяснениях, не бойтесь спрашивать.

...