sql - VBA 从 Shapes("Textbox 1") 复制所有文本并将其放在一个范围内
问题描述
我有一个“形状”文本框(TextBox 1),其中包含如下所示的 SQL 查询。
Select
*
From
Table1
Union
Select
*
From
Table2
可以编辑此查询,这意味着文本框中的值可以更改。如果我录制一个宏,在其中选择文本框和全选,然后将文本粘贴到Range("A1")
中,它看起来如下所示。
Sub Test_1()
ActiveSheet.Shapes.Range(Array("TextBox 1")).Select
Application.CutCopyMode = False
Range("A1").Select
ActiveSheet.Paste
End Sub
这将输出以下内容
> Row_Column Text
> A1 Select
> A2 *
> A3 From
> A4 Table1
> A5 Union
> A6 Select
> A7 *
> A8 From
> A9 Table2
但是,如果我将文本更改为以下内容。
Select
*
From
Table1
Union
Select
*
From
Table2
Union
Select
*
From
Table3
宏不会复制在文本框中添加的额外代码行。
如何从形状文本框中选择所有内容并将复制的文本放入 A 列?我不希望所有文本都放在一个单元格中,因为我需要将文本分开,如输出示例中所示。
解决方案
这是一种替代方法,它拆分形状内的文本,将其分配给一个数组,然后将其传输到您的工作表...
Sub test()
Dim arrText() As String
arrText() = Split(ActiveSheet.Shapes("TextBox 1").TextFrame.Characters.Text, vbLf)
Range("A1").Resize(UBound(arrText) + 1).Value = Application.Transpose(arrText)
End Sub