我有一个包含许多项目的文本文件,每个项目占一行。我想创建一个 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 页面上将出现带有内联文本的矩形,这些文本是文本文件中的相应行项。如果它填满了一页,它将插入下一页,依此类推。
尝试一下并检查它是否适合您。