Настройте ленту инспектора Outlook 2016 в VS 2015 из аналогичного примера кода Outlook 2010 для VS 2010

Я хочу разработать базовую надстройку com для Office 2016 (возможно, глобально для некоторых других офисных приложений - скорее всего, Excel, Word, PowerPoint, Publisher и OneNote), но в данном случае для Outlook 2016 и, в частности, добавить Функция «Вставить со сканера» на ленту инспектора «Microsoft.Outlook.Mail.Compose» в настраиваемой группе («Сканеры и камеры») на вкладке «Вставка».

Это мой первый проект надстройки VSTO com, и я новичок в программировании (но желающий учиться!). В моем обширном исследовании пошаговых советов мало, но я нашел следующий образец кода из microsoft https://code.msdn.microsoft.com/office/VBOutlookRibbonXml-bc478854, который я надеялся адаптировать (возможно, используя следующий код vb функции сканирования):

Private Declare PtrSafe Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Function TempPath() As String
    Const MaxPathLen = 256 ' Max length of the path, just as big as possible

    Dim FolderName As String ' Name of the folder
    Dim ReturnVar As Long ' Return Value

    FolderName = String(MaxPathLen, 0)
    ReturnVar = GetTempPath(MaxPathLen, FolderName)

    If ReturnVar <> 0 Then
        TempPath = Left(FolderName, InStr(FolderName, Chr(0)) - 1)
    Else
        TempPath = vbNullString
    End If
End Function

Sub Scan(control As IRibbonControl)
    Const olEditorWord = 4
    Dim objCommonDialog As WIA.CommonDialog
    Dim objImage As WIA.ImageFile
    Dim strDateiname As String
    Dim ActiveObject As Object, ActiveTarget As Object
    ' instantiate Scan WIA objects
    Set objCommonDialog = New WIA.CommonDialog
    Set objImage = objCommonDialog.ShowAcquireImage
    strDateiname = Environ$("TEMP") & "\Scan.jpg" ' set temporary file
    If Not objImage Is Nothing Then
        If Dir(strDateiname) <> "" Then Kill strDateiname
        objImage.SaveFile strDateiname 'save into temp file
        DoEvents

        'Insert the picture into the office application:
        Select Case Trim$(Replace$(Application.Name, "Microsoft", ""))
          Case "Excel"
            Set ActiveObject = CallByName(Application, "ActiveSheet", VbGet)
            Set ActiveTarget = CallByName(Application, "ActiveCell", VbGet)
            If ActiveTarget Is Nothing Then
                'Insert into a chart, etc.
                ActiveObject.Shapes.AddPicture _
                strDateiname, False, True, 0, 0, -1, -1
            Else
                'Insert into a sheet at the active cell
                ActiveObject.Shapes.AddPicture _
                strDateiname, False, True, ActiveTarget.Left, ActiveTarget.Top, -1, -1
            End If

          Case "Outlook"
            Set ActiveObject = CallByName(Application, "ActiveInspector", VbGet)
            If ActiveObject Is Nothing Then
                MsgBox "Create a new mail and try again"
                Exit Sub
            End If
            With ActiveObject
                If .IsWordMail And .EditorType = olEditorWord Then
                    .WordEditor.Application.Selection.InlineShapes.AddPicture strDateiname
                End If
            End With

          Case "PowerPoint"
            Set ActiveObject = CallByName(ActiveWindow, "View", VbGet)
            ActiveObject.Slide.Shapes.AddPicture strDateiname, False, True, 0, 0, -1, -1
          Case "Publisher"
            Set ActiveObject = CallByName(Application, "ActiveDocument", VbGet)
            ActiveObject.ActiveView.ActivePage.Shapes.AddPicture strDateiname, False, True, 0, 0, -1, -1
          Case "Word"
            Set ActiveObject = CallByName(Application, "Selection", VbGet)
            ActiveObject.InlineShapes.AddPicture strDateiname
        End Select
    End If
End Sub

К сожалению, приведенный выше пример кода центра разработки Microsoft Office предназначен для Office 2010 и VS 2010 и поэтому недоступен.

  1. Как адаптировать образец для использования с Office (Outlook) 2016 и VS 2015?

  2. Можно ли вставить указанный выше блок кода VB (как написано) для замены кода одной из тестовых кнопок в образце или потребуется дополнительная адаптация?


person PC Pilot    schedule 25.06.2016    source источник


Ответы (1)


Вы можете просто скопировать классы из примера проекта в свой проект VS 2015. В примере проекта используется шаблон проекта для версии Office, которую VS 2015 не поддерживает, и ссылки на взаимодействие также будут другими.

Если вы хотите добавить настраиваемую кнопку ленты, просто добавьте элемент ленты (Visual Designer) (или элемент ленты (XML)) из узла Office / SharePoint в диалоговом окне «Добавить новый элемент».

person Eric Legault    schedule 27.06.2016