Сохранить Word Doc как содержимое определенной ячейки - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь установить имя моего документа Word как содержимое того, что в выделенной ячейке, заданное кодом;ActiveDocument.Tables(1).Cell(1, 2)

enter image description here

Я должен сделать это для 200+ документов, и имя будет в одном месте для всех документов.

Этот макрос выбирает нужную ячейку и копирует ее

  ActiveDocument.Tables(1).Cell(1, 2).Select
  Selection.Copy

И этот документ сохраняет текстовый документ в формате PDF с содержимым буфера обмена в качестве имени.

Sub rename()

Dim strPath As String
Dim strFileName As String


'set pathname accordingly
strPath = "enter path"

'create the Filename with your selection in Document
strFileName = Trim(Selection.Text) & ".pdf"

ActiveDocument.SaveAs FileName:= _
        strPath & strFileName _
        , FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False

End Sub

Проблема в том, что второй макрос не работает, когда я выделяю всю ячейку

enter image description here

enter image description here

Только когда я выбираю конкретный текст, как показано ниже

enter image description here

Какие-нибудь решения для этого?

Большое спасибо еще раз

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Попробуйте заменить эту строку:

strFileName = Trim(Selection.Text) & ".pdf"

С этим ...

With ActiveDocument.Tables(1).Cell(1,2).Range
    strFileName=ActiveDocument.Range(Start:=.Start, End:=.End-1) & ".pdf"
End With
0 голосов
/ 01 октября 2019

В MS Word последний символ в ячейке всегда является специальным символом с кодом ASCII 7, который обозначает конец ячейки. Вы должны удалить этот символ перед использованием. Там может быть несколько способов сделать это. Вы можете заменить этот символ следующим образом:

strFileName = Replace(ActiveDocument.Tables(1).Cell(1, 2).Range.Text, Chr(7), "") & ".pdf"

Или вы можете исключить его следующим образом:

charCount = ActiveDocument.Tables(1).Cell(1, 2).Range.Characters.Count
strFileName = Left(ActiveDocument.Tables(1).Cell(1, 2).Range.Text, charCount - 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...