Выгрузка в Excel

  • Автор темы Lex-Hunter
  • Дата начала
L

Lex-Hunter

Доброго времени суток!
Есть задача выгрузки данных в Excel, делаю выгрузку Attachment:
Код:
Set wObj = CreateObject("Excel.Application")
Set emo=CurrentDoc.GetAttachment("Test.xls")
Call emo.ExtractFile("С:\test")
Set WordDoc = wObj.Documents.open(xlFilename)
На строке Call emo.ExtractFile("С:\test") выдается ошибка: Object variable not set
Подскажите что не так.
 
D

D!m@n

Аттачмент точно есть в документе? Полный код можно?
 
M

morpheus

Для: Lex-Hunter
Зделайте проверку
Код:
If Not emo Is Nothing Then Call emo.ExtractFile("С:\test")
 
L

Lex-Hunter

Для D!m@n
Аттачмент прикреплен к форме.

Код:
Sub Click(Source As Button)
Dim CurrentUIWorkspace As NotesUIWorkspace
Dim CurrentUIDoc As NotesUIDocument	
Dim CurrentDoc As NotesDocument	
Dim WordDoc As Variant 
Dim wObj As Variant 
Dim emo As Variant 

Set CurrentUIWorkspace=New NotesUIWorkspace
Set CurrentUIDoc = CurrentUIWorkspace.CurrentDocument
Set CurrentDoc = CurrentUIDoc.Document

Set wObj = CreateObject("Excel.Application")
Set emo=CurrentDoc.GetAttachment("Test.xls")
Call emo.ExtractFile("С:\test")
Set WordDoc = wObj.Documents.open("С:\test")

WordDoc.ActiveSheet.Cells(row, col+5) = "test"
WordDoc.ActiveSheet.Cells(row, col+5).Borders.LineStyle = 1
...
...
Сори за xlFilename.
 
M

morpheus

Для: Lex-Hunter
Папробуйте через NotesEmbeddedObject и NotesRichTextItem

вот как в примерах самого лотуса

Код:
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
 
L

Lex-Hunter

Вот попробовал:
Код:
	Dim CurrentUIWorkspace As NotesUIWorkspace
Dim CurrentUIDoc As NotesUIDocument	
Dim doc As NotesDocument 
Dim rtitem As Variant
Dim fileCount As Integer

Set CurrentUIWorkspace=New NotesUIWorkspace
Set CurrentUIDoc = CurrentUIWorkspace.CurrentDocument
Set Doc = CurrentUIDoc.Document

Const MAX = 100000
fileCount = 0	
Set rtitem = doc.GetFirstItem( "Attachment" ) 
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:\test" & Cstr(fileCount) )
Call o.Remove
Call doc.Save( True, True ) 
End If
End Forall
End If
На строке "If ( rtitem.Type = RICHTEXT ) Then" выдается ошибка: Object variable not set
 
O

Omh

Ну значит нету item'a
Если аттачмент прикреплён к форме, то логично, что item'a может и не быть.
 
M

morpheus

Для: Lex-Hunter
1. Проверте наличие поля
Код:
if not doc.hasItem( "Attachment" ) then exit sub

2. Папробуйте проверить тип поля через
If ( rtitem.Type = 1 ) ...
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Если он прикреплен на форме (как embedded object), то никакого поля нет.
А значит нельзя использовать метод ExtractFile. Кстати, в хелпе это написано.
Прикрепляй в ричтекст его.
 
L

Lex-Hunter

Вопрос: Как прикрепить документ к форме, так что бы потом его можно было програмно обрабатывать?
 
M

morpheus

<!--QuoteBegin-Lex-Hunter+25:10:2007, 10:08 -->
<span class="vbquote">(Lex-Hunter @ 25:10:2007, 10:08 )</span><!--QuoteEBegin-->Вопрос: Как прикрепить документ к форме, так что бы потом его можно было програмно обрабатывать?
[snapback]82977" rel="nofollow" target="_blank[/snapback]​
[/quote]
Зачем крепить к форме?


На всяк случай кусок кода - работа с прикреплёнными к документу атачами

This script gets an attachment called JIM.SAM from a document.
Код:
Dim doc As NotesDocument
Dim object As NotesEmbeddedObject
'...set value of doc...
Set object = doc.GetAttachment( "jim.sam" )
 
M

morpheus

Для: Lex-Hunter
Ну а чем RT-поле не устраивает?
 
L

Lex-Hunter

Вопрос: Как прикрепить документ к полю типа-RT на форме в дизайнере?
 
S

Sandr

Если он прикреплен на форме (как embedded object), то никакого поля нет.
А значит нельзя использовать метод ExtractFile. Кстати, в хелпе это написано.
Прикрепляй в ричтекст его.

Не согласен...
Если прикрепить на бекенде файл в ричтекст, то он прикрепляется к документу... из ричтекста его потом не вытянешь - проверено неоднократно... А методы эмбедетатачмента документа такие же как эмбедет атачмента ричтекста...

Атчим примерно так:
Код:
Dim file As Variant
Dim rtItem As NotesRichTextItem
Dim obj As Variant
Dim o As notesEmbeddedObject 
Set doc = uidoc.Document
Set rtItem = doc.GetFirstItem("Body")

Let file = ws.OpenFileDialog(False,"Выберите файл для вложения!")
If Isempty(file) Then Exit Sub

If rtItem Is Nothing Then
Set rtItem = doc.CreateRichTextItem("Body")
End If


Call rtItem.EmbedObject(1454, "", Cstr(File(0)))


Экстрактим примерно так:
Код:
Dim filename As String
Dim o As NotesEmbeddedObject

If doc.HasEmbedded Then
Set o = doc.GetAttachment(doc.GetItemValue("AttachName")(0))
If Not o Is Nothing Then

On Error Resume Next
filename = Environ$("Temp") & "\" & o.Source	
On Error Goto errorProc

Else
Msgbox "Невозможно открыть вложение.", 48, "Ошибка"
Exit Function
End If

path = ws.SaveFileDialog(False,,,dr, o.Source)

If Not Isempty(path) Then
On Error Goto extracting
Open Path(0) For Input As 1
Close 1
If Msgbox ("Заменить сщуствующий " & o.Name & "?", 4 + 32 ,db.Title) = 6 Then
Call o.ExtractFile(Path(0))			
End If
End If
 
D

D!m@n

Можно придумать еще сотню вариантов.
Например, если шаблон один для всех пользователей - можно сделать профильный (Profile) документ и хранить в нем этот аттачмент.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--QuoteBegin-Sandr+25:10:2007, 11:36 -->
<span class="vbquote">(Sandr @ 25:10:2007, 11:36 )</span><!--QuoteEBegin-->Если прикрепить на бекенде файл в ричтекст, то он прикрепляется к документу... из ричтекста его потом не вытянешь - проверено неоднократно... А методы эмбедетатачмента документа такие же как эмбедет атачмента ричтекста...
[snapback]82990" rel="nofollow" target="_blank[/snapback]​
[/quote]
Документ и форма немного разные вещи. :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!