如何在ExcelSheet中的特定位置添加文本框?

时间:2016-05-02 13:38:51

标签: c# excel office-interop

您好我尝试在Excel表格中的特定位置添加文本框。就像从A34到J39。但我不知道该怎么做。

这是我试过的:

excelSheet.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, 100, 100, 200, 50);

正常工作但文本框出现在工作表上的随机位置。

Microsoft.Office.Tools.Excel.Controls.TextBox
textBox1 = this.Controls.AddTextBox(
this.Range["A1", "B2"], "textBox1");
textBox1.Text = "Sample text";

这是来自MSDN网站。但不会工作因为你需要一个新的方法,我不应该添加一个新的方法......

Range rng = UsedArea.Cells[rownum, cellnum];

txtbox = sheet.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, rng.Left, rng.Top, txt.Width / 2, rng.Height); 

这是来自SO,但它说范围属性不能改变...... Mabey它与办公室互操作有关。

所以任何帮助或建议对你来说都很棒。

编辑:使用C#代码在任意位置获取excelsheet中的文本框:

    Excel.Range rng = excelSheet.get_Range("A34:J39");
    float left = (float)rng.Left;
    float top = (float)rng.Top;
    float width = (float)rng.Width;
    float height = (float)rng.Height;

    excelSheet.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, left, top, width, height).Select();

1 个答案:

答案 0 :(得分:1)

使用 VBA

Sub CoverRange()
    Dim r As Range
    Dim L As Long, T As Long, W As Long, H As Long
    Set r = Range("A34:J39")
    L = r.Left
    T = r.Top
    W = r.Width
    H = r.Height
    With ActiveSheet.Shapes
        .AddTextbox(msoTextOrientationHorizontal, L, T, W, H).Select
    End With
End Sub

您还可以在Shape创建后重新调整大小并重新定位{{1}}。你能适应你的代码吗?