从文本文件快速在 Visio 中创建多种形状

从文本文件快速在 Visio 中创建多种形状

我有一个包含许多项目的文本文件,每个项目占一行。我想创建一个 Visio 图表,每个项目都有一个矩形,每个矩形的文本都设置为该项目。

有没有快捷的方法可以做到这一点?

我有很多项目,手工做会很耗时。我只想创建初始形状,这样我就可以在图表中排列和使用它们。

答案1

我已经整理了一个 VBA,它可以为您解决问题。

一些假设

  • 它是 A4 页面大小且采用纵向布局。
  • 4 个矩形彼此相邻放置。
  • 文本的字体大小会根据矩形的高度进行调整,而不是改变形状的大小。
  • 该文本文件包含一个接一个的项目

您可能需要研究代码并对其进行修改以满足您的要求。例如,您可能想要一个比我创建的更大的矩形。或者您可能需要删除内部循环For Next,然后将它们一个接一个地放置,依此类推。

打开一个空白的 Visio 图表。设置公制单位。按 ALT + F11 访问 VBA 编辑器。从插入菜单插入一个模块。将以下代码放入其中。

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 页面上将出现带有内联文本的矩形,这些文本是文本文件中的相应行项。如果它填满了一页,它将插入下一页,依此类推。

尝试一下并检查它是否适合您。

相关内容