Excel允许您在工作表上放置各种图形对象。一种类型的图形对象实际上包含文本-一个文本框。

如果工作表中有很多文本框,您可能想知道是否存在一种从每个文本框中提取文本并将其放置在工作表中的方法。

没有命令可以这样做。您必须改为使用宏。下面的宏逐步浏览工作表中的每个文本框并进行所需的提取:

Sub ExtractText()

Dim shp As Shape     Dim sLoc As String

For Each shp In ActiveSheet.Shapes         With shp             If Left(.Name, 8) = "Text Box" Then                 sLoc = .TopLeftCell.Address                 Do Until Range(sLoc) = ""

sLoc = Range(sLoc).Offset(1, 0).Address                 Loop                 Range(sLoc) =.TextFrame.Characters.Text                 .Delete             End If         End With     Next End Sub

由于Excel将所有图形形状存储在Shapes集合中,因此您可以逐步浏览该集合并确定要使用的形状。在这种情况下,将检查形状名称的前八个字符。仅当名称以“文本框”开头时,宏才会将形状视为可以从中提取文本的文本框。

宏也可以检查以查看哪种类型的形状,而不是检查名称中的“文本框”文字。如果您愿意这样做,则只需将测试线(如果为Left …​)替换为以下测试线:

If shp.Type = msoTextBox Then

sLoc变量用于存储文本框的位置,该文​​本框包含在.TopLeftCell属性中。然后使用Do循环来确保该地址指向的单元为空。 (这可以防止覆盖该单元格的任何现有内容。)如果该单元格不为空,则该地址将“递增”到该列中的下一个单元格。

确定空单元格的地址后,文本框的文本将存储在该单元格中。然后,使用.Delete方法摆脱实际的文本框。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11631)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较旧菜单界面找到此技巧的版本: