Страница 1 из 1

Заливка прямоугольника в Excel

Добавлено: 21 июн 2010, 23:39
UFO665
Подскажите, пожалуйста, как сделать заливку прямоугольника в Excel.
Переделываю код макросов под Visual C++. Но почему-то при попытке залить прямоугольник черным выдает ошибку unhandled exception... (компилится нормально, сбой именно при выполнении кода)

Полный код макроса:
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 313.5, 268.5, 165.75, 6#). _
Select
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 8
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)

Пробовал адаптировать все эти действия для C++, но как уже писал выше - ошибка.

P.S.: в 2003 Экселе прямоугольник по умолчанию создается почему-то с белой заливкой, а в 2007 - с синей.

Re: Заливка прямоугольника в Excel

Добавлено: 22 июн 2010, 18:26
VictorM
Здравствуйте.
Может я чего не понял, вот что пишет макрорекордер EXCEL 2003

Код: Выделить всё

Sub Макрос1() 'заливка фигуры черным цветом
              'фигура должна быть выделена
    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 8
    Selection.ShapeRange.Fill.Visible = msoTrue
    Selection.ShapeRange.Fill.Solid
End Sub
То же, подредактированный макрос

Код: Выделить всё

Sub FillMacro() 'заливка фигуры черным цветом - подредактированный
    With Selection.ShapeRange.Fill
        .ForeColor.SchemeColor = 0
        .Visible = msoTrue
    End With
End Sub
p.s. SchemeColor заменил на = 0 . как-то заметил, что с SchemeColor = 8 были проблемы.
P.S.: в 2003 Экселе прямоугольник по умолчанию создается почему-то с белой заливкой, а в 2007 - с синей.
не знаю, мне это ни разу не мешало

Re: Заливка прямоугольника в Excel

Добавлено: 22 июн 2010, 19:18
UFO665
VictorM, спасибо, попробую выделить и залить.
если бы в 2003 была синяя заливка по умолчанию, мне бы это помогло)

Re: Заливка прямоугольника в Excel

Добавлено: 22 июн 2010, 19:59
nilem
А у меня по коду в 1-м посте выдает отличный черный прямоугольник (2007).
Код от VictorM заливает черным, правда оставляет границы первоначального цвета.
А что нужно получить?

Re: Заливка прямоугольника в Excel

Добавлено: 23 июн 2010, 20:37
UFO665
VictorM, не помогло. вообще если fill использовать, то ошибка.

nilem, в VBA проблем и не должно быть. нужно получить черный прямоугольник.

может здесь причина. в файле stdafx.h прописано:
// Импортируем файл Program Files\Common Files\Microsoft Shared\OFFICE11(или 12)\MSO.DLL
#import "libid:2DF8D04C-5BFA-101B-BDE5-00AA0044DE52"\
rename("RGB","_RGB")
using namespace Office;
// Ипортируем файл Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB
#import "libid:0002E157-0000-0000-C000-000000000046"
using namespace VBIDE;
// Импортируем файл Program Files\Microsoft Office\Office11(или 12)\EXCEL.EXE
#import "libid:00020813-0000-0000-C000-000000000046"\
rename("RGB","ex_RGB") \
exclude("I","IPicture") \
exclude("I","IFont") \
rename("DialogBox","ex_DialogBox") \
rename("CopyFile","ex_DialogBox") \
rename("ReplaceText","ex_ReplaceTex t")
using namespace Excel;

Re: Заливка прямоугольника в Excel

Добавлено: 23 июн 2010, 20:59
nilem
А если не Fill, а FillRectangle?

Re: Заливка прямоугольника в Excel

Добавлено: 23 июн 2010, 22:33
UFO665
такого свойства нет

Re: Заливка прямоугольника в Excel

Добавлено: 24 июн 2010, 19:34
UFO665
забил на заливку. нарисовал в этом прямоугольнике линию. проблема решена другим путем)