获取文本框的值到单元格

我有一个名为TextBox 1的文本TextBox 1 ,其中包含段落。 我用一个叫做profile_reference的名字( Insert > Name > Define... )来定义它。

在一个单元格上,我input公式=profile_reference但我得到的值TextBox 1 。 我想要做的是获得该文本框的实际价值。 那可能吗?

我正在使用PHPparsing器从这个Excel文件中获取值,它不能获得文本框的值,它只能获取单元格的值。 所以我试图将该文本框的值复制到一个单元然后parsing它。

您可以检索文本框的内容,但这不仅仅需要标准的Excel用户界面。

一个文本框是一个Shape对象,并且是Worksheet的Shapes集合的成员。 当您将一个文本框插入到工作表中时,Excel会为其指定一个名称,如“TextBox 1”。 因此,可以参考包含VBA中的文本框的Shape对象(例如)

 Worksheets("Sheet1").Shapes("TextBox 1") 

由于Shape对象可以包含各种不同的东西(如图片或自选graphics),因此检索文本时会涉及​​更多的对象,属性和方法。 所需的全部短语是

 Worksheets("Sheet1").Shapes("TextBox 1").TextFrame.Characters.Text 

它将文本框的内容作为string传递。

但是,这要求您使用由Excel指定的文本框的名称(即“TextBox 1”)。 你已经添加了一个名为“profile_reference”的文本框1的名称,那么如何使用你的名字而不是Excel创build的文本框的内容呢?

名称是名称对象,它是“工作簿的名称”集合的一部分。 所以你可以参考你的具体的名称对象(例如)

 ActiveWorkbook.Names("profile_reference") 

并且“引用”对象的一部分(使用用户界面指定的位)是

 ActiveWorkbook.Names("profile_reference").Value 

Name对象的Value属性是Excel公式语法中的一个string,所以在你的情况下这个string是

 '="TextBox 1"' 

即单引号内的位。 这几乎不是所需的“TextBox 1”string。 因此,使用你的名字来获取文本框的内容需要一点点的VBA,比如:

 Dim strTB As String strTB = ActiveWorkbook.Names("profile_reference").Value strTB = Mid(strTB, 3, Len(strTB) - 3) 'Strips unwanted =" and " chars from start/end MsgBox Worksheets("Sheet1").Shapes(strTB).TextFrame.Characters.Text 

我使用了一个消息框来显示文本框的内容。 内容可以同样分配给工作表单元格。 如果你愿意的话,你可以用一个简短的用户自定义函数(可能把你的名字作为input参数)包装起来,为你提供一个方便的机制来把文本框的内容放到工作表单元格中。