Открытие вложений

Тема в разделе "Lotus - Программирование", создана пользователем ruster83, 3 мар 2009.

Статус темы:
Закрыта.
  1. ruster83

    ruster83 Гость

    Есть поле RT... В нем несколько файлов.Надо сделать так чтобы при нажатии кнопки выходило диалоговое окно в котором предлагалось выбрать файл который я хочу открыть,т.е. предлагаеться список из имеющихся прикрепленных файлов. Выбор например в Combobox. Не знаю как это реализовать.
     
  2. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Ты сам и описал алгоритм :blink:
    Выбираешь из RT эмембед обжекты, выбираешь их имена и засовываешь в комбобокс...
    А потом по имени выбираешь нужное тебе вложение :)
     
  3. ruster83

    ruster83 Гость

    Распишите пожалуйста....я просто не знакю ка кэто сделать программно,хотябы по действиям напишите...как это делаеться...пжл...
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Код (Text):
    Forall x in RTItem.EmbeddedObjects
    'Тут заполняем арраей с именами (x.Source)
    End Forall
    А потом
    Код (Text):
    ws.Prompt()
     
  5. ruster83

    ruster83 Гость

    'Тут заполняем арраей с именами (x.Source)

    А как заполнять...Имеете ввиду в массив закидывать имена объектов???
    Т.е. создать например

    Dim attachedItemsList As NotesItem

    а потом

    Call attachedItemsList.AppendToTextList(x.Source)

    я правильно понял???
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну как вариант (но не самый оптимальный)
    Код (Text):
    Redim rv(0) As String
    Forall x in RTI.EmbeddedObjects
    If rv(Ubound(rv)) <> "" Then Redim Preserve rv(Ubound(rv) + 1)
    rv(Ubound(rv)) = x.Source
    End Forall
    Потом
    Код (Text):
    Dim Att As String
    Att = notesUIWorkspace.Prompt( PROMPT_OKCANCELCOMBO, "Attachments", "Attachments" , "" , rv)
    Там ещё парочку проверок надо добавить, но это сам...
     
  7. ruster83

    ruster83 Гость

    Большое спасибо....Вроде заработало отображение.....Но только когда выбираю файл вложения он не открываеться...
    Как сделать чтобы по нажатию на кнопку Ok выбранный файл еще и открывался???
     
  8. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    ruster83
    Можно попробовать сохранить на диск аттач и потом открыть его
     
  9. ruster83

    ruster83 Гость

    А как это сделать??? Можете код написать примерный???
     
  10. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Call notesEmbeddedObject.ExtractFile( path$ )

    Пример из хелпа:
    Код (Text):
    Dim doc As NotesDocument
    Dim rtitem As Variant
    Dim fileCount As Integer
    Const MAX = 100000
    fileCount = 0  
    '...set value of doc...
    Set rtitem = doc.GetFirstItem( "Body" )
    If ( rtitem.Type = RICHTEXT ) Then
    Forall o In rtitem.EmbeddedObjects
    If ( o.Type = EMBED_ATTACHMENT ) _
    And ( o.FileSize > MAX ) Then
    fileCount = fileCount + 1
    Call o.ExtractFile _
    ( "c:\reports\newfile" & Cstr(fileCount) )
    Call o.Remove
    Call doc.Save( True, True )
    End If
    End Forall
    End If
     
  11. ruster83

    ruster83 Гость

    Помоему не совсем то....В поле RTX прикреплено несколько файлов...Требуеться открыть один из них...Пользователь выбрал файл который надо открыть,теперь как его открыть....Т.е. у меня есть имя файла который надо открыть,но как дать команду открытия именно этого файла...???

    Как по имени выбирать нужное мне вложение???
     
  12. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Вообще, Shell
    Но там ещё будут грабли ;)
     
  13. FEDAZzZ

    FEDAZzZ Гость

    Вот приблизительный код:

    где нужно подправишь сам

    Dim ws As New NotesUIWorkspace
    Dim mWebBrowser As Variant , varAttachmentNames As Variant, vPrompt As Variant, vFile As Variant
    Dim strTempPath As String
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim rtitem As NotesRichTextItem

    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.Document
    Set rtitem = doc.GetFirstItem( "Appendix" )

    'If Not (uidoc.IsNewDoc) Then Exit Sub
    If rtitem Is Nothing Then Exit Sub
    If Isempty( rtitem.EmbeddedObjects ) Then Exit Sub

    varAttachmentNames = ""
    Forall x In rtitem.EmbeddedObjects ' пробегаемся по атачментам в поле Боди
    If Len( varAttachmentNames ) > 0 Then varAttachmentNames = varAttachmentNames +Chr(10)
    varAttachmentNames = varAttachmentNames + x.Name
    End Forall
    If Len( varAttachmentNames ) = 0 Then Exit Sub
    Let strTempPath = Environ$("TEMP") ' путь во временную папку

    varAttachmentNames = Split( varAttachmentNames, Chr(10) ) ' список всех имен атачментов
    vPrompt = ws.Prompt( 4, "Выбор", "Выберете ", varAttachmentNames(0), varAttachmentNames ) ' выбираем кактой-то один
    If Isempty(vPrompt) Then Exit Sub

    If Right$(VPrompt, 3) <> "xls" Then
    answer = Messagebox ("Тип файла должен быть Excel, проверьте не является ли он архивом!", 16, "Внимание!")
    Exit Sub
    End If


    Kill strTempPath + "\" + vPrompt ' удаляем на всякий случай

    Set vFile = rtitem.GetEmbeddedObject(vPrompt)
    Call vFile.ExtractFile(strTempPath + "\" + vPrompt) ' скидываем файл на диск
    Call vFile.Remove 'удаляем аттачмент
    Call rtitem.Update

    'Открытие документа Excel

    Dim Excel As Variant
    Dim xlWorkbook As Variant
    Dim xlSheet As Variant
    Dim xlCells As Variant
    Set Excel = CreateObject("excel.application") ' открывается приложение (пустой Excel)
    Print "Открыт файл " & vPrompt & "..."
    Excel.Workbooks.Open strTempPath + "\" + vPrompt '// открытие файла Excel
    Set xlWorkbook = Excel.ActiveWorkbook
     
  14. ruster83

    ruster83 Гость

    В общем выгрузил требуемый файл на локальный диск...Теперь как его открыть то???

    ООО....круто...спасибоооооо
     
  15. ruster83

    ruster83 Гость

    Благодарю всех.....у меня все получилось....Спасибо....
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    самы универсальный алгоритм - DXL
    в др. случаях прийдется учитывать условия: майм, файл не в РТ поле
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей