2015-02-23 2 views
0

Я использую слияние почты в MS Word 2010. Данные поступает из таблицы Excel:Используйте MERGEFIELD импортировать данные из текстового файла (MS Word 2010)

Last Name   First Name   Group 
Smith    Oliver    F1 
Jones    Amelia    B2 
Taylor    Emma    B2 
Williams   Jack    C1 

Будет говорить, что мы имеем следующее mergefields: "LASTNAME", "FIRSTNAME" и "GROUP".

В моем документе я хотел бы добавить абзац, относящийся к группе. Слово будет выглядеть для этого абзаца в файле с именем «GROUP» .txt:

B1.txt: 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 

B2.txt: 
Sed auctor turpis sed nisl ultricies volutpat. 

C1.txt: 
Vestibulum vel interdum metus, quis accumsan tortor. 

Это одна идея среди других. Эти параграфы могут также иметь другой источник, такой как рабочий лист Excel или CSV-файл.

У вас есть идея, как я могу это сделать?

ответ

0

Я рад сообщить вам, что нашел удовлетворительное решение моей проблемы, написав небольшой скрипт VBA. Она работает в три этапа:

  1. Получить значение требуемого MERGEFIELD (например, "В2".)

    ' source: 4th post, from dmaruca, on VBForum thread Nr 549587 
    GroupVal = ActiveDocument.MailMerge.DataSource.DataFields("Group").Value 
    
  2. Импортируйте содержание соответствующего текстового файла (например, «C:. \ B2 .TXT ")

    GroupText = ImportTextFile("C:\" & GroupVal & ".Txt") 
    
    ' VBA Code Snippet #22 from Allan Chara (Excel MVP) 
    Function ImportTextFile(strFile As String) As String 
        Open strFile For Input As #1 
        ImportTextFile = Input$(LOF(1), 1) 
        Close #1 
    End Function 
    
  3. Вставьте текст

    ' see Microsoft KB #212682 
    Selection.TypeText (GroupText) 
    
Смежные вопросы