Я собрал VBA, которая должна помочь вам.
Несколько предположений
- Это размер страницы А4 с книжной версткой.
- 4 прямоугольника расположены рядом друг с другом.
- Размер шрифта текста приспосабливается к высоте прямоугольника, а не к изменению размера фигуры.
- Текстовый файл содержит элементы один под другим
Возможно, вам придется изучить код и изменить его в соответствии с вашими требованиями. Например, вы можете захотеть иметь прямоугольник большего размера, чем тот, который я создал. Или вам может понадобиться удалить внутренний цикл For Next
Loop и просто расположить их один под другим и так далее.
Откройте пустую диаграмму Visio. Установите метрические единицы. Нажмите ALT + F11 для доступа к VBA Editor. Вставьте модуль из меню вставки. Вставьте в него следующий код.
Public Sub DrawRectangle_Example()
Dim vsoPages As Visio.Pages
Dim vsoPage As Visio.Page
Dim vsoDocument As Visio.Document
Dim Textline As String
Const File1 = "C:\Temp\" 'Set path here
Const File2 = "Visio.txt" 'Set filename with extension here
Dim vsoShape As Visio.Shape
Open File1 & File2 For Input As #1
Do While Not EOF(1)
For i = 11.3 To 1.1 Step -0.6
For j = 0.5 To 6.2 Step 1.9
Set vsoShape = ActivePage.DrawRectangle(j, i, j + 1.5, i - 0.3)
Line Input #1, Textline
vsoShape.Text = Textline
vsoShape.CellsSRC(visSectionCharacter, 0, visCharacterSize).FormulaU = "MIN(1,Height/TEXTHEIGHT(TheText,Width))*13&""pt"""
If EOF(1) Then
GoTo myend
End If
Next j
Next i
If EOF(1) Then
GoTo myend
End If
Set vsoDocument = ActiveDocument
Set vsoPages = vsoDocument.Pages
Set vsoPage = vsoPages.Add
Loop
myend:
Close #1
End Sub
В коде определены две константы. Вам нужно указать путь и имя файла, ссылаясь на ваш текстовый файл.
Const File1 = "C:\Temp\" 'Set path here
Const File2 = "Visio.txt" 'Set filename with extension here
На пустой странице Visio нажмите ALT + F8 и запустите этот макрос. Подождите несколько секунд и прямоугольники со встроенным текстом, так как соответствующие позиции из вашего текстового файла должны появиться на странице Visio. Если он заполняет одну страницу, он вставит следующую страницу и так далее.
Попробуйте это и проверьте, работает ли это для вас.