У меня есть текстовый файл со многими элементами, каждый на отдельной строке. Я хочу создать диаграмму Visio с прямоугольной формой для каждого элемента и с текстом каждого прямоугольника, установленным для этого элемента.

Есть ли быстрый способ сделать это?

У меня достаточно вещей, которые можно было бы сделать вручную. Я просто хочу создать начальные фигуры, чтобы я мог расположить их на диаграмме и работать с ними.

1 ответ1

1

Я собрал 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. Если он заполняет одну страницу, он вставит следующую страницу и так далее.

Попробуйте это и проверьте, работает ли это для вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .