nsfl10n

Lotus Notes/Domino のブログ。nsf:Notes Storage Facility。l10n:Localization。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告|
  3. トラックバック(-)|
  4. コメント(-)

汎用Excel出力スクリプト

exlexports.png

 ノーツも6.5からCSV出力機能が追加されました(遅いよ)。それはそれで使えるのですが、ノーツのビューに表示されている内容ををエクセルファイルに出力したい。ということを考えたり、クライアント/エンドユーザーからリクエストを頂いたりすることは多いと思います。そして、web上にはそのための多くのtoolが有償・無償問わず公開されています。

 で、いろいろある中で、一番のお気に入りが、Art Yatesの「Export any view to Excel」(on searchdomino)です。ひとつのsub関数で完結し、環境設定一切なしで、これをこのままエージェントに貼り付けてアクションメニューから実行すれば、どこからでも実行可能という、汎用性と移植性が非常に高いscriptです。(スクリプト引用欄の下につづく)

================================

"Export any view to Excel" by Art Yates:

Sub Initialize 'Create an Excel Spreadsheet from any view '11/3/2000 Art Yates Dim Session As New NotesSession ,db As NotesDatabase Dim sourceview As NotesView,sourcedoc As NotesDocument Dim dataview As NotesView, dc As NotesDocumentCollection Dim datadoc As NotesDocument, maxcols As Integer Dim WS As New Notesuiworkspace Dim ViewString As String, Scope As String, GetField As Variant Dim C As NotesViewColumn, FieldName As String, K As Integer,N As Integer Dim xlApp As Variant, xlsheet As Variant, rows As Integer, cols As Integer Dim nitem As NotesItem , entry As NotesViewEntry, vwNav As NotesViewNavigator Dim ShowView() As Variant, i As Integer, VList As Variant, ColVals As Variant Set db = session.CurrentDatabase 'link to current database 'fetch then display a list of views in the database Vlist= db.views K=Ubound(Vlist) 'get size of list Redim Preserve ShowView(K) N=-1 For i = 0 To K If Len(Vlist(i).Name) >0 Then FieldName=Trim(Vlist(i).Name) If Mid(Fieldname,1,1) <>"(" Then 'do not show hidden views N=N+1 ShowView(N) = FieldName End If End If Next i Redim Preserve ShowView(N) 'now sort the list - by default views are listing in the order that they were created For i=0 To N For K=i To N If ShowView(i) > ShowView(k) Then FieldName=ShowView(i) ShowView(i) = ShowView(k) ShowView(k)=FieldName End If Next k Next i viewstring= ws.Prompt(PROMPT_OKCANCELLIST,"List of Views","Choose a View","",ShowView ) If Len(viewstring)=0 Then Exit Sub 'ViewString ="Dan's View" Set dataview = db.getview(ViewString) 'get selected view Set vwnav= dataview.createViewnav() rows = 1 cols = 1 maxcols=dataview.ColumnCount 'how many columns? Set xlApp = CreateObject("Excel.Application") 'start Excel with OLE Automation xlApp.StatusBar = "Creating WorkSheet. Please be patient..." xlApp.Visible = True xlApp.Workbooks.Add xlApp.ReferenceStyle = 2 Set xlsheet = xlApp.Workbooks(1).Worksheets(1) 'select first worksheet 'worksheet title xlsheet.Cells(rows,cols).Value ="View: " + ViewString + ", from Database: " + db.title +", Extract created on: " + Format(Now,"mm/dd/yyyy HH:MM") xlApp.StatusBar = "Creating Column Heading. Please be patient..." rows=2 'column headings starts in row 2 For K=1 To maxcols Set c=dataview.columns(K-1) xlsheet.Cells(rows,cols).Value = c.title cols = cols + 1 Next K Set entry=vwnav.GetFirstDocument rows=3 'data starts in third row Do While Not (entry Is Nothing) For cols=1 To maxcols colvals=entry.ColumnValues(cols-1) 'subscript =0 scope=Typename(colvals) Select Case scope Case "STRING" xlsheet.Cells(rows,cols).Value ="'" + colvals Case Else xlsheet.Cells(rows,cols).Value = colvals End Select Next cols xlApp.StatusBar = "Importing Notes Data - Document " & rows-1 '& " of " & dc.count & "." rows=rows+1 Set entry = vwnav.getnextdocument(entry) Loop xlApp.Rows("1:1").Select xlApp.Selection.Font.Bold = True xlApp.Selection.Font.Underline = True xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select xlApp.Selection.Font.Name = "Arial" xlApp.Selection.Font.Size = 9 xlApp.Selection.Columns.AutoFit With xlApp.Worksheets(1) .PageSetup.Orientation = 2 .PageSetup.centerheader = "Report - Confidential" .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date: &D" .Pagesetup.CenterFooter = "" End With xlApp.ReferenceStyle = 1 xlApp.Range("A1").Select xlApp.StatusBar = "Importing Data from Lotus Notes Application was Completed." 'xlapp.ActiveWorkbook.saveas "c:VX" + Trim(Format(Now,"yyy")) 'save with generated name dataview.clear Set xlapp=Nothing 'stop OLE Set db=Nothing End Sub
This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.

 これが物足りなくなったら、これの高機能版である「Developer Buddy v1.02」をガシガシカスタマイズすれば、自分の欲しいモノができると思います。

