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

  • Автор темы Автор темы ruster83
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
R

ruster83

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

Распишите пожалуйста....я просто не знакю ка кэто сделать программно,хотябы по действиям напишите...как это делаеться...пжл...
 
Код:
Forall x in RTItem.EmbeddedObjects
'Тут заполняем арраей с именами (x.Source)
End Forall
А потом
Код:
ws.Prompt()
 
'Тут заполняем арраей с именами (x.Source)

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

Dim attachedItemsList As NotesItem

а потом

Call attachedItemsList.AppendToTextList(x.Source)

я правильно понял???
 
Ну как вариант (но не самый оптимальный)
Код:
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

Потом
Код:
Dim Att As String
Att = notesUIWorkspace.Prompt( PROMPT_OKCANCELCOMBO, "Attachments", "Attachments" , "" , rv)

Там ещё парочку проверок надо добавить, но это сам...
 
Большое спасибо....Вроде заработало отображение.....Но только когда выбираю файл вложения он не открываеться...
Как сделать чтобы по нажатию на кнопку Ok выбранный файл еще и открывался???
 
ruster83
Можно попробовать сохранить на диск аттач и потом открыть его
 
Call notesEmbeddedObject.ExtractFile( path$ )

Пример из хелпа:
Код:
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
 
Помоему не совсем то....В поле RTX прикреплено несколько файлов...Требуеться открыть один из них...Пользователь выбрал файл который надо открыть,теперь как его открыть....Т.е. у меня есть имя файла который надо открыть,но как дать команду открытия именно этого файла...???

Как по имени выбирать нужное мне вложение???
 
Вот приблизительный код:

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

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
 
В общем выгрузил требуемый файл на локальный диск...Теперь как его открыть то???

ООО....круто...спасибоооооо
 
Благодарю всех.....у меня все получилось....Спасибо....
 
самы универсальный алгоритм - DXL
в др. случаях прийдется учитывать условия: майм, файл не в РТ поле
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab