2016-02-25 194 views
-3

我想使用VBA從Lotus Notes打開附件。 問題是我沒有從Lotus Notes中獲取路徑。使用VBA從Lotus Notes打開附件

Error in Code

Lotus Notes File

,我會很感激,如果你能給我一個代碼,以我怎麼能打開這個路徑,而不硬編碼。

這裏是行不通的完整代碼...

Function OpenURL(URL As String, WindowState As W32_Window_State) As Boolean 

'Opens passed URL with default application, or Error Code (<32) upon error 

Dim lngHWnd As Long 
Dim lngReturn As Long 

lngReturn = ShellExecute(lngHWnd, "open", URL, vbNullString, _ 
vbNullString, WindowState) 

OpenURL = (lngReturn > 32) 

端功能 子OpenLotusNotes()

Dim objNotesSession As Object 
Dim objNotesFile As Object 
Dim objNotesDocument As Object 

Dim objNotesField As Object 
Dim objNotesUIWorkSpace As Object 
Dim objNotesView As Object 



Set objNotesSession = CreateObject("Notes.NotesSession") 
Set objNotesFile = objNotesSession.GETDATABASE("ATLAS40", "ACITF\PRODUCTION\USN\ePayable.nsf") 
'("Server", "Datenbank") 
Set objNotesUIWorkSpace = CreateObject("Notes.NotesUIWorkSpace") 

Set i = Sheet1.Range("B20") 

Dim DocNum As Variant 
Dim DocName As Variant 
Set objNotesView = objNotesFile.GetView("1.CheckView") 
Set objNotesDocument = objNotesView.GetFirstDocument 

Dim body As Variant 


Dim ms As String 
ms = "" 

If Not objNotesDocument Is Nothing Then 
    'initial set 
    DocNum = objNotesDocument.InvoiceNumber 
    DocName = objNotesDocument.InvoiceDocumentNumber 
    Dim DocFound As Boolean 

    DocFound = False 

    While Not DocFound = True 
     DocNum = objNotesDocument.InvoiceNumber 
     DocName = objNotesDocument.InvoiceDocumentNumber 



     If DocNum(0) = i Then 
      ms = "You are about to open the attachement located in " & DocNum(0) & " " & DocName(0) & " in The Way we do things database from Database Server " & objNotesFile.server & " with Database File name " & objNotesFile.Filename & "." 

      MsgBox (ms) 
      DocFound = True 

      Set body = objNotesDocument.getfirstitem("$FILE") 

      'subject der mail ermitteln 
      For Each obj In body.embeddedobjects 

       'MsgBox (Environ("TEMP") & "\" & obj.Name) 
       'MsgBox (obj.Name) 
       Call obj.ExtractFile(Environ("TEMP") & "\" & obj.Name) 
       OpenURL "file://" & Environ("TEMP") & "\" & obj.Name, Show_Maximized 

      Next 
     End If 
     Set objNotesDocument = objNotesView.GetNextDocument(objNotesDocument) 
    Wend 
End If 
+1

請編輯您的文章以包含實際的相關代碼。你的代碼*的屏幕截圖不會。 –

+0

重新修改你的代碼:你不能使用$ File。如果您想使用body.EmbeddedObjects,那麼您需要找到嵌入附件的富文本字段的名稱。 $ File是一個特殊的對象,而不是一個富文本字段。使用getFirstItem(「body」)可能是正確的,但您可以查看錶單,或查看文檔屬性對話框中的字段列表,並查找應用程序中使用的真實姓名。甚至可能無法工作,因爲有時附件不會保存在富文本字段中,在這種情況下,我在代碼中給出的答案仍然適用:使用objNotesDocument.EmbeddedObjects。 –

回答

1

無法通過訪問$文件項目打開文件,所以即使你有正確的語法(使用GetFirstItem(「$ File)」)它仍然不起作用。

你需要使用objNotesDocument.EmbeddedObjects()這將返回一個數組NotesEmbeddedObject對象。如果文檔中只有一個文件附件,則數組中只有一個元素。您可以使用NotesEmbeddedObject類的ExtractFile方法將文件的副本保存到文件系統,並可以從那裏打開它。

相關問題