OLE Automatition mit Excel: Rahmen der Felder verändern GELÖST



  • Hi

    Ich möchte per OLE Excel dazu bewegen bei einer Auswahl von Felder unten eine Linie zu zeichnen. Komplett eine ganzes Feld im Rahmen setzen kann ich. Nur eine einzelne Linie macht mir Probleme. Über den MakroRekorder kam ich auf folgenden Code:

    Range("F13:J13").Select
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        Selection.Borders(xlEdgeLeft).LineStyle = xlNone
        Selection.Borders(xlEdgeTop).LineStyle = xlNone
        With Selection.Borders(xlEdgeBottom)  // Wie heisst dieser Befehl in C++
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = xlAutomatic
        End With
        Selection.Borders(xlEdgeRight).LineStyle = xlNone
        Selection.Borders(xlInsideVertical).LineStyle = xlNone
    

    Versucht habe ich mal diesen Cpp Code:

    oRange = oSheet.GetRange(COleVariant("A6"), COleVariant("R6"));
    	// jetzt eine Linie ziehen 
    	Borders oBorders;
    	oBorders = oRange.GetBorders();
    	oBorders.SetLineStyle(COleVariant((short) 1));
    	oBorders.SetWeight(COleVariant((short) 3));
    

    Mir fehlt der Befehl bestimmte Linien anzusprechen.

    Was mir noch aufgefallen ist. Im Borland Forum werden immer die Konstanten aus dem MakroRekorder verwendet (zB xlInsideVertical) aber in VS sind diese nicht definiert. Ist das richtig?

    Gruß Heiko



  • Offenbar ist Borders eine Collection:

    Border bottomborder;
    bottomborder = borders.GetItem((long)9);
    bottomborder.SetLineStyle(
          COleVariant((short)-4119));   //xlDouble = -4119
    bottomborder.SetWeight(
          COleVariant((short)4));       //xlThick = 4
    

    Quelle:
    http://support.microsoft.com/support/kb/articles/q179/7/06.asp



  • jetzt funktioniert es.
    Vielen Dank


Anmelden zum Antworten