tarのブログるっ by @tarVolcano

メガネ男子のtarが書くブログです。

OLEオブジェクトをローカルに保存する

今回は、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

  • このエントリーをはてなブックマークに追加