<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUYMRHw8fCp7ImA9WhRWGEQ.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080</id><updated>2012-01-07T09:46:25.274+09:00</updated><category term="ACL" /><category term="全文索引" /><category term="アクセス制御リスト" /><category term="Lotus" /><category term="names.nsf" /><category term="ビュー" /><category term="Excel" /><category term="Notes" /><category term="Domino" /><title>ノーツってヤッぁ..二児の父の苦悩つ</title><subtitle type="html">かれこれ10年以上の付き合いとなる Lotus Notes は今年で20+?周年だそうです。これからもまだまだ進化しつづけるであろう Lotus Notes/Domino の可能性を信じつつ、今日もサーバーを監視しつつアプリ開発の腕に磨きをかけるのである...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://harunakano.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/oYeh" /><feedburner:info uri="blogspot/oyeh" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUYMRHwzeip7ImA9WhRWGEQ.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-6724770355395994888</id><published>2011-09-20T23:46:00.000+09:00</published><updated>2012-01-07T09:46:25.282+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-07T09:46:25.282+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>LotusScriptでホットスポットを追加してみた</title><content type="html">LotusScriptを使って、リッチテキストフィールドへホットスポットのURLリンク（リソースリンク）を追加することはできないものかと思案していましたが、ようやく解決できました。&lt;br&gt;
&lt;br&gt;
先日の&lt;a href="http://ncdomino.notescons.gr.jp/ncDisc.nsf/564ec5941a21a7478525632a007bd41f/45a2b8e02922cc6a4925790c0022849c?OpenDocument"&gt;懇談室のスレ&lt;/a&gt;ではNotesクライアントの設定次第でホットスポットにならないことがありますが、こちらはたぶん大丈夫。&lt;br&gt;
&lt;br&gt;
やり方はちょっとズルイかもしれません。&lt;br&gt;
&lt;br&gt;
1. リッチテキストに追加するホットスポットの定義が書かれたxmlをDBへインポートして文書を作ります&lt;br&gt;
2. ビューで選択した文書のリッチテキストフィールドへ1で作成した文書のリッチテキストフィールドを追加し、保存します&lt;br&gt;
3. 1で作成した文書を削除します&lt;br&gt;
&lt;br&gt;
ここでxmlをどのように記述すればよいの？というギモンが湧きます。&lt;br&gt;
&lt;br&gt;
実際に手動でホットスポットを作成した文書を作っておき、NotesDXLExporterクラスを使ってXML形式のファイルへ書き出してみました。&lt;br&gt;
書き出したXMLファイルから要らなそうな記述を削除したものが、下のコードの docxml = | から &amp;lt/document&amp;gt| までの部分です。&lt;br&gt;
&lt;br&gt;
&lt;pre class="vb:nogutter" name="code"&gt;Sub Initialize
 Dim ss As New NotesSession
 Dim db As NotesDatabase
 Dim dc As NotesDocumentCollection
 Dim doc As NotesDocument, tmpdoc As NotesDocument
 Dim rtitem As NotesRichTextItem
 Dim stream As NotesStream
 Dim importer As NotesDXLImporter
 Dim docxml As String
 
 Set db = ss.CurrentDatabase
 
 'xmlの内容はExportした文書を参考に。
 docxml = |&lt;?xml version='1.0'?&gt;
&lt;document form='tmpHotspotResourceLink'&gt;
&lt;item name='Body'&gt;
&lt;richtext&gt;
&lt;par def="1" /&gt;
&lt;par def='1'&gt;
&lt;urllink showborder='false'&gt;
&lt;code event='value'&gt;
&lt;formula&gt;"http://www.google.co.jp"&lt;/formula&gt;
&lt;/code&gt;
&lt;run&gt;検索サイトへのリンク&lt;/run&gt;
&lt;/urllink&gt;
&lt;/par&gt;
&lt;/richtext&gt;
&lt;/item&gt;
&lt;/document&gt;|
 
 '文書作成用のxmlをストリームへ書き込み、文書へ変換する
 Set stream = ss.CreateStream
 Call stream.WriteText( docxml )
 Set importer = ss.CreateDXLImporter( stream, db )
 importer.DocumentImportOption = 2 'DXLIMPORTOPTION_CREATE
 Call importer.Process
 
 '変換した文書のリッチテキストフィールドの内容を選択文書へ追加する
 nid = importer.GetFirstImportedNoteId
 Set tmpdoc = db.GetDocumentByID( nid ) '変換した文書
 Set dc = db.UnprocessedDocuments
 Set doc = dc.GetFirstDocument '選択文書
 Set rtitem = doc.GetFirstItem( "Body" ) 'ホットスポットを追加するフィールド
 Call rtitem.AppendRTItem( tmpdoc.GetFirstItem( "Body" ) )
 Call doc.Save( True, True )
 
 '変換した文書を削除する
 Call tmpdoc.Remove( False )
End Sub
&lt;/pre&gt;
&lt;br /&gt;
&lt;br&gt;
xmlのうち、&lt;urllink&gt;タグがホットスポット、&lt;formula&gt;タグがリンク先のURLで、&lt;run&gt;タグがリンクとして表示する文言になります。&lt;br&gt;
&lt;br&gt;
応用すればホットスポットボタンも追加できそううですね。&lt;br&gt;
&lt;br&gt;
※Lotus Notes 8.0.1 Basic にて動作確認しました&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-6724770355395994888?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nywSnkw6NcVz_UNSRqQte5H3RPc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nywSnkw6NcVz_UNSRqQte5H3RPc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nywSnkw6NcVz_UNSRqQte5H3RPc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nywSnkw6NcVz_UNSRqQte5H3RPc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/wD9Eqg-l7wU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/6724770355395994888/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2011/09/lotusscript.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/6724770355395994888?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/6724770355395994888?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/wD9Eqg-l7wU/lotusscript.html" title="LotusScriptでホットスポットを追加してみた" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2011/09/lotusscript.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEBRnwyeip7ImA9WhZREEQ.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-5197289936376518095</id><published>2011-04-06T22:47:00.000+09:00</published><updated>2011-04-06T22:47:37.292+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-06T22:47:37.292+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>編集者も他人が作成した文書を削除できないようにする</title><content type="html">ACLで編集者アクセスを付与された人は他人が作成した文書を編集することはできますが、削除に関しては権限を別途付与しなければなりません。&lt;br /&gt;
&lt;br /&gt;
編集者アクセスに削除権限を付与した場合、閲覧権限のある文書はすべて削除できてしまいますが、これを制限したいといった要望もあります。&lt;br /&gt;
&lt;br /&gt;
そんなとき、削除の許可を判断するロジックをデータベーススクリプトにある QueryDocumentDelete イベントへ記述します。&lt;br /&gt;
&lt;br /&gt;
以下の記述例では次のような判断を行い、削除を制限しています。&lt;br /&gt;
・管理者ロール[Admin]を付与されている場合、削除できる&lt;br /&gt;
・自身が（アイテム"CreatedBy"に設定されている）文書の作成者であれば削除できる&lt;br /&gt;
・複数の文書を選択した場合、ひとつでも他人が作成した文書があれば削除できない&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim username$
    Dim dbadmin As Variant
    
    dbadmin = Evaluate(|@IsMember("[Admin]"; @UserRoles)|)
    If dbadmin(0) &lt;&gt; 0 Then Exit Sub
    username = Source.Database.Parent.UserName
    Set dc = Source.Documents
    If dc.count = 0 Then Exit Sub
    Set doc = dc.GetFirstDocument
    While Not doc Is Nothing
        If doc.HasItem( "CreatedBy" ) Then
            If username &lt;&gt; doc.GetItemValue( "CreatedBy" )( 0 ) Then
                Continue = False
                Exit Sub
            End If
        End If
        Set doc = dc.GetNextDocument( doc )
    Wend
End Sub&lt;/pre&gt;&lt;br /&gt;
削除しようと選択した文書は NotesUIDatabase クラスの Documents プロパティから取得できます。&lt;br /&gt;
ビューから複数の文書を選択してDeleteキーを押した場合など、複数の文書が戻ることもありますので、戻り値は NotesDocumentCollection です。&lt;br /&gt;
文書の削除を続行させたい場合、Continue を True として処理を抜けます。&lt;br /&gt;
削除させたくない条件にひっかかったら、 Continue へ False を代入します。&lt;br /&gt;
&lt;br /&gt;
削除できないことを Messagebox などで教えてあげるとより親切ですね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-5197289936376518095?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L2ZlOjbjX0FsO-q2NMOO7QQMUh8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L2ZlOjbjX0FsO-q2NMOO7QQMUh8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/L2ZlOjbjX0FsO-q2NMOO7QQMUh8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L2ZlOjbjX0FsO-q2NMOO7QQMUh8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/Ntqie9OcfJs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/5197289936376518095/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2011/04/blog-post.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5197289936376518095?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5197289936376518095?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/Ntqie9OcfJs/blog-post.html" title="編集者も他人が作成した文書を削除できないようにする" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2011/04/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYGQnk5fip7ImA9Wx5bEUQ.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-4469368391336421275</id><published>2010-10-28T00:25:00.002+09:00</published><updated>2010-10-28T00:25:23.726+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-28T00:25:23.726+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>メール文書を開くと、メール文書は開かずに他のアプリケーションの文書が開く仕組み</title><content type="html">ワークフローなどのアプリケーションで依頼や通知のメールを送信することがありますが、相手にリンク先の文書を開いてもらうには、メールの本文へ文書リンクを挿入しておき、それをクリックしてもらうといったが運用が多いかと思います。&lt;br /&gt;
 &lt;br /&gt;
これからご紹介するのは、メールに文書リンクを挿入しますが、受信者はリンクをクリックしなくても、文書を開くだけで他のアプリケーションの文書が開くようにする仕掛けです。&lt;br /&gt;
 &lt;br /&gt;
まずはメールを送信するためのボタンに設定する LotusScript のサンプルです。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim ss As New NotesSession
    Dim doc As NotesDocument
    Dim rtitem As NotesRichTextItem
    Set uidoc = ws.CurrentDocument
    Call uidoc.Save
    Set doc = New NotesDocument( ss.CurrentDatabase )
    doc.Form = "Link"
    doc.Subject = "[Request] " &amp; uidoc.Document.Subject(0)
    Set rtitem = New NotesRichTextItem( doc, "Body" )
    Call rtitem.AppendDocLink( uidoc.Document, uidoc.Document.Subject(0) )
    Call doc.Send( True, "Hoge Hoge/ORG" )
    Set doc = Nothing
    Call uidoc.Close( True )
End Sub&lt;/pre&gt; &lt;br /&gt;
このサンプルで作られる文書(doc)ではフォーム名として "Link" を指定しています。※フォーム名は"Link"以外でも結構です&lt;br /&gt;
この"Link"フォームをDBに作成しておき、フォーム上に2つのフィールド"Subject"と"Body"を配置します。&lt;br /&gt;
そして"Link"フォームのプロパティを開き、[起動]タブにある「自動起動」の値を "-最初の文書リンク-"に変更します。&lt;br /&gt;
 &lt;br /&gt;
作成した文書を送信するとき、Send メソッドの第一パラメータへ True を指定すると、文書にフォームの設計情報が埋め込まれます。&lt;br /&gt;
つまり「フォームの最初にある文書リンクを自動起動する」情報が埋め込まれるわけです。&lt;br /&gt;
 &lt;br /&gt;
こうして送信されたメールをビューからダブルクリックして開くと、リンク先の文書が開きます。&lt;br /&gt;
 &lt;br /&gt;
この仕組みの惜しいところは、プリビューペインで開いた場合はリンク先の文書は開かず、埋め込まれたフォームの内容が表示されるところです。&lt;br /&gt;
プリビューペインで開くことを想定して、「リンクをクリックして文書を開きなさい」的な文言を追加したり、"Link"フォームの設計を工夫するのが良いと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-4469368391336421275?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w4LIlkiW4Lcp6nhbvfOgLen03no/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w4LIlkiW4Lcp6nhbvfOgLen03no/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w4LIlkiW4Lcp6nhbvfOgLen03no/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w4LIlkiW4Lcp6nhbvfOgLen03no/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/k0OTzrz_tJw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/4469368391336421275/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/10/blog-post.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/4469368391336421275?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/4469368391336421275?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/k0OTzrz_tJw/blog-post.html" title="メール文書を開くと、メール文書は開かずに他のアプリケーションの文書が開く仕組み" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/10/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4GRXo7eCp7ImA9Wx5WFUQ.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-4086571426929384339</id><published>2010-09-27T22:25:00.000+09:00</published><updated>2010-09-27T22:25:24.400+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-27T22:25:24.400+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>特定のロールがついたACLエントリを宛先とするメール作成画面を開く</title><content type="html">Notes Q&amp;A のサイトにあった&lt;a href="http://domino.webserve.ne.jp/webserve/notesqa.nsf/All/90472B5AF602B740492577A000295A5D?OpenDocument"&gt;この&lt;/a&gt;エントリについて、質問の意図を勘違いして回答した挙句「@関数ではできない」とさらにつまらない回答してしまったものの「Lotus Script ならできそうです」と言いにくい感じだったので、こちらにサンプルを掲載することにしました。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    Dim ss As New NotesSession
    Dim acl As NotesACL
    Dim entry As NotesACLEntry
    Dim nam As NotesName '階層名を省略形にするために利用
    Dim admin As String '宛先を格納する変数
    Dim ws As New NotesUIWorkspace
    Dim db As New NotesDatabase( "", "" )
    Dim uidoc As NotesUIDocument
    
    'ACLエントリに特定のロールが付与されている場合、宛先へ追加する
    admin = ""
    Set acl = ss.CurrentDatabase.ACL
    Set entry = acl.GetFirstEntry
    While Not ( entry Is Nothing )
        If Not Isnull( Arraygetindex( entry.Roles, "[Admin]", 0 ) ) Then
            Set nam = New NotesName( entry.Name )
            admin = admin &amp; nam.Abbreviated &amp; ", "
        End If
        Set entry = acl.GetNextEntry( entry )
    Wend
    
    'メール作成画面を開き、宛先をセットする
    Call db.OpenMail
    Set uidoc = ws.ComposeDocument( db.Server, db.FilePath, "Memo" )
    Call uidoc.GotoField( "EnterSendTo" )
    Call uidoc.InsertText( admin )
End Sub&lt;/pre&gt;&lt;br /&gt;
これはサンプルなので手抜きですが、実際にはサーバーやサーバーグループのような不要なエントリを外したり、宛先フィールドのサイズ制限を考慮した仕組みが欲しくなるかと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-4086571426929384339?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Mr29TutDBwew6KEtmbEbxDt1zLY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mr29TutDBwew6KEtmbEbxDt1zLY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Mr29TutDBwew6KEtmbEbxDt1zLY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mr29TutDBwew6KEtmbEbxDt1zLY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/zy8PZX-nAB0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/4086571426929384339/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/09/acl.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/4086571426929384339?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/4086571426929384339?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/zy8PZX-nAB0/acl.html" title="特定のロールがついたACLエントリを宛先とするメール作成画面を開く" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/09/acl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUACRX44fyp7ImA9Wx5REUk.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-6421169777698473091</id><published>2010-08-19T01:09:00.000+09:00</published><updated>2010-08-19T01:09:24.037+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-19T01:09:24.037+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>すべてのアプリケーションの利用状況を調べる</title><content type="html">log.nsfではデフォルトで数日分の情報が蓄積され、それ以前の情報は破棄されます。&lt;br /&gt;
当方では過去ログを追うために保存用のDBを用意しています。&lt;br /&gt;
保存用のDBの実態は log.nsf のレプリカなのですが、log.nsf で破棄された情報が保存用へ伝わらないようにしています。&lt;br /&gt;
他のサーバーにある保存用DBへ毎朝、複製するよう接続文書で設定しています。&lt;br /&gt;
 &lt;br /&gt;
そうして蓄積された情報の中に Session文書があります。&lt;br /&gt;
Session文書にはユーザーやサーバーが読み書きしたアプリケーションごとの件数などがアプリケーションごとに記録されています。&lt;br /&gt;
&lt;br /&gt;
当方ではSession文書を集計することで、ユーザーのアクセスが無いものをチェックしています。&lt;br /&gt;
 &lt;br /&gt;
以下は保存用DBから半年分のSession文書から読み込みと書き込みの件数を集計して、タブ区切りのテキストファイルへ書き出すサンプルです。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    'logArchive.nsf をサーチして半年間のSession文書を取得する
    Dim strTAB As String, strCRLF As String
    Const ARCHIVE_SERVER = "hogehoge/org"
    Const ARCHIVE_FILE = "LogArchive.nsf"
    strTAB = Chr(9)
    strCRLF = Chr(13) &amp; Chr(10)
    Dim listExclude List As String, listCounter List As String
    listExclude("CN=Administrator/O=org") = "1" '1に意味は無い
    listExclude("CN=hogehoge/O=org") = "1"
    
    Dim logdb As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim ndt As New NotesDateTime( "Today" )
    Call ndt.AdjustMonth( -6 ) '半年分の情報を検索する
    
    '検索する
    Set logdb = New NotesDatabase( ARCHIVE_SERVER, ARCHIVE_FILE )
    Print "検索開始"
    Set dc = logdb.Search( | Form="Session" |, ndt, 0 )
    Print "検索終了、取得した文書数 : " &amp; Cstr( dc.count ) &amp; ", 集計開始"
    
    '集計する
    Set doc = dc.GetFirstDocument
    While Not ( doc Is Nothing )
        If doc.HasItem( "Body" ) Then
            UserName$ = doc.GetItemValue( "UserName" )(0)
            If Not Iselement( listExclude( UserName$ ) ) Then
                rtBody = Split( doc.GetItemValue( "Body" )(0), strCRLF )
                For i% = 0 To Ubound( rtBody )
                    varData = Split( rtBody(i%), strTAB )
                    strPath$ = Lcase$( varData( 0 ) )
                    If Right( strPath$, 4 ) &lt;&gt; ".ntf" Then
                        If Iselement( listCounter( strPath$ ) ) Then
                            varRW = Split( listCounter( strPath$ ), strTAB )
                            listCounter( strPath$ ) = Cstr( Cdbl( varRW(0) ) + Cdbl( varData(1) ) ) &amp; _
                            strTAB &amp; Cstr( Cdbl( varRW(1) ) + Cdbl( varData(2) ) )
                        Else
                            listCounter( strPath$ ) = Cstr( varData(1) ) &amp; strTAB &amp; Cstr( varData(2) )
                        End If
                    End If
                Next i%
            End If
        End If
        Set doc = dc.GetNextDocument( doc )
    Wend
    Print "集計終了, 出力開始"
    
    '出力する
    Dim objWshShell As Variant
    Set objWshShell = CreateObject("WScript.Shell")
    tmpPath$ = objWshShell.SpecialFolders("Desktop")
    filename$ = tmpPath$ &amp; "\半年間の読み書き件数.txt"
    fileNum% = Freefile()
    Open filename$ For Output As fileNum%
    Print #fileNum%, "ファイルパス" &amp; strTAB &amp; "読み込み" &amp; strTAB &amp; "書き込み"
    Forall o In listCounter
        Print #fileNum%, Listtag( o ) &amp; strTAB &amp; o
    End Forall
    Close fileNum%
    Print "出力終了、処理完了"
End Sub&lt;/pre&gt;&lt;br /&gt;
補足すると、アプリケーションごとの読み書き件数は Session文書の "Body" アイテムにあります。&lt;br /&gt;
アプリケーションのファイルパス、読み込み件数、書き込み件数などがタブで区切られ、&lt;br /&gt;
これらがアプリケーションごとに改行で区切られています。&lt;br /&gt;
&lt;br /&gt;
また、ここではサーバーや管理者のSession文書を除外しています。&lt;br /&gt;
&lt;br /&gt;
サンプルでは読み込み件数と書き込み件数のみを集計していますが、最終アクセス日付をSession文書の日付情報から求めることもできそうですね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-6421169777698473091?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iSGfTJ5eWttweQL1eKJXaeHzTfs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iSGfTJ5eWttweQL1eKJXaeHzTfs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iSGfTJ5eWttweQL1eKJXaeHzTfs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iSGfTJ5eWttweQL1eKJXaeHzTfs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/7EpYz49JbYY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/6421169777698473091/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/08/blog-post.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/6421169777698473091?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/6421169777698473091?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/7EpYz49JbYY/blog-post.html" title="すべてのアプリケーションの利用状況を調べる" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/08/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGQHY5eyp7ImA9Wx5TE08.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-723836122003481423</id><published>2010-07-28T22:07:00.000+09:00</published><updated>2010-07-28T22:07:01.823+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-28T22:07:01.823+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>すべてのビューのサイズを調べる</title><content type="html">Notesのアプリケーションには「ビュー」という登録されている文書をリスト表示するのに便利な設計要素がありますが、最近になってビューに関連すると思われる不具合が1週間に2度も発生しました。&lt;br /&gt;
&lt;br /&gt;
ユーザーがDBを開こうとしたりすると&lt;br /&gt;
「メモリが足りません。インデックスプールがいっぱいです」&lt;br /&gt;
といったメッセージが表示されるようになったのです。※表示されないユーザーもいました&lt;br /&gt;
&lt;br /&gt;
IBMの情報（下のリンク）によると、当現象は Domino 6.5.3 の不具合とのこと。&lt;br /&gt;
    定期的に「インデックスプールがいっぱいです」というメッセージが表示される&lt;br /&gt;
    http://www-06.ibm.com/jp/domino04/lotus/support/faqs/faqs.nsf/all/729123&lt;br /&gt;
&lt;br /&gt;
どうやら NIF Pool が制限値の128MBに達すると発生するようです。&lt;br /&gt;
&lt;br /&gt;
確かに、2度目に発生した時の統計情報の値 (Database.NIFPool.Used) は8MB付近から一気に制限値へ増加していました...&lt;br /&gt;
&lt;br /&gt;
そもそもこの不具合がどうして突然発生するようになったのか...??&lt;br /&gt;
最近作成したアプリケーションでどでかいビュー索引を作った覚えもないし...??&lt;br /&gt;
&lt;br /&gt;
まずはサーバー上にある全てのビューのサイズをチェックしようと考え、次のようなスクリプトを作りました。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    Dim ss As New NotesSession
    Dim logdb As NotesDatabase
    Dim logdoc As NotesDocument, doc As NotesDocument
    Dim logdc As NotesDocumentCollection
    Dim item As NotesItem
    Dim views As Variant
    dlmCRLF = Chr( 13 ) &amp; Chr( 10 )
    
    Set logdb = New NotesDatabase( "hogehoge/org", "log.nsf" )
    If logdb Is Nothing Then Exit Sub
    Set logdc = logdb.Search( |Form = "Activity"|, Nothing, 0 )
    If logdc.Count = 0 Then Exit Sub
    Set logdoc = logdc.GetFirstDocument
    While Not ( logdoc Is Nothing )
        If logdoc.HasItem( "AllViewInfo" ) Then
            Set item = logdoc.GetFirstItem( "AllViewInfo" )
            views = Split( item.Values, dlmCRLF )
            Forall o In views
                Set doc = New NotesDocument( ss.CurrentDatabase )
                doc.Form = "view"
                doc.Title = logdoc.Title( 0 )
                doc.PathName = logdoc.PathName( 0 )
                doc.ViewName = Strleftback( o, " ", 1 )
                doc.ViewSize = Strrightback( o, " ", 2 )
                Call doc.Save( True, False )
                Set doc = Nothing
            End Forall
        End If
        Set logdoc = logdc.GetNextDocument( logdoc )
    Wend
