Добрый день! Делаю макрос построения треугольной диаграммы. В качестве фона использую рисунок диаграммы Шутова, поверх которой выводятся точки данных. Для совпадения масштабов рисунка и масштабов осей диаграммы необходимо отрегулировать параметры растяжения рисунка-завливки области построения диаграммы. Думал, что легко с этим справлюсь при помощи макрорекордера, но но он почему-то записывает только выделение области построения и все... Облазил весь интернет, нигде решения не нашел, есть только для текстуры... Подскажите, как все-таки программно поменять эти параметры? Дабы не было путаницы, в приложении скрин параметров, какие необходимо поменять.
Добрый день! Делаю макрос построения треугольной диаграммы. В качестве фона использую рисунок диаграммы Шутова, поверх которой выводятся точки данных. Для совпадения масштабов рисунка и масштабов осей диаграммы необходимо отрегулировать параметры растяжения рисунка-завливки области построения диаграммы. Думал, что легко с этим справлюсь при помощи макрорекордера, но но он почему-то записывает только выделение области построения и все... Облазил весь интернет, нигде решения не нашел, есть только для текстуры... Подскажите, как все-таки программно поменять эти параметры? Дабы не было путаницы, в приложении скрин параметров, какие необходимо поменять.Rakhot
_Boroda_, Нет, это параметры сдвига для текстуры, если их применять, то область построения заполняется картинкой, преобразованной в текстуру... Мне нужны параметры растяжения для рисунка, как в приложенном в 1 посте скрине. Там должно быть по идее 4 параметра - смещение: сверху, снизу, справа, слева.
_Boroda_, Нет, это параметры сдвига для текстуры, если их применять, то область построения заполняется картинкой, преобразованной в текстуру... Мне нужны параметры растяжения для рисунка, как в приложенном в 1 посте скрине. Там должно быть по идее 4 параметра - смещение: сверху, снизу, справа, слева.Rakhot
когда в эксель можно сделать то, что нельзя с помощью VBA
смешно
Rakhot, посмотрите, так? [vba]
Код
With ActiveSheet.Shapes("Диаграмма 1").Fill .UserPicture "C:\Pic1.png" ' здесь пропишите свою картинку .TextureAlignment = msoTextureTopLeft .TextureOffsetX = 0 ' смещение слева .TextureOffsetY = 0 ' смещение сверху .TextureHorizontalScale = 1 ' размер картинки по ширине (1 = 100%) .TextureVerticalScale = 1 ' размер картинки по высоте (1 = 100%) .RotateWithObject = msoTrue ' на случай, если будете вращать диаграмму End With
[/vba]
или можно так: [vba]
Код
With ActiveSheet.Shapes("Диаграмма 1").Fill .UserPicture "C:\Pic1.png" ' здесь пропишите свою картинку .TextureAlignment = msoTextureTopLeft .TextureOffsetX = 0 ' смещение слева .TextureOffsetY = 0 ' смещение сверху .TextureTile = msoFalse ' стиль заполнения: False - растянуть по размеру диаграммы, True - размножить (плитка) .RotateWithObject = msoTrue ' на случай, если будете вращать диаграмму End With
когда в эксель можно сделать то, что нельзя с помощью VBA
смешно
Rakhot, посмотрите, так? [vba]
Код
With ActiveSheet.Shapes("Диаграмма 1").Fill .UserPicture "C:\Pic1.png" ' здесь пропишите свою картинку .TextureAlignment = msoTextureTopLeft .TextureOffsetX = 0 ' смещение слева .TextureOffsetY = 0 ' смещение сверху .TextureHorizontalScale = 1 ' размер картинки по ширине (1 = 100%) .TextureVerticalScale = 1 ' размер картинки по высоте (1 = 100%) .RotateWithObject = msoTrue ' на случай, если будете вращать диаграмму End With
[/vba]
или можно так: [vba]
Код
With ActiveSheet.Shapes("Диаграмма 1").Fill .UserPicture "C:\Pic1.png" ' здесь пропишите свою картинку .TextureAlignment = msoTextureTopLeft .TextureOffsetX = 0 ' смещение слева .TextureOffsetY = 0 ' смещение сверху .TextureTile = msoFalse ' стиль заполнения: False - растянуть по размеру диаграммы, True - размножить (плитка) .RotateWithObject = msoTrue ' на случай, если будете вращать диаграмму End With
KSV, честно говоря запутался в коде, т.к. ниразу не программист Не могу понять, как адаптировать предложенный вами код к моему. Вы не могли бы посмотреть и сказать, что я не так делаю? [vba]
Код
Sub chart_test() Dim oChart As Excel.ChartObject Set oChart = ActiveSheet.ChartObjects.Add(700, 10, 661, 600) oChart.Chart.ChartType = xlXYScatter
With oChart.Chart.Axes(xlCategory) .MinimumScale = -10 .MaximumScale = 110 .Border.Weight = xlHairline .Border.LineStyle = xlNone .MajorTickMark = xlNone .MinorTickMark = xlNone .TickLabelPosition = xlNone End With
[/vba] Если убрать комментарии, то код выдает ошибку P.S. На всякий случай приложил файлик с проблемным макросом
KSV, честно говоря запутался в коде, т.к. ниразу не программист Не могу понять, как адаптировать предложенный вами код к моему. Вы не могли бы посмотреть и сказать, что я не так делаю? [vba]
Код
Sub chart_test() Dim oChart As Excel.ChartObject Set oChart = ActiveSheet.ChartObjects.Add(700, 10, 661, 600) oChart.Chart.ChartType = xlXYScatter
With oChart.Chart.Axes(xlCategory) .MinimumScale = -10 .MaximumScale = 110 .Border.Weight = xlHairline .Border.LineStyle = xlNone .MajorTickMark = xlNone .MinorTickMark = xlNone .TickLabelPosition = xlNone End With
KSV, Спасибо большое, код запускается, параметры смещения и растяжения редактируются. Но почему-то несмотря на строку [vba]
Код
.TextureTile = msoFalse
[/vba] происходит размножение картинки, т.е. преобразование ее в плитку. Поигравшись параметрами, можно добиться, чтобы в область построения входила только сама картинка, но уже интересно, как сделать все "правильно" Чтобы была именно картинка, а не текстура. Кстати при преобразовании в текстуру векторный формат wmf видимо преобразуется экселем в растровый - качество заметно падает... Получается замкнутый круг - либо текстура с настраиваемыми параметрами смещение/растяжение, либо картинка без настроек, но лучшего качества
KSV, Спасибо большое, код запускается, параметры смещения и растяжения редактируются. Но почему-то несмотря на строку [vba]
Код
.TextureTile = msoFalse
[/vba] происходит размножение картинки, т.е. преобразование ее в плитку. Поигравшись параметрами, можно добиться, чтобы в область построения входила только сама картинка, но уже интересно, как сделать все "правильно" Чтобы была именно картинка, а не текстура. Кстати при преобразовании в текстуру векторный формат wmf видимо преобразуется экселем в растровый - качество заметно падает... Получается замкнутый круг - либо текстура с настраиваемыми параметрами смещение/растяжение, либо картинка без настроек, но лучшего качества Rakhot
Сообщение отредактировал Rakhot - Вторник, 18.08.2015, 06:18