Как разблокировать пропорции для нового вложения OLEObject? - PullRequest
0 голосов
/ 17 июня 2019

Я хочу, чтобы соотношение сторон было разблокировано для каждого нового вложения, добавленного в таблицу Excel. Я не уверен, проще ли разблокировать соотношение сторон для ВСЕХ объектов или сделать так, чтобы он разблокировался для каждого нового объекта, добавляемого с помощью кода.

Я знаю, как изменить соотношение сторон одного заданного объекта, но мне нужно изменить его либо для ВСЕХ объектов на листе, либо для каждого нового вставленного.

Sub Macro1()
    Range("X" & ActiveCell.Row).Select

    Dim vFile As Variant, Sh As Object
    vFile = Application.GetOpenFilename("All Files,*.*", Title:="Find file to insert")
    If LCase(vFile) = "false" Then Exit Sub
    ActiveSheet.OLEObjects.Add Filename:=vFile, Link:=False, DisplayAsIcon:=True, IconFileName:= _
        "C:\WINDOWS\Installer\{90110409-6000-11D3-8CFE-0150048383C9}\xlicons.exe", _
        IconIndex:=0, IconLabel:=vFile

    Dim OleObj As OLEObject 'code works for one set object(1), I need for all

    Set OleObj = ActiveSheet.OLEObjects(1)
    OleObj.ShapeRange.LockAspectRatio = msoFalse
    OleObj.Height = 10
    OleObj.Width = 30
End Sub

1 Ответ

0 голосов
/ 17 июня 2019

Обратите внимание, что метод Application.GetOpenFilename возвращает логическое значение False, а не строку "false", поэтому необходимо правильно проверить If vFile = False Then ….

Также OLEObjects.Add возвращает новый добавленный объект OLE:

Возвращаемое значение
Объект OLEObject, представляющий новый объект OLE.

что возвращаемое значение может быть напрямую установлено в вашей переменной OleObj.

Set OleObj = ActiveSheet.OLEObjects.Add(…)

Таким образом, вы можете установить свои свойства как требуется для каждого добавленного объекта OLE.

Sub Macro1()
    Range("X" & ActiveCell.Row).Select

    Dim vFile As Variant, Sh As Object
    vFile = Application.GetOpenFilename("All Files,*.*", Title:="Find file to insert")
    If vFile = False Then Exit Sub

    Dim OleObj As OLEObject
    Set OleObj = ActiveSheet.OLEObjects.Add(Filename:=vFile, Link:=False, DisplayAsIcon:=True, IconFileName:= _
        "C:\WINDOWS\Installer\{90110409-6000-11D3-8CFE-0150048383C9}\xlicons.exe", _
        IconIndex:=0, IconLabel:=vFile)
    OleObj.ShapeRange.LockAspectRatio = msoFalse
    OleObj.Height = 10
    OleObj.Width = 30
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...