End Sub&lt;/pre&gt;簡単に説明します。&lt;br /&gt;
&lt;br /&gt;
log.nsf には毎朝5時に statlog タスクにて作成・更新される Activity というフォームの文書があり、ここに各アプリケーション内にあるすべてのビューやフォルダの名前とサイズが記録されています。&lt;br /&gt;
log.nsf にある全ての Activity 文書を参照して、改行で区切られた各ビューの情報を分解して書き出します。&lt;br /&gt;
こうして書き出した情報をビューで工夫するとビューの数が多いアプリケーションやサイズが大きいビューがわかります。&lt;br /&gt;
&lt;br /&gt;
不具合に関しては現在のところ、アップデートするまでに再現した場合に何かの参考になるかと考え LOG_UPDATE=1 を設定して様子をみていますが、近い将来Domino を 6.5.6 へアップデートします。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-723836122003481423?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cVLVE4XDC-4LWMvc389VUr3wD-o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cVLVE4XDC-4LWMvc389VUr3wD-o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cVLVE4XDC-4LWMvc389VUr3wD-o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cVLVE4XDC-4LWMvc389VUr3wD-o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/id1tALJxyPw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/723836122003481423/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/07/blog-post.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/723836122003481423?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/723836122003481423?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/id1tALJxyPw/blog-post.html" title="すべてのビューのサイズを調べる" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/07/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEDRnk6cSp7ImA9WxFVFk0.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-5226710076627975303</id><published>2010-06-15T22:31:00.000+09:00</published><updated>2010-06-15T22:31:17.719+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-15T22:31:17.719+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>全文索引が壊れた？</title><content type="html">全文索引のあるアプリケーションでビュー上に検索バーを出して英単語で検索すると自分は3件しか表示されないのに隣の人の結果は180件表示される、と問い合わせがありました。&lt;br /&gt;
確認したところ、オプションの「あいまい検索」にチェックが入っている（有効にする）と件数が少なくなることがわかりました。&lt;br /&gt;
普通なら「あいまい検索」のオプションを"無効"にするより"有効"にするほうが件数は増えるはずです（よね？）。&lt;br /&gt;
そこで全文索引の異常を疑い、再作成してみました。&lt;br /&gt;
Dominoコンソールから次のコマンドを投入&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;load updall hogehoge.nsf -X&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
この後「あいまい検索」を"有効"にしたときの件数が"無効"のときの件数を超えました。&lt;br /&gt;
全文索引を再作成して件数が改善したということは、つまり全文索引が壊れていたということでしょうか...?&lt;br /&gt;
上のアプリケーションの全文索引はつい数日前にも更新されており、その時のログ(log.nsf)には異常を示すようなメッセージはありません。&lt;br /&gt;
全文索引の異常ってどうやって見つけるのだろう...&lt;br /&gt;
これがわからないとなると、定期的に再作成するのがよいのかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-5226710076627975303?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cqjp6luLFSxZUSrCKwQcB58YrKs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cqjp6luLFSxZUSrCKwQcB58YrKs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cqjp6luLFSxZUSrCKwQcB58YrKs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cqjp6luLFSxZUSrCKwQcB58YrKs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/_WxZABo_r-o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/5226710076627975303/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/06/blog-post.html#comment-form" title="2 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5226710076627975303?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5226710076627975303?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/_WxZABo_r-o/blog-post.html" title="全文索引が壊れた？" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/06/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMGR3k9eip7ImA9WxFSGEg.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-1008791971389220870</id><published>2010-04-21T21:53:00.000+09:00</published><updated>2010-04-21T21:53:46.762+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-21T21:53:46.762+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>リッチテキストへの変更内容を反映させる</title><content type="html">現在開いている文書のリッチテキストフィールドへバックエンドで変更を加えても、文書を開き直さないと変更内容が反映されません。&lt;br /&gt;
&lt;br /&gt;
そこで内容を動的に反映するために文書を開き直すサンプルを作ってみました。&lt;br /&gt;
&lt;br /&gt;
このサンプルではリッチテキストフィールドの編集例として "Body" の一番下の位置へファイルを添付しています。&lt;br /&gt;
このエージェントのプロパティでは実行の対象を"なし"にしてください。&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    Dim ws As New NotesUIWorkspace
    Dim ss As New NotesSession
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim db As NotesDatabase
    Dim rtitem As NotesRichTextItem
    Dim unid$, pathname$
    Dim neo As NotesEmbeddedObject
    Dim editmode As Boolean
    
    Set uidoc = ws.CurrentDocument
    If uidoc Is Nothing Then Exit Sub
    '開き直すときのモードを現在の状態と一致させる
    editmode = uidoc.EditMode
    
    '編集モードなら変更を反映させるため保存する
    If editmode Then Call uidoc.Save
    
    'バックエンドでリッチテキストフィールドを編集して保存
    pathname = "C:\TEMP\HOGE.TXT"
    Set doc = uidoc.Document
    Set rtitem = doc.GetFirstItem( "Body" )
    Set neo = rtitem.EmbedObject( 1454, "", pathname )
    Call doc.Save( False, False )
    unid = doc.UniversalID
    
    'フロントエンド文書を閉じる。保存プロンプトは出さない
    If editmode Then doc.SaveOptions = "0"
    Call uidoc.Close
    
    'バックエンド文書を取得し直してフロントエンドで開く
    Set db = ss.CurrentDatabase
    Set doc = db.GetDocumentByUNID( unid )
    Call ws.EditDocument( editmode, doc )
End Sub&lt;/pre&gt;現在開いている文書が編集モードでも読み込みモードでも動作します。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-1008791971389220870?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rPGo412NotD50Nk_C4xnx_QWk2U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rPGo412NotD50Nk_C4xnx_QWk2U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rPGo412NotD50Nk_C4xnx_QWk2U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rPGo412NotD50Nk_C4xnx_QWk2U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/YIcJpLoaqcQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/1008791971389220870/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/04/blog-post.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/1008791971389220870?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/1008791971389220870?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/YIcJpLoaqcQ/blog-post.html" title="リッチテキストへの変更内容を反映させる" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/04/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYBQ3c9cSp7ImA9WxBaFkw.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-5756203300971130740</id><published>2010-03-27T00:09:00.000+09:00</published><updated>2010-03-27T00:09:12.969+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-27T00:09:12.969+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>フォームを自動作成する</title><content type="html">&lt;a href="http://ncdomino.notescons.gr.jp/ncDisc.nsf/564ec5941a21a7478525632a007bd41f/eb5c1777b323342b492576f10050ad08?OpenDocument"&gt;懇談室の話題&lt;/a&gt;についてサンプルを作ってみました。&lt;br /&gt;
&lt;br /&gt;
設計情報が書かれた XML ファイルを読み込んでフォームを作ることができました。&lt;br /&gt;
&lt;br /&gt;
以下、確認したバージョンは 8.0.1 ですが 6.0.x でも動作すると思います(...たぶん)&lt;br /&gt;
 &lt;br /&gt;
まずはエージェントのサンプルです。 &lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    Dim ss As New NotesSession
    Dim stream As NotesStream
    Dim db As NotesDatabase
    Dim importer As NotesDXLImporter
    
    Set stream = ss.CreateStream
    If Not stream.Open("c:\temp\template.xml") Then Exit Sub
    
    Set db = ss.CurrentDatabase
    Set importer = ss.CreateDXLImporter(stream, db)
    
    importer.DesignImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
    Call importer.Process
End Sub&lt;/pre&gt;&lt;br /&gt;
 サンプルとして用意した XML ファイルは次のとおりです。&lt;br /&gt;
&amp;lt;?xml version="1.0" ?&amp;gt;&lt;br /&gt;
&amp;lt;database xmlns="http://www.lotus.com/dxl"&amp;gt;&lt;br /&gt;
&amp;lt;form name="Memo1"&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;richtext&amp;gt;&lt;br /&gt;
&amp;lt;par def="1"&amp;gt;&amp;lt;field kind="editable" name="Subject" type="text"&amp;gt;&amp;lt;/field&amp;gt;&amp;lt;/par&amp;gt;&lt;br /&gt;
&amp;lt;par def="1"&amp;gt;&amp;lt;field kind="editable" name="Body" type="richtext"&amp;gt;&amp;lt;/field&amp;gt;&amp;lt;/par&amp;gt;&lt;br /&gt;
&amp;lt;/richtext&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/database&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-5756203300971130740?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/waO0fYr83pt8XaN1itgja_Bb4KM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/waO0fYr83pt8XaN1itgja_Bb4KM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/waO0fYr83pt8XaN1itgja_Bb4KM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/waO0fYr83pt8XaN1itgja_Bb4KM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/Dj5qmAvPl18" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/5756203300971130740/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/blog-post_27.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5756203300971130740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5756203300971130740?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/Dj5qmAvPl18/blog-post_27.html" title="フォームを自動作成する" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/blog-post_27.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcHQXo_cCp7ImA9WxBaFE4.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-1397606127264422271</id><published>2010-03-24T21:00:00.000+09:00</published><updated>2010-03-24T21:00:30.448+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-24T21:00:30.448+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>「Designer で開く」が消えた!?</title><content type="html">Domino Designer がインストールされていれば、ワークスペース上で設計者以上の権限を持つアプリケーションのアイコンを右クリックして表示されるリストに「Designer で開く」が出てきます。&lt;br /&gt;
&lt;br /&gt;
「Designer で開く」が表示されない場合、Notesのメニューにある「表示」をクリックして「詳細メニューの表示」にチェックが付いていないかもしれません。&lt;br /&gt;
 &lt;br /&gt;
