2016-05-02 7 views
2

Hallo ich versuche, eine Textbox an einer bestimmten Stelle in einem Excelsheet hinzuzufügen. Wie von A34 bis J39. Aber ich habe keine Ahnung, wie ich das machen soll.Wie füge ich ein Textfeld an einer bestimmten Stelle in einem ExcelSheet ein?

Hier ist, was ich versucht:

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

Works aber die Textbox erscheint auf einer beliebigen Stelle auf dem Blatt.

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

Dies ist von der MSDN-Website. Aber nicht funktionieren becouse Sie brauchen eine neue Mehtod für dieses und soll ich nicht eine neue Methode hinzuzufügen ......

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

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

Das von SO ist, aber es sagt der Bereich Eigenschaft kann nicht geändert werden ... ... Mabey hat etwas mit den Office Interop 15 Sachen zu tun.

Also jede Hilfe oder Beratung wäre großartig und thx für Ihre Zeit.

EDIT: Arbeits C# -Code ein Textfeld in einer Excel an einer beliebigen Position zu bekommen:

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(); 
+0

danke für das Update! * (+ 1) * –

Antwort

1

Mit 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 

Sie können auch die Größe neu bestimmen und Positionieren Sie die Shape neu, sobald sie erstellt wurde. Kannst du das an deinen Code anpassen?

+0

danke funktioniert super sollte ich den C# code? – opelhatza

+0

@AndreasA. Wenn dies in ** C# ** funktioniert hat, aktualisieren Sie Ihre ursprüngliche Frage definitiv mit dem ** C# ** - Code ............. es kann vielen anderen helfen. –

+0

ok eine Bearbeitung mit dem Arbeitscode gemacht. Danke noch einmal. – opelhatza

Verwandte Themen