今回は、OLEオブジェクトとして保存されたExcelをローカルファイルに保存する処理を作ってみました。
しかしながらこのロジック、完ペキとは言い切れないんですよね。(^^;
Activateメソッドの引数がFalseのとき、保存したBookを開くと非表示になるのです。
また、Activateメソッドの引数がTrueのとき、保存後Excelが起動したままになるのです。
このままでは、
◆ 保存が終わったら、Excelは起動していないようにする
◆ 保存したBookのワークシートを開いたときにちゃんと表示されている
この2つを満たす処理にはなっていません。う~む、やっぱり中途半端だ!
ビューで選択された文書を対象としたエージェント
1: Sub Initialize
2: On Error Goto errstep
3: Dim ses As New NotesSession
4: Dim db As NotesDatabase
5: Dim col As NotesDocumentCollection
6: Dim doc As NotesDocument
7: Dim rtitem As Variant
8: Dim handle As Variant
9: Dim oleApplication As Variant
10: Dim fileCount As Integer
11:
12: Set db = ses.CurrentDatabase
13: Set col = db.UnprocessedDocuments
14: Set doc = col.GetFirstDocument
15: fileCount = 0
16:
17: While Not( doc Is Nothing )
18: Set rtitem = doc.GetFirstItem( "Body" )
19: If ( rtitem.Type = RICHTEXT ) Then
20: Forall o In rtitem.EmbeddedObjects
21: If ( o.Type = EMBED_OBJECT ) Then
22: fileCount = fileCount + 1
23: Set handle = o.Activate( False )'Trueなら作業中Excel表示、Falseなら非表示
24: If ( o.class = "Excel.Sheet.8" ) Then
25: Call handle.SaveCopyAs( "C:\oletest\ole" & Cstr( fileCount ) & ".xls" )
26: handle.Close
27: 'handle.Application.Quit'26行目をコメントアウトしてQuitを使うとエラー
28: Set handle = Nothing
29: End If
30: End If
31: End Forall
32: End If
33:
34: Set doc = col.GetNextDocument( doc )
35: Wend
36:
37: message = "処理が完了しました。"
38: buttons = 0'0:[OK]/4:[はいorいいえ]
39: ico = 0'0:なし/16:ストップマークアイコン/64:インフォメーション
40: default = 0'0:1番目のボタン/256:2番目のボタン
41: mode = 0'0:アプリケーションモード
42: boxTitle = "OLEの保存"
43: Messagebox message , buttons + ico + default + mode , boxTitle
44:
45: Exit Sub
46: errstep:
47: message = "エラー発生: " & Cstr(Err) & Error & " line: " & Cstr(Erl)
48: buttons = 0'0:[OK]/4:[はいorいいえ]
49: ico = 16'0:なし/16:ストップマークアイコン/64:インフォメーション
50: default = 0'0:1番目のボタン/256:2番目のボタン
51: mode = 0'0:アプリケーションモード
52: boxTitle = "OLEの保存"
53: Messagebox message , buttons + ico + default + mode , boxTitle
54: Exit Sub
55: End Sub