いつもどおりアイコンを右クリックして表示されなくなったら「ローカルの設定ファイルが壊れた？」とか 「Designerを再インストール？」などといろいろ考えてしまいますね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-1397606127264422271?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UIdlzYX6aM2khP4BfpZ4mazglmM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UIdlzYX6aM2khP4BfpZ4mazglmM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UIdlzYX6aM2khP4BfpZ4mazglmM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UIdlzYX6aM2khP4BfpZ4mazglmM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/Fzf8LKLK2-Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/1397606127264422271/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/designer.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/1397606127264422271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/1397606127264422271?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/Fzf8LKLK2-Y/designer.html" title="「Designer で開く」が消えた!?" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/designer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcGSHk_eip7ImA9WxBbGE8.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-3057572511843984272</id><published>2010-03-17T20:55:00.001+09:00</published><updated>2010-03-17T20:57:09.742+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-17T20:57:09.742+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>文書の背景色を変更するには</title><content type="html">&lt;a href="http://ncdomino.notescons.gr.jp/ncDisc.nsf/564ec5941a21a7478525632a007bd41f/d790a1d667a0326b492576e800321f08?OpenDocument"&gt;懇談室のこの話題&lt;/a&gt;について検討してみました。&lt;br /&gt;
&lt;br /&gt;
文書の背景色は動的に変更できることがIBMのWEBサイトに掲載があります。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www-01.ibm.com/support/docview.wss?uid=lsj113f2d76a5b0e49ca4925703700082091"&gt;文書の背景色を動的に変更する方法&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ただ、こうやって背景色を変更することが後のバージョンでもサポートされている、ということではないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
早速試してみました。&lt;br /&gt;
&lt;br /&gt;
次のサンプルでは、チェックボックスにチェックを付けて保存した文書を開くと背景はグレーになります。&lt;br /&gt;
チェックがない場合、背景は白になります。&lt;br /&gt;
&lt;br /&gt;
フォームには２つのフィールドを追加します。&lt;br /&gt;
&lt;br /&gt;
フィールド「Color」...チェックボックス、編集可能&lt;br /&gt;
キーワードには「選択肢を入力」として次の1行を設定します&lt;br /&gt;
&lt;em&gt;グレー表示&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
フィールド「$PaperColor」...数値、計算結果&lt;br /&gt;
値として次の式を設定します&lt;br /&gt;
&lt;em&gt;@If(Color="グレー表示"; 15; 1)&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
※ $PaperColor へ設定する数値については以前に投稿したエントリが参考になると思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R5以降では自動で作成される $PaperColorEx を削除するため、フォームのイベント Postsave へ次のスクリプトを記述します。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Postsave(Source As Notesuidocument)
    Dim doc As NotesDocument
    Set doc = Source.Document
    If doc.HasItem( "$PaperColorEx" ) Then
        Call doc.RemoveItem( "$PaperColorEx" )
        Call doc.Save( True, True )
    End If
End Sub&lt;/pre&gt;&lt;br /&gt;
これで完成です。なかなかいい感じですね。&lt;br /&gt;
&lt;br /&gt;
もしフォームに $PaperColor フィールドを作りたくない場合、 上の Postsave イベントのコードを下の様に変更することで設定できました。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Postsave(Source As Notesuidocument)
 Dim doc As NotesDocument
 Dim color%
 Set doc = Source.Document
 If doc.Color(0) = "グレー表示" Then
  color = 15
 Else
  color= 1
 End If
 Call doc.ReplaceItemValue("$PaperColor", color)
 
 If doc.HasItem( "$PaperColorEx" ) Then
  Call doc.RemoveItem( "$PaperColorEx" )
 End If
 Call doc.Save( True, True )
End Sub&lt;/pre&gt;※QuerySave で$PaperColor アイテムの値を置換しても、保存したときに文書に設定されていた背景色の値に置き換わってしまうようです...orz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-3057572511843984272?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MZ2_3-vUEr_vnZSjUQEoHF_bhY4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MZ2_3-vUEr_vnZSjUQEoHF_bhY4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MZ2_3-vUEr_vnZSjUQEoHF_bhY4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MZ2_3-vUEr_vnZSjUQEoHF_bhY4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/VgP3r4_l1-o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/3057572511843984272/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/blog-post_17.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/3057572511843984272?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/3057572511843984272?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/VgP3r4_l1-o/blog-post_17.html" title="文書の背景色を変更するには" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/blog-post_17.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCSHkzfCp7ImA9WxBbF0k.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-5477614499479181967</id><published>2010-03-16T22:11:00.000+09:00</published><updated>2010-03-16T22:11:09.784+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-16T22:11:09.784+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>選択式アンケートをビューで集計する</title><content type="html">アンケートの様なアプリケーションで、ダイアログリストやチェックボックスといったキーワードから選択する方式のフィールドが複数あるとき、どのキーワードが何個選択されたかを知るためのビューをフィールド毎に1つ作っていませんか？&lt;br /&gt;
&lt;br /&gt;
これら複数のフィールドの値をまとめて一つのビューへ表示する方法があります。&lt;br /&gt;
&lt;br /&gt;
以下、アンケートのアプリケーションを作成したときの事例です。&lt;br /&gt;
&lt;br /&gt;
フォームには選択式の回答欄として、フィールドを9つ(フィールド名：A1～A9)設置しています。&lt;br /&gt;
&lt;br /&gt;
ビューは1つ。「簡易集計」&lt;br /&gt;
ビューのプロパティで"データベースを最初に開くときすべてを省略する"を有効にします。&lt;br /&gt;
&lt;br /&gt;
1列目：選択された値の数を表示します&lt;br /&gt;
ソート：なし、カテゴリなし&lt;br /&gt;
式：@IsCategory(@DocDescendants("%"; "%"; "%"); "")&lt;br /&gt;
&lt;br /&gt;
2列目：選択式の項目の名前と値を階層表示します&lt;br /&gt;
展開できる行に三角アイコンを表示する：有効&lt;br /&gt;
ソート：昇順、種類：カテゴリ別、複数値を別のエントリで表示：有効&lt;br /&gt;
式：&lt;br /&gt;
empty := " (未回答)";&lt;br /&gt;
( "Q1\\" + @If( A1 = ""; empty; A1) ):&lt;br /&gt;
( "Q2\\" + @If( A2 = ""; empty; A2) ):&lt;br /&gt;
...省略...&lt;br /&gt;
( "Q8\\" + @If( A8 = ""; empty; A8) ):&lt;br /&gt;
( "Q9\\" + @If( A9 = ""; empty; A9) )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ここで2列目の式について簡単に説明します。&lt;br /&gt;
&lt;br /&gt;
A1フィールドで何も選択しなかった場合、"Q1\\ (未回答)"となります。&lt;br /&gt;
A1フィールドで複数の値（"みかん"と"りんご"）を選択した場合は"Q1\\みかん":"Q1\\りんご"となります。&lt;br /&gt;
2つの円マーク(またはバックスラッシュ)で繋げた文字列を上のビューで表示すると2列目は&lt;br /&gt;
&lt;br /&gt;
▼Q1&lt;br /&gt;
　▼ (未回答)&lt;br /&gt;
　▼みかん&lt;br /&gt;
　▼りんご&lt;br /&gt;
&lt;br /&gt;
のように表示されます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-5477614499479181967?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SycXkXhRG53JzybfqK2cjuaiPQk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SycXkXhRG53JzybfqK2cjuaiPQk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SycXkXhRG53JzybfqK2cjuaiPQk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SycXkXhRG53JzybfqK2cjuaiPQk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/t-OIe1wcjr8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/5477614499479181967/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/blog-post_16.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5477614499479181967?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5477614499479181967?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/t-OIe1wcjr8/blog-post_16.html" title="選択式アンケートをビューで集計する" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/blog-post_16.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYAQXkyfyp7ImA9WxBbFkg.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-4709103935034729049</id><published>2010-03-15T20:22:00.000+09:00</published><updated>2010-03-15T20:22:20.797+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-15T20:22:20.797+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>添付のExcelファイルから値を取得して文書へ反映する</title><content type="html">&lt;a href="http://ncdomino.notescons.gr.jp/ncDisc.nsf/564ec5941a21a7478525632a007bd41f/05f3df847932ae70492576e7001a05fd?OpenDocument"&gt;懇談室の話題&lt;/a&gt;からサンプルを作ってみました。&lt;br /&gt;
&lt;br /&gt;
特定の文書にある添付ファイルをExcelで開き、現在開いている文書へ計算結果を書き込みます。&lt;br /&gt;
計算結果は1つ目のシートの2列目にある数値の合計としています。&lt;br /&gt;
 &lt;br /&gt;
Notesクライアントで開いた文書（フォーム）にあるアクションボタンを押したときに実行することを想定しています。&lt;br /&gt;
&lt;br /&gt;
前提条件を設定してコードを簡単にしています。&lt;br /&gt;
・「特定の文書」はユニバーサルIDが変わらない&lt;br /&gt;
・「添付ファイル」のファイル名が変わらない&lt;br /&gt;
・保存先のパスには書き込み権限がある&lt;br /&gt;
・クライアントPCにはExcelがインストールされている&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim filename$, filepath$, unid$
    Dim obj As NotesEmbeddedObject
    Dim xlApp As Variant
    Dim xlbook As Variant
    Dim xlsheet As Variant
    Dim maxrows As Long
    Dim sum%
    filepath = "C:\TEMP\"
    filename = "Book1.xls"
    unid = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" '32桁のユニバーサルID
    sum = 0
    On Error Goto ERRORTRAP
    Set doc = ws.CurrentDatabase.Database.GetDocumentByUNID(unid)
    If doc Is Nothing Then Exit Sub
    If Not doc.HasEmbedded Then Exit Sub
    Set obj = doc.GetAttachment(filename)
    Call obj.ExtractFile(filepath &amp; filename)
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False
    Set xlbook = xlApp.Workbooks.Open(filepath &amp; filename)
    Set xlsheet = xlbook.Worksheets(1)
    With xlsheet.UsedRange
        maxrows = .Rows(.Rows.Count).Row
    End With
    For rows = 1 To maxrows
        sum = sum + xlsheet.Cells(rows, 2).Value
    Next
    Set uidoc = ws.CurrentDocument
    Call uidoc.Document.ReplaceItemValue("Sum", Cstr(sum))
FINAL:
    If Not xlApp Is Nothing Then
    xlApp.quit
    Set xlApp = Nothing
    End If
    Kill filepath &amp; filename
    Exit Sub
ERRORTRAP:
    Msgbox Cstr(Err) &amp; ": " &amp; Error
    Resume FINAL
End Sub&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-4709103935034729049?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R0O9atkILOgyN_Tgv3I0c6PubMg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R0O9atkILOgyN_Tgv3I0c6PubMg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R0O9atkILOgyN_Tgv3I0c6PubMg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R0O9atkILOgyN_Tgv3I0c6PubMg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/SPmvGk06dIw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/4709103935034729049/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/excel.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/4709103935034729049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/4709103935034729049?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/SPmvGk06dIw/excel.html" title="添付のExcelファイルから値を取得して文書へ反映する" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/excel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8NSX85fSp7ImA9WxBbEk8.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-6026048848931717800</id><published>2010-03-10T21:24:00.000+09:00</published><updated>2010-03-10T21:24:58.125+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-10T21:24:58.125+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>ビューでチェックを付けた順に番号を付けたい(2)</title><content type="html">&lt;a href="http://harunakano.blogspot.com/2010/03/blog-post_09.html"&gt;昨日のサンプル&lt;/a&gt;は中途半端でした。反省...&lt;br /&gt;
ビューのイベント Onselect を使ったサンプルの差し替え版です。&lt;br /&gt;
 &lt;br /&gt;
下の Lotus Script では、ビューの選択マージンに1文書ずつチェックマークを付けた場合はチェックマークを付けた順に番号を付けますが、選択マージンをマウスでなぞったり、Ctrl + A 等で一度にチェックマークを付けた場合は作成日順に番号が付きます。&lt;br /&gt;
&lt;br /&gt;
チェックマークを消した場合は番号が付きません。チェックマークを消した後また同じ文書に付けると、最後にチェックマークを付けた時の番号になります。&lt;br /&gt;
&lt;br /&gt;
文書のチェックマークが解除されたことを調べるのに NotesDocumentCollection クラスの Contains を使っていますが、これも 8 から利用できるメソッドです。文書コレクションをループしなくても探せるところがステキです。&lt;br /&gt;
&lt;br /&gt;
ヘルプによると Contains の引数には NotesDocument, NotesDocumentCollection のオブジェクトの他、 String値の NoteID が使えるとのこと。ただし NoteID を配列として指定できないようです。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;'ビューの(Globals) (Declarations)
Dim ws As NotesUIWorkspace
Dim ss As NotesSession
Dim idlist List As Long

'ビューのイベント Initialize
Sub Initialize
 Set ws = New NotesUIWorkspace
 Set ss = New NotesSession
End Sub

'ビューのイベント Onselect
Sub Onselect(Source As Notesuiview)
    Dim doc As NotesDocument
    Dim dc As NotesDocumentCollection

    Set dc = Source.Documents
    Set doc = dc.GetFirstDocument
    While Not ( doc Is Nothing )
        If Not Iselement( idlist( doc.NoteID ) ) Then
            idlist( doc.NoteID ) = "1"
        End If
        Set doc = dc.GetNextDocument( doc )
    Wend

    Forall o In idlist
        If Not dc.Contains( Listtag( o ) ) Then
            Erase idlist( Listtag( o ) )
        End If
    End Forall
End Sub

'ビューのアクション「番号を付ける」 
Sub Click(Source As Button)
    Dim doc As NotesDocument
    Dim db As NotesDatabase
    Dim lngNum%

    Set db = ws.CurrentDatabase.Database
    lngNum = 0
    Forall o In idlist
        Set doc = db.GetDocumentByID( Listtag( o ) )
        lngNum = lngNum + 1
        doc.num = lngNum
        Call doc.Save( True, False )
    End Forall

    Erase idlist
    Call ws.ViewRefresh
    Call ws.CurrentView.DeselectAll
End Sub&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-6026048848931717800?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ro83_05KgxujJdZHcATZ5S1Ldr0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ro83_05KgxujJdZHcATZ5S1Ldr0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ro83_05KgxujJdZHcATZ5S1Ldr0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ro83_05KgxujJdZHcATZ5S1Ldr0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/aBpMIjdMrlg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/6026048848931717800/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/2.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/6026048848931717800?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/6026048848931717800?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/aBpMIjdMrlg/2.html" title="ビューでチェックを付けた順に番号を付けたい(2)" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcESXc-fCp7ImA9WxBbEU4.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-3554791422341632620</id><published>2010-03-09T21:33:00.000+09:00</published><updated>2010-03-09T21:33:28.954+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-09T21:33:28.954+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>ビューでチェックを付けた順に番号を付けたい</title><content type="html">懇談室の&lt;a href="http://ncdomino.notescons.gr.jp/ncDisc.nsf/564ec5941a21a7478525632a007bd41f/0ad2559bf949d22f492576e000238d7e?OpenDocument"&gt;このエントリ&lt;/a&gt;について考えてみました。&lt;br /&gt;
&lt;br /&gt;
質問者のバージョンは6.5なので「できない」と回答しています（いじわるじゃないですよ）が、8 では OnSelect というビューのイベントが追加されています。&lt;br /&gt;
&lt;br /&gt;
ヘルプによると、このイベントが発生するのは&lt;br /&gt;
・ビューが開くとき&lt;br /&gt;
・選択マージンでチェックマークを使用して文書を選択/選択解除したとき&lt;br /&gt;
・選択された行をクリックするとき&lt;br /&gt;
とのこと。&lt;br /&gt;
&lt;br /&gt;
ビューで文書を1つ選択するたびにこのイベントが発生するなんて...なんだかパフォーマンス悪そうな予感....&lt;br /&gt;
&lt;br /&gt;
ビューで「選択された」文書をこのイベントで取得したい場合、ハイライト表示されている文書は CaretNoteID を利用して簡単に取得することができますが、（ハイライトされていないけど）チェックマークをつけた1文書を取得するには工夫が必要です。&lt;br /&gt;
&lt;br /&gt;
次のLotusScriptのサンプルでは、選択マージンでチェックマークを付けた時にその文書の NoteID をリスト変数へ追加します(NoteID が既にリストにある場合は追加しません)。&lt;br /&gt;
&lt;br /&gt;
その後、ビューのアクションボタンを押すとリスト変数へ追加した順番に番号付けします。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;'ビューの(Globals) (Declarations)
Dim ws As NotesUIWorkspace
Dim ss As NotesSession
Dim num%
Dim idlist List As Long

'ビューの(Globals) Initialize
Sub Initialize
    Set ws = New NotesUIWorkspace
    Set ss = New NotesSession
End Sub

'ビューのイベント Onselect
Sub Onselect(Source As Notesuiview)
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Set dc = Source.Documents
    Set doc = dc.GetFirstDocument
    While Not ( doc Is Nothing )
        If Not Iselement( idlist( doc.NoteID ) ) Then
            num = num + 1
            idlist( doc.NoteID ) = num
            Exit Sub
        End If
        Set doc = dc.GetNextDocument( doc )
    Wend
End Sub

'ビューのアクション「選択順に番号を付ける」
Sub Click(Source As Button)
    Dim doc As NotesDocument
    Dim db As NotesDatabase
    Set db = ws.CurrentDatabase.Database
    Forall o In idlist
        Set doc = db.GetDocumentByID( Listtag( o ) )
        doc.num = o
        Call doc.Save( True, False )
    End Forall
    num = 0
    Erase idlist
    Call ws.ViewRefresh
    Call ws.CurrentView.DeselectAll
End Sub&lt;/pre&gt;とっても手抜きなので、選択マージンをマウスでなぞったり、チェックマークをを消したり、Ctrl + A などで一度にチェックを付けたり、などなどには対応していません...orz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-3554791422341632620?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eRIoRN8jktuI0tYLEAnfybcQntY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eRIoRN8jktuI0tYLEAnfybcQntY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eRIoRN8jktuI0tYLEAnfybcQntY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eRIoRN8jktuI0tYLEAnfybcQntY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/iYe3Jn_3Itg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/3554791422341632620/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/blog-post_09.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/3554791422341632620?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/3554791422341632620?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/iYe3Jn_3Itg/blog-post_09.html" title="ビューでチェックを付けた順に番号を付けたい" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/blog-post_09.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EGQXczfSp7ImA9WxBUF0Q.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-8091770218661514740</id><published>2010-03-05T21:19:00.001+09:00</published><updated>2010-03-05T21:20:20.985+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-05T21:20:20.985+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>NotesColor の色見本表を作る</title><content type="html">客先と認識を一致させるには具体的なイメージが必要な場合もありますよね。&lt;br /&gt;
&lt;br /&gt;
色もそうですが「もうちょっと明るい感じ」と言われて変更しても一発OKになることは稀かも。&lt;br /&gt;
&lt;br /&gt;
そこで NotesColorObject の NotesColor プロパティを使って色の見本表を作ってみました。&lt;br /&gt;
&lt;br /&gt;
NotesColor は 0 から 240 の範囲の数値に色が割り当てられています。&lt;br /&gt;
&lt;br /&gt;
最初の0から15には COLOR_BLACK といった定数もあります。&lt;br /&gt;
&lt;br /&gt;
NotesColor へ数値をセットすると、Red, Green, Blue, Hue(色相), Saturation(彩度), Luminance(明度)の値が変わります。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    Dim ss As New NotesSession
    Dim doc As NotesDocument
    Dim color As NotesColorObject
    Dim body As NotesRichTextItem
    Dim nav As NotesRichTextNavigator
    Dim range As NotesRichTextRange
    Dim table As NotesRichTextTable
    Dim style1 As NotesRichTextStyle
    Dim style2 As NotesRichTextStyle
    Dim style3 As NotesRichTextStyle
    Dim styles() As NotesRichTextParagraphStyle
    Dim rows%, columns%, i%
    Dim rgb$, hsl$
    
    Set doc = ss.CurrentDatabase.CreateDocument
    Set body = New NotesRichTextItem( doc, "Body" )
    Set nav = body.CreateNavigator
    Set range = body.CreateRange
    Set color = ss.CreateColorObject
    color.NotesColor = 0
    Set style1 = ss.CreateRichTextStyle
    style1.FontSize = 1
    Set style2 = ss.CreateRichTextStyle
    style2.NotesColor = COLOR_BLACK
    style2.FontSize = 8
    Set style3 = ss.CreateRichTextStyle
    style3.NotesFont = FONT_ROMAN
    style3.FontSize = 7
    rows = 16
    columns = 16
    Redim styles( columns - 1 )
    For i = 0 To columns - 1
        Set styles( i ) = ss.CreateRichTextParagraphStyle
        styles( i ).LeftMargin = 0
        styles( i ).FirstLineLeftMargin = 0
        styles( i ).RightMargin = RULER_ONE_INCH * 0.75
    Next
    body.AppendTable rows, columns, , ,styles
    
    nav.FindFirstElement RTELEM_TYPE_TABLECELL
    range.SetBegin nav
    range.SetStyle style1
    range.SetEnd nav
    Do
        With color
            rgb = .Red &amp; " : " &amp; .Green &amp; " : " &amp; .Blue
            hsl = .Hue &amp; " : " &amp; .Saturation &amp; " : " &amp; .Luminance
        End With
        body.BeginInsert nav
'%REM 'NotesColorが不要ならコメントアウト--ここから
        body.AppendStyle style2
        body.AppendText color.NotesColor
'%END REM 'NotesColorが不要ならコメントアウト--ここまで
        body.AppendStyle style1
        body.AppendText( " " )
        If color.Luminance &lt; 120 Then
            style3.NotesColor = COLOR_WHITE
        Else
            style3.NotesColor = COLOR_BLACK
        End If
        body.AppendStyle style3
        body.AppendTable 1, 1
        body.EndInsert
        nav.FindNextElement RTELEM_TYPE_TABLE
        Set table = nav.GetElement
        table.Style = TABLESTYLE_SOLID
        table.SetColor color
        nav.FindNextElement RTELEM_TYPE_TABLECELL
'%REM 'RGBとHSLが不要ならコメントアウト--ここから
        body.BeginInsert nav
        body.AppendText rgb
        body.AddNewline 1, False
        body.AppendText hsl
        body.EndInsert
'%END REM 'RGBとHSLが不要ならコメントアウト--ここまで
        color.NotesColor = color.NotesColor + 1
        If color.NotesColor &gt; 240 Then Exit Do
    Loop While nav.FindNextElement( RTELEM_TYPE_TABLECELL )
'%REM '説明が不要ならコメントアウト--ここから
    body.AppendStyle style2
    body.AppendText "Line 1  NotesColor"
    body.AddNewline 1, False
    body.AppendText "Line 2  Red : Green : Blue"
    body.AddNewline 1, False
    body.AppendText "Line 3  Hue : Saturation : Luminance"
'%END REM '説明が不要ならコメントアウト--ここまで
    doc.Form = "Memo"
    doc.Subject = "Lotus Notes 色見本"
    doc.SendTo = ss.UserName
    doc.Send False
End Sub&lt;/pre&gt;色付けはセルごとに設定できません。そのため外側の表にあるセルの中に入れ子の表を作成して、その表へ色を付けています。&lt;br /&gt;
おおまかな処理の流れは次のとおりです。&lt;br /&gt;
&lt;br /&gt;
1. 外側の表(16行x16列)を作成します&lt;br /&gt;
2. 最初のセルへ移動します&lt;br /&gt;
3. 内側の表(1行x1列)を作成します&lt;br /&gt;
4. 内側の表へ移動します&lt;br /&gt;
5. 内側の表全体に色を設定します&lt;br /&gt;
6. 次のセル(内側の表のセル)へ移動します&lt;br /&gt;
7. RGB, HSL の値を記入します&lt;br /&gt;
8. NotesColor に 1 追加します&lt;br /&gt;
9. 次のセルへ移動できる間、3～8を繰り返します&lt;br /&gt;
&lt;br /&gt;
NotesColor の数値、RBGおよびHSLの値、値の説明が不要ならコメントアウトしてください&lt;br /&gt;
&lt;br /&gt;
NotesColor の数値を表示しない場合でも表がつぶれず色が見やすくなるようスペース文字を追加してフォントサイズで高さを調整しています。&lt;br /&gt;
&lt;br /&gt;
R,G,BとH,S,Lのそれぞれの値は0から256までの数値です。これを16進表現にしたい場合は Hex 関数で変換できます。&lt;br /&gt;
&lt;em&gt;rgb = Hex$(.Red) &amp; " : " &amp; Hex$(.Green) &amp; " : " &amp; Hex$(.Blue)&lt;br /&gt;
hsl = Hex$(.Hue) &amp; " : " &amp; Hex$(.Saturation) &amp; " : " &amp; Hex$(.Luminance)&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
AppendTable で styles を省略して16行16列の表を作成しようとすると「列の幅が不正です - 左余白と右余白を確認してください」が表示され終了してしまいました。&lt;br /&gt;
(Notes 8.0.1 Basic版で確認)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-8091770218661514740?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0rhiYTSGSwANsRFXiIDIlV8l5WY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0rhiYTSGSwANsRFXiIDIlV8l5WY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0rhiYTSGSwANsRFXiIDIlV8l5WY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0rhiYTSGSwANsRFXiIDIlV8l5WY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/ttj2SqTwHtk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/8091770218661514740/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/notescolor.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/8091770218661514740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/8091770218661514740?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/ttj2SqTwHtk/notescolor.html" title="NotesColor の色見本表を作る" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/notescolor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACRXc6fSp7ImA9WxBUFk8.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-281691091701986812</id><published>2010-03-03T22:09:00.000+09:00</published><updated>2010-03-03T22:09:24.915+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-03T22:09:24.915+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>新規文書にリッチな初期値を設定する</title><content type="html">新規文書を作成するときに、リッチテキスト・フィールドへ初期値を設定しておきたい場合があります。&lt;br /&gt;
&lt;br /&gt;
もちろんリッチテキスト・フィールドにもデフォルト値を設定できますが、値は文字列でなければなりません。&lt;br /&gt;
&lt;br /&gt;
もし初期値として色つきの文字や特定のフォントにしたり、表やリンク、あるいは添付ファイルを張り付けておきたい、などといった場合は作りこみが必要です。&lt;br /&gt;
&lt;br /&gt;
そこで、初期値としてのひな型を作成する機能と、作成したひな型のリッチテキストフィールドの内容をコピーして編集モードで開いている文書へペーストする機能を作ってみました。&lt;br /&gt;
&lt;br /&gt;
テンプレートを編集するフォーム "Template" を作ります。&lt;br /&gt;
フィールドは２つ、テキストの"Subject"とリッチテキストの"Body"を追加します。&lt;br /&gt;
"Subject"は読み込みモードの時とクリップボードへコピーする時に非表示になるよう設定します。&lt;br /&gt;
&lt;br /&gt;
テンプレートを選択するためのビュー"Templates"を作ります。&lt;br /&gt;
ビューの1列目に"Subject"を表示します。&lt;br /&gt;
&lt;br /&gt;
次は新規文書を作成するアクションボタンの Lotus Script です。&lt;br /&gt;
ここではひな型の名前等を固定で指定しちゃっています。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim tdoc As NotesDocument
    Dim ss As New NotesSession
    Dim db As NotesDatabase
    Dim vw As NotesView
    Dim templateName$
    Set db = ss.CurrentDatabase
    Set vw = db.GetView( "Templates" )
    Set tdoc = vw.GetDocumentByKey( "Default Template", True )
    If tdoc Is Nothing Then Exit Sub
    Dim uidoc As NotesUIDocument
    Set uidoc = ws.EditDocument( False, tdoc, True )
    Call uidoc.SelectAll
    Call uidoc.Copy
    Call uidoc.Close( True )
    Dim cuidoc As NotesUIDocument
    Set cuidoc = ws.ComposeDocument( db.Server, db.FilePath, "MainTopic")
    Call cuidoc.GotoField( "Body" )
    Call cuidoc.Paste
End Sub&lt;/pre&gt;これを実行すると、画面が一瞬フラッシュしたように見えることがありますが、それは気にしちゃいけません。&lt;br /&gt;
もし NotesUIDocument.Visible といったプロパティがあって、False をセットすると非表示にできちゃったりなんかすると解決できそうなんですが...&lt;br /&gt;
&lt;br /&gt;
次は編集モードで開いている文書へひな型を挿入したい場合にアクションボタンへ記述する Lotus Script です。&lt;br /&gt;
このボタンは読み込みモードのときに非表示にします。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim cuidoc As NotesUIDocument
    'リッチテキスト"Body"に挿入点がない場合はエラー
    Set cuidoc = ws.CurrentDocument
    If cuidoc.CurrentField &lt;&gt; "Body" Then
        Messagebox "現在の項目へは挿入できません。",, "エラー"
        Exit Sub
    End If
    'ひな型を選択する
    Dim ss As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim tdoc As NotesDocument
    Set db = ss.CurrentDatabase
    Set dc = ws.PickListCollection( 3, False, 
    db.Server, db.FilePath, "Templates", _
    "選択", "ひな型を選択してください。" )
    If dc.Count = 0 Then Exit Sub
    Set tdoc = dc.GetFirstDocument
    'ひな型をクリックボードへコピーする
    Dim uidoc As NotesUIDocument
    Set uidoc = ws.EditDocument( False, tdoc, True )
    Call uidoc.SelectAll
    Call uidoc.Copy
    Call uidoc.Close( True )
    'クリップボードからペーストする
    Call cuidoc.Paste
End Sub&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-281691091701986812?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gz-ZJoG-hgWfLZjLgP4WovByvb4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gz-ZJoG-hgWfLZjLgP4WovByvb4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gz-ZJoG-hgWfLZjLgP4WovByvb4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gz-ZJoG-hgWfLZjLgP4WovByvb4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/U1Au4yK14oE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/281691091701986812/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/blog-post.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/281691091701986812?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/281691091701986812?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/U1Au4yK14oE/blog-post.html" title="新規文書にリッチな初期値を設定する" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8CSHs8eSp7ImA9WxBUFU4.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-2524046698230747014</id><published>2010-03-02T22:01:00.000+09:00</published><updated>2010-03-02T22:01:09.571+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-02T22:01:09.571+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>PANIC: pool free chain が無効です</title><content type="html">サーバーにあるアプリケーションの既存文書をビュー上でダブルクリックして開いたところ、NSD が起動され Lotus Notesが終了する現象が発生しました。&lt;br /&gt;
(Notes 8.0.1 Basic版にて、特定の文書だけで再現性あり)&lt;br /&gt;
&lt;br /&gt;
NSD で出力されたログの FATAL THREAD には次の記載がありました。&lt;br /&gt;
 [ 1] 0x76fe9a94 ntdll.KiFastSystemCallRet+0 (600,493e0,0,d8fe854)&lt;br /&gt;
 [ 2] 0x7601c1b2 kernel32.WaitForSingleObject+18 (600,493e0,3,d8fea70)&lt;br /&gt;
@[ 3] 0x601a5754 nnotes.OSRunExternalScript@8+1284 (12c,1)&lt;br /&gt;
@[ 4] 0x601a5bea nnotes.FRTerminateWindowsResources+986 (1,0,1010,1)&lt;br /&gt;
@[ 5] 0x601a5faf nnotes.OSFaultCleanupExt@24+895 (22a4dd8,1010,0,0,0,d8feda0)&lt;br /&gt;
@[ 6] 0x601a603a nnotes.OSFaultCleanup@12+26 (0,1010,0)&lt;br /&gt;
@[ 7] 0x601b12a4 nnotes.OSNTUnhandledExceptionFilter@4+276 (d8ffdd8)&lt;br /&gt;
@[ 8] 0x6017aca8 nnotes.Panic@4+520 (60bb0f62)&lt;br /&gt;
@[ 9] 0x60656400 nnotes.HandleBadFreeChain@4+640 (d342c4c)&lt;br /&gt;
@[10] 0x6000306d nnotes.FreeDBlock@12+429 (d34008a,373196d9,d342c4c)&lt;br /&gt;
@[11] 0x6065662e nnotes.OSFreeDBlockWithSize@16+78 (60e9cb7a,1466c,1314,1)&lt;br /&gt;
@[12] 0x60656662 nnotes.OSFreeDBlockExt@12+34 (60e9cb7a,1466c,1)&lt;br /&gt;
@[13] 0x601a98dc nnotes.DPoolFree@8+76 (f9ca8de,1)&lt;br /&gt;
@[14] 0x600067fc nnotes.Discard@4+364 (f9ca8d0)&lt;br /&gt;
@[15] 0x60008063 nnotes.OSMemoryFree@4+179 (f010a656)&lt;br /&gt;
 &lt;br /&gt;
上記のいくつかのキーワードでIBMのサイトを検索したところ、Standard版で似たような状況が発生していることがわかりました。&lt;br /&gt;
&lt;a href="http://www-01.ibm.com/support/docview.wss?rs=475&amp;context=SSKTWP&amp;dc=DB560&amp;dc=DB520&amp;uid=swg21348199&amp;loc=en_US&amp;cs=UTF-8&amp;lang=en&amp;rss=ct475lotus"&gt;Lotus Notes 8 (Standard Configuration) crashes when user accepts meeting invitation or update&lt;/a&gt;&lt;br /&gt;
 &lt;br /&gt;
この情報によると、ローカルにあるアドレス帳(names.nsf) のODSバージョンが古い（20 or 41）場合、圧縮すると解決するようです。&lt;br /&gt;
 &lt;br /&gt;
そこでコマンドプロンプトから ncompact を実行しました。&lt;br /&gt;
ODSバージョンを変換するため、-C オプションを付けます。&lt;br /&gt;
 &lt;br /&gt;
ncompact -c names.nsf&lt;br /&gt;
 &lt;br /&gt;
圧縮前のODSバージョンは 41 でしたが、実行後は 43 になりました。&lt;br /&gt;
 &lt;br /&gt;
これでもまだ再現するようです。&lt;br /&gt;
 &lt;br /&gt;
そこで 8 のODSバージョンになるよう notes.ini ファイルへ次の1行を追加して、再度 -C 付きで ncompact を実行しました。&lt;br /&gt;
 &lt;br /&gt;
Create_R8_Databases=1&lt;br /&gt;
 &lt;br /&gt;
これでODSバージョンが 48 になり、当該文書は無事開くようになりました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-2524046698230747014?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/me_wnOVFZRoGg5evNcYG_jcVBHs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/me_wnOVFZRoGg5evNcYG_jcVBHs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/me_wnOVFZRoGg5evNcYG_jcVBHs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/me_wnOVFZRoGg5evNcYG_jcVBHs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/sfwk7Vpur50" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/2524046698230747014/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/panic-pool-free-chain.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/2524046698230747014?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/2524046698230747014?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/sfwk7Vpur50/panic-pool-free-chain.html" title="PANIC: pool free chain が無効です" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/panic-pool-free-chain.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIHSXs6fCp7ImA9WxBUFEk.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-5952471200061093774</id><published>2010-03-01T22:02:00.000+09:00</published><updated>2010-03-01T22:02:18.514+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-01T22:02:18.514+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>True と False を数値で判定する</title><content type="html">If Then Else ステートメントを使って条件が True か False のどちらになるかを調べたいとき、条件式の結果が 0 なら False, それ以外は True となることを知っているとシンプルに記述できる場合があります。&lt;br /&gt;
&lt;br /&gt;
では0以外の数値が True として扱われていることを次のエージェントで確かめてみます。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    Dim intValue As Integer

    intValue = 6
    If intValue Then
        Print Cstr( intValue ) &amp; " は True です。"
    Else
        Print Cstr( intValue ) &amp; " は False です。"
    End If

    intValue = 0
    If intValue Then
        Print Cstr( intValue ) &amp; " は True です。"
    Else
        Print Cstr( intValue ) &amp; " は False です。"
    End If

    intValue = -1
    If intValue Then
        Print Cstr( intValue ) &amp; " は True です。"
    Else
        Print Cstr( intValue ) &amp; " は False です。"
    End If
End Sub&lt;/pre&gt;上記の結果は&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;6 は True です。&lt;br /&gt;
0 は False です。&lt;br /&gt;
-1 は True です。&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
となりました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ところで True か False かを表すデータ型 Boolean の値は計算することができるのでしょうか。&lt;br /&gt;
&lt;br /&gt;
下のエージェントで確認してみます。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    Dim bolValue As Boolean
    bolValue = True
    Print Cstr( bolValue ) &amp; " に 1 を掛けると " &amp; Cstr( bolValue * 1 ) &amp; " です。"

    bolValue = False
    Print Cstr( bolValue ) &amp; " に 1 を掛けると " &amp; Cstr( bolValue * 1 ) &amp; " です。"
End Sub&lt;/pre&gt;上の結果は&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;True に 1 を掛けると -1 です。&lt;br /&gt;
False に 1 を掛けると 0 です。&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
となりました。&lt;br /&gt;
&lt;br /&gt;
きちんと計算できました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-5952471200061093774?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AYrJ23PCvyzrQuiAF2uMhMvnJh4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AYrJ23PCvyzrQuiAF2uMhMvnJh4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AYrJ23PCvyzrQuiAF2uMhMvnJh4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AYrJ23PCvyzrQuiAF2uMhMvnJh4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/ADdMVmcOo-Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/5952471200061093774/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/03/true-false.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5952471200061093774?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/5952471200061093774?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/ADdMVmcOo-Y/true-false.html" title="True と False を数値で判定する" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/03/true-false.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUNSXY9cCp7ImA9WxBUEEw.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-6804823035965057982</id><published>2010-02-24T21:58:00.000+09:00</published><updated>2010-02-24T21:58:18.868+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-24T21:58:18.868+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>ビューの書き出しを無効にする</title><content type="html">フォームの印刷は禁止にできてもビューの書き出しは禁止できませんでしたが、Notes 8.0.2 からはビューの書き出しを禁止にすることができるようになっています。&lt;br /&gt;
&lt;br /&gt;
アプリケーションのプロパティから[詳細]タブを開き、「ビューのデータの書き出しを無効にする」を有効にすることで Lotus Notes のメニューに「ファイル - 書き出し」が表示されなくなります。&lt;br /&gt;
&lt;br /&gt;
このプロパティ項目の設定も&lt;a href="http://harunakano.blogspot.com/2010/02/blog-post_23.html"&gt;先日ご紹介した&lt;/a&gt;アイコンの絵柄と同じ Note に保存されています。&lt;br /&gt;
&lt;br /&gt;
「ビューのデータの書き出しを無効にする」を有効にすると $DisableExport というアイテムができ、値に"1"がセットされます。無効にするとアイテムがなくなりました。&lt;br /&gt;
(Notes 8.5.1 Standard版 で確認)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-6804823035965057982?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0zLCs7eq-FA8Y3ucrM7BqN4OzU4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0zLCs7eq-FA8Y3ucrM7BqN4OzU4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0zLCs7eq-FA8Y3ucrM7BqN4OzU4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0zLCs7eq-FA8Y3ucrM7BqN4OzU4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/KehUAJX7SxI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/6804823035965057982/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/02/blog-post_24.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/6804823035965057982?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/6804823035965057982?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/KehUAJX7SxI/blog-post_24.html" title="ビューの書き出しを無効にする" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/02/blog-post_24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8FRno8fyp7ImA9WxBVGU4.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-8709262601301297440</id><published>2010-02-23T21:50:00.002+09:00</published><updated>2010-02-23T22:13:37.477+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-23T22:13:37.477+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>アプリケーションのプロパティを変える</title><content type="html">アプリケーション内では、データと同様に設計要素にも NoteID が割り当てられます。&lt;br /&gt;
通常、文書に割り振られる NoteID は、UNID とは違い、レプリカであっても同じ NoteID にはならないそうです。&lt;br /&gt;
&lt;br /&gt;
しかしながら、アイコンの絵柄が保存される Note はどのアプリケーションにも同じ NoteID が割り振られ、&lt;br /&gt;
&lt;br /&gt;
NotesDatabase.GetDocumentByID( "FFFF0010" )&lt;br /&gt;
&lt;br /&gt;
とすることで NotesDocument オブジェクトとして取得できます。&lt;br /&gt;
&lt;br /&gt;
ところで、この Note にはアイコンの図柄のほかにアプリケーションのプロパティの一部も保存されているのをご存知でしょうか。&lt;br /&gt;
&lt;br /&gt;
アプリケーションのプロパティにあるラジオボタンやチェックボックスなどで選択された値の一部は $Flags というアイテムに英数字で保存されています。&lt;br /&gt;
&lt;br /&gt;
もちろん、これらの値は変更できます。&lt;br /&gt;
&lt;br /&gt;
下の Lotus Script では、プロパティにある5つのチェックボックスを無効にします。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Initialize
    Dim ss As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim item As NotesItem

    Set db = ss.CurrentDatabase
    Set doc = db.GetDocumentByID( "FFFF0010" )
    Set item = doc.GetFirstItem( "$Flags" )
    Print item.Text
    Dim strFind( 4 ) As String
    Dim strReplace( 0 ) As String
    strFind( 0 ) = "N" '文書データの圧縮
    strFind( 1 ) = "q" 'データベース設計の圧縮
    strFind( 2 ) = "H" '返答スレッド履歴のサポート
    strFind( 3 ) = "7" 'データベースで多くのフィールドを許可
    strFind( 4 ) = "2" '文書テーブルマップの最適化
    strReplace( 0 ) = ""
    item.Values = Replace( item.Values, strFind, strReplace )
    Call doc.Save( True, False )
End Sub&lt;/pre&gt;&lt;br /&gt;
それぞれのプロパティの項目とその値は下のサイトなどを参照ください。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www-06.ibm.com/jp/domino04/lotus/support/faqs/faqs.nsf/all/732271"&gt;（参考）プログラムを使用してデータベースプロパティを変更する方法&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://woonjas.linuxnerd.org/web/woonblog.nsf/d6plinks/NWEA-7LX2Z5"&gt;Programmatically change database properties&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-8709262601301297440?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/waEp1w28a1z48-gZR4SeYwq9LZI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/waEp1w28a1z48-gZR4SeYwq9LZI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/waEp1w28a1z48-gZR4SeYwq9LZI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/waEp1w28a1z48-gZR4SeYwq9LZI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/LM6A0Rc_SIE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/8709262601301297440/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/02/blog-post_23.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/8709262601301297440?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/8709262601301297440?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/LM6A0Rc_SIE/blog-post_23.html" title="アプリケーションのプロパティを変える" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/02/blog-post_23.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4CQn44cSp7ImA9WxBVGEk.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-17820430341166444</id><published>2010-02-22T21:46:00.001+09:00</published><updated>2010-02-22T22:06:03.039+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-22T22:06:03.039+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>ブレークポイントを削除したい</title><content type="html">Lotus Script をデバッグするときに、特定の行で F9 を押すなどしてブレークポイントを設定することがあります。&lt;br /&gt;
&lt;br /&gt;
このブレークポイントは、ユーザープリファレンス - [基本]タブ - 追加のオプションの「LotusScript デバッガのブレークポイントを保持する」を有効にすると保持することができます。&lt;br /&gt;
&lt;br /&gt;
ところで、どこに「保持」されるのでしょうか？&lt;br /&gt;
&lt;br /&gt;
実はアプリケーション内に "breakpoint_" という名前のプロフィール文書として保存されています。&lt;br /&gt;
&lt;br /&gt;
プロフィール文書は &lt;a href="http://www-10.lotus.com/ldd/sandbox.nsf/ecc552f1ab6e46e4852568a90055c4cd/2791869f4e1d3fa385256f2c00432973?OpenDocument&amp;Highlight=0,n%3Ftespeek"&gt;NotesPeek&lt;/a&gt; などで確認できますが、たまたま見たアプリケーションに自身が作成した "breakpoint_" が残っていたりすると、削除したい衝動に駆られてしまうのです...&lt;br /&gt;
&lt;br /&gt;
小さいことですが、気になってしまうのはしょうがない。&lt;br /&gt;
&lt;br /&gt;
そこで "breakpoint_" を削除するエージェントを作成しましたのでご紹介します。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;(Options)
%INCLUDE "LSCONST.LSS"

Sub Initialize
    Dim ws As New NotesUIWorkspace
    Dim varDB As Variant
    On Error Goto ERRORTRAP
    varDB = ws.Prompt( 13, "選択", "アプリケーションを選択してください。" )
    If Isempty( varDB ) Then Exit Sub
    Dim db As New NotesDatabase( "", "" )
    If Not db.Open( varDB( 0 ), varDB( 1 )) Then Exit Sub
    Dim nc As NotesNoteCollection
    Set nc = db.CreateNoteCollection( False )
    nc.SelectProfiles = True
    Call nc.BuildCollection
    If nc.Count = 0 Then
        Print "プロフィール文書は見つかりませんでした"
        Exit Sub
    End If
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Set dc = db.GetProfileDocCollection("hogehoge") '0件で初期化
    nid = nc.GetFirstNoteId
    For i = 1 To nc.Count
        Set doc = db.GetDocumentByID( nid )
        If doc.NameOfProfile = "breakpoints_" Then
            Call dc.AddDocument( doc )
        End If
        nid = nc.GetNextNoteId( nid )
    Next
    Dim intCount As Integer
    intCount = dc.Count
    If intCount &gt; 0 Then
        Call dc.RemoveAll( True )
        Print Cstr( intCount ) &amp; " 件の breakpoint_ を削除しました。"
    Else
        Print "breakpoint_ は見つかりませんでした"
        Exit Sub
    End If
FINAL:
    Exit Sub
ERRORTRAP:
    Print Getthreadinfo( LSI_THREAD_PROC ) &amp; ", " &amp; Erl &amp; ", " &amp; Err &amp; ", " &amp; Error
    Resume FINAL
End Sub&lt;/pre&gt;&lt;br /&gt;
ところで、このエージェントをテストしようと以前のエントリの関係で作ったアプリケーションを選択したところ nc.BuildCollection で「フィールドが大きすぎる(32K)、またはビューの列と選択式が大きすぎます。」というエラーになりました。&lt;br /&gt;
（ODSバージョンが 43 (R6)で Local にあるアプリケーション、クライアントは 8.0.1 のBasic版）&lt;br /&gt;
&lt;br /&gt;
まあ 32K制限に引っかかる文書がアプリケーション内にある場合、関係のないNoteCollectionのビルドでもエラーになることもあるのね、ということで深入りしないことにします...&lt;br /&gt;
&lt;br /&gt;
そんなアプリケーションでもどうしても削除した場合は NotesPeek 等で noteID を調べて NotesDatabase.GetDocumentByID( "noteID" ) で取得した文書を削除してください。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-17820430341166444?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3ccJ4Ipz6E0w38DMhLeSou-fXUo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3ccJ4Ipz6E0w38DMhLeSou-fXUo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3ccJ4Ipz6E0w38DMhLeSou-fXUo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3ccJ4Ipz6E0w38DMhLeSou-fXUo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/QogSdiaGKZc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/17820430341166444/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/02/blog-post_22.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/17820430341166444?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/17820430341166444?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/QogSdiaGKZc/blog-post_22.html" title="ブレークポイントを削除したい" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/02/blog-post_22.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEFSH89fSp7ImA9WxBVFUo.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-7553856231233093951</id><published>2010-02-19T20:06:00.000+09:00</published><updated>2010-02-19T20:06:59.165+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-19T20:06:59.165+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>MailAddress @コマンドって便利</title><content type="html">メールアドレスを選択するようなフォームで、ドミノディレクトリからユーザーを選択させたい場合 MailAddress @コマンドが便利です。&lt;br /&gt;
&lt;br /&gt;
フォーム上に SendTo、CopyTo、BlindCopyTo という名前のフィールドがある場合&lt;br /&gt;
&lt;br /&gt;
    &lt;em&gt;@Command([MailAddress])&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
で表示されるダイアログで各フィールドへ設定するNotesIDを選択できます。&lt;br /&gt;
&lt;br /&gt;
このとき、フォーム上に BlindCopyTo がなければ、宛先とccだけが選択できるダイアログが表示されます。&lt;br /&gt;
&lt;br /&gt;
宛先がなく、ccとbccだけが選択できるダイアログを表示したい場合、SendToフィールドを作らなければいいようです。&lt;br /&gt;
&lt;br /&gt;
このダイアログでは、個人のアドレス帳やディレクトリアシスタンスで指定されているディレクトリを選択できるし、&lt;br /&gt;
フラットな「名前によるリスト」、組織階層別に表示できる「組織の階層」など、ビューが選択できるところが気に入っています。&lt;br /&gt;
&lt;br /&gt;
このように便利なコマンドなのですが、さらに便利なことに宛先、cc、bccのフィールド名をパラメータで指定できるのです。&lt;br /&gt;
&lt;br /&gt;
    &lt;em&gt;@Command([MailAddress];"EnterSendTo";"EnterCopyTo";"EnterBlindCopyTo")&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
1つ目のパラメータが宛先、2つ目がcc、3つ目がbccになります。&lt;br /&gt;
&lt;br /&gt;
パラメータを指定する場合、フィールド名は任意の名前でいいようです。&lt;br /&gt;
&lt;br /&gt;
フィールド名にはヌル "" を指定できます。&lt;br /&gt;
&lt;br /&gt;
例えば1つ目のパラメータをヌルにした場合、SendTo という名前のフィールドがあれば宛先は設定できますが、なければ設定できなくなります。&lt;br /&gt;
&lt;br /&gt;
メールのテンプレートを覗くとパラメータが設定されているのですが、パラメータを指定できることはデザイナーヘルプに記載がありません...orz&lt;br /&gt;
&lt;br /&gt;
よくあることですね、はい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-7553856231233093951?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mynEjoS8-WdVwRiiWcMviL5aI9Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mynEjoS8-WdVwRiiWcMviL5aI9Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mynEjoS8-WdVwRiiWcMviL5aI9Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mynEjoS8-WdVwRiiWcMviL5aI9Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/_T3e9H0VD7c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/7553856231233093951/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/02/mailaddress.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/7553856231233093951?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/7553856231233093951?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/_T3e9H0VD7c/mailaddress.html" title="MailAddress @コマンドって便利" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/02/mailaddress.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcEQXw_eyp7ImA9WxBVFU0.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-7158444834302351253</id><published>2010-02-18T23:06:00.000+09:00</published><updated>2010-02-18T23:06:40.243+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-18T23:06:40.243+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>親文書を削除をさせない</title><content type="html">&lt;a href="http://harunakano.blogspot.com/2010/02/blog-post_17.html"&gt;前回のエントリ&lt;/a&gt;では、親文書が削除されてしまった子文書の数を調べるLotus Scriptをご紹介しましたが...&lt;br /&gt;
&lt;br /&gt;
そもそも子文書があるのに親文書が削除できてしまう仕様が問題なんだよ、なんて言われちゃう場合もあります。&lt;br /&gt;
&lt;br /&gt;
そこで、削除しようとしている文書に関連する子文書があるとメッセージを表示して削除できなくする方法をご紹介します。&lt;br /&gt;
&lt;br /&gt;
文書の削除を認識するにはデータベーススクリプトの Querydocumentdelete というイベントを利用します。&lt;br /&gt;
&lt;br /&gt;
このイベントに書かれた処理は、文書を削除する前に実行されます。&lt;br /&gt;
&lt;br /&gt;
例えば、ビュー上で複数の文書にチェックを付け、Delete キーを押した直後に実行されます。&lt;br /&gt;
&lt;br /&gt;
選択した削除対象の文書は NotesUIDatabase クラスの Documents プロパティで取得できます。&lt;br /&gt;
&lt;br /&gt;
削除対象の文書( NotesDocument ) を親とする返答文書（子文書）は NotesDocument クラスの Responses プロパティで取得できます。&lt;br /&gt;
&lt;br /&gt;
返答文書があれば、Responses の件数( Count )が0より大きくなりますが、その場合にメッセージを表示します。&lt;br /&gt;
&lt;br /&gt;
この時 Continue に False を設定することで削除をキャンセルできます。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
    Dim dc As NotesDocumentCollection
    Set dc = Source.Documents

    Continue = True
    Dim doc As NotesDocument
    Set doc = dc.GetFirstDocument
    While Not ( doc Is Nothing )
        If doc.Responses.Count &gt; 0 Then
            Messagebox "選択文書の下位に文書があります。", 0 +48 , "警告"
            Continue = False
            Exit Sub
        End If
        Set doc = dc.GetNextDocument( doc )
    Wend
End Sub&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-7158444834302351253?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Yc7lIiRhF6Oj2lJ-ITHuc0eLwvM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Yc7lIiRhF6Oj2lJ-ITHuc0eLwvM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Yc7lIiRhF6Oj2lJ-ITHuc0eLwvM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Yc7lIiRhF6Oj2lJ-ITHuc0eLwvM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/MRoimCL7WEU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/7158444834302351253/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/02/blog-post_18.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/7158444834302351253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/7158444834302351253?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/MRoimCL7WEU/blog-post_18.html" title="親文書を削除をさせない" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/02/blog-post_18.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkANQ38zeyp7ImA9WxBVFEw.&quot;"><id>tag:blogger.com,1999:blog-6551049208804691080.post-4229443462486670518</id><published>2010-02-17T21:45:00.001+09:00</published><updated>2010-02-17T21:46:32.183+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-17T21:46:32.183+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus" /><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="Domino" /><title>迷子の文書を捜す</title><content type="html">文書をディスカッション形式で表示するビューではフォームの種類として「文書」、「返答」、「返答への返答」の3つがよく使われます。&lt;br /&gt;
&lt;br /&gt;
「文書」で作成した文書を"親"とすると、&lt;br /&gt;
「返答」で作成した文書は、「文書」フォームで作成した文書の"子"になり、&lt;br /&gt;
「返答への返答」で作成すると、現在開いている文書の"子"になります。&lt;br /&gt;
&lt;br /&gt;
ややこしいですね。&lt;br /&gt;
&lt;br /&gt;
"親"への返答は"孫"を開いている時には作成しない、といった要件の場合、「返答」を使わず「文書」と「返答への返答」の2つでディスカッションを実現することがあります。&lt;br /&gt;
&lt;br /&gt;
と、前置きはここまでにして、本題です。&lt;br /&gt;
&lt;br /&gt;
ディスカッション形式のビューでは、階層の上にある文書が削除されてしまうと、削除された文書の下の階層にあった文書が表示されなくなります。&lt;br /&gt;
&lt;br /&gt;
このように表示されなくなった文書の数を調べるエージェントを作ってみました。&lt;br /&gt;
&lt;pre name="code" class="vb:nogutter"&gt;(Declarations)
Dim db As NotesDatabase

Sub Initialize
    Dim ss As New NotesSession
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim cnt As Long
    Set db = ss.CurrentDatabase
    Set dc = db.Search( |@IsAvailable($Ref)|, Nothing, 0 )
    If dc.Count = 0 Then Exit Sub
    Set doc = dc.GetFirstDocument
    cnt = 0
    While Not ( doc Is Nothing )
        If Not isActiveRef( doc ) Then cnt = cnt + 1
        Set doc = dc.GetNextDocument( doc )
    Wend
    Print "「" &amp; db.Title &amp; "」の迷子文書は " &amp; Cstr( cnt ) &amp; " 件でした。"
End Sub

Function isActiveRef( doc As NotesDocument ) As Boolean
    Dim parent As NotesDocument
    Dim unid As String
    isActiveRef = True
    unid = doc.GetItemValue( "$Ref" )( 0 )
    Set parent = db.GetDocumentByUNID( unid )
    If parent Is Nothing Then '親が存在しない
        isActiveRef = False
    Else
        If Not parent.IsValid Then '親が削除スタブで存在
            isActiveRef = False
        Else
            If parent.HasItem( "$Ref" ) Then '親の親が存在
                If Not isActiveRef( parent ) Then
                    isActiveRef = False
                End If
            End If
        End If
    End If
End Function&lt;/pre&gt;&lt;br /&gt;
簡単にロジックを説明します。&lt;br /&gt;
&lt;br /&gt;
「返答」「返答への返答」で作成した文書には $Ref というアイテムが自動で作成され、値として返答元文書の UNID が設定されます。&lt;br /&gt;
&lt;br /&gt;
つまり $Ref というアイテムがある文書は子文書というわけです。&lt;br /&gt;
&lt;br /&gt;
$Ref の UNID から親文書を探す、つまり階層をさかのぼっていくわけですが、この時&lt;br /&gt;
・文書が見つからない&lt;br /&gt;
・文書が削除スタブ&lt;br /&gt;
の場合、迷子と認定します。&lt;br /&gt;
&lt;br /&gt;
逆に削除スタブでなく $Ref がない文書に辿りつくことができれば、それは迷子ではありません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6551049208804691080-4229443462486670518?l=harunakano.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fZA_MLnIvojcrx_gW-5s7MVclE8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fZA_MLnIvojcrx_gW-5s7MVclE8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fZA_MLnIvojcrx_gW-5s7MVclE8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fZA_MLnIvojcrx_gW-5s7MVclE8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/oYeh/~4/pSqXGLnDH2I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://harunakano.blogspot.com/feeds/4229443462486670518/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://harunakano.blogspot.com/2010/02/blog-post_17.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/4229443462486670518?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6551049208804691080/posts/default/4229443462486670518?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/oYeh/~3/pSqXGLnDH2I/blog-post_17.html" title="迷子の文書を捜す" /><author><name>二児の父</name><uri>http://www.blogger.com/profile/07482042055279390396</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_0ns7Gc2cAoU/SwvnjzEGWiI/AAAAAAAAAH4/uFpo4hvadT4/S220/%E3%81%AF%E3%82%8B%E3%82%86%E3%81%8D.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://harunakano.blogspot.com/2010/02/blog-post_17.html</feedburner:origLink></entry></feed>