「Developer Buddy v1.02」をダウンロードするには、"Click here to download"をクリックしたら、リンク先の下部にある「I have read and accept the terms and conditions」をクリックすると、nsf入りのzipファイルがダウンロードできます。「Developer Buddy」の説明書きはこんな感じです。

================================

 そう、このアプリケーションは、私がまとめたいと思った、すべての例を含んでいます。

 新しいアプリケーションを始めたいと思ったときはいつでも、自分の「Developer's Buddy」の中からピックアップした設計要素をベースに構築します。ここには、自分が作ったcodeや、他から持ってきたcodeが詰まってます。

 このアプリは、ノーツクライアントでもWebブラウザでも実行可能です。また、Excel出力用の標準的なフォームやビューをすべて含みます。そして、Tipsや引用や高度な検索を加えてます。

 以下のリストが、このDBに含まれる様々な機能です。そして、これらを公開してくれた皆様に感謝します。

  • documentのキャッシングを防ぐ(notes.netのスレッドから)
  • 添付ファイルを加えてきちんと表示する (Mark Roden)
  • ページをリフレッシュしたときにアップデートされたTips/引用を加える(George Franceのすごい機能)
  • web のフォームにアドレス帳lookupを加える(Glen S. Orenstein)
  • ブラウザを介してFlashファイルを表示する (Razzak Khan)
  • ページのトップにアクションバーをロックする(Herman Hebbinkによるもうひとつの偉業)
  • ブラウザを介してフォームを印刷する(me)
  • シンプルなキーワードlookupとその管理機能(me)
  • ベーシック & アドバンス検索機能(notes.netのntfをもとに開発)
  • テーブルに文書情報を表示するHTMLビュー, 普通のビューよりブラウザで見た方が良い(TLCC tip)
  • カテゴライズされた/カテゴライズされていない/ひとつのカテゴリのビューの例(me)
  • ブラウザを介したビューのスペーシング
  • エクセル出力機能(Art Yates, Ken Pespisa そしてその他の皆様)
  • 使えそうなイメージリソース(主に標準ノーツテンプレから)
  • 効率的で探跡可能な共有アクション (Scot Haberman)

スポンサーサイト
  1. 2005/05/08(日) 23:05:54|
  2. Designer|
  3. トラックバック:0|
  4. コメント:0
<<全DBを一括管理する | ホーム | デザイナーで設計要素を開いてもプロパティボックスを表示させない方法>>

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://nsfl10n.blog9.fc2.com/tb.php/3-a122a40f
03 | 2017/04 | 05
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

Search

Featured Entries

Recent Entries

Recent Comments

Recent Trackbacks

Archives

Category

Links

Ads

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。