アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在notes7で開発を行っている(初心者)なのですが

ビュー内の選択している文書からデータを取ってきて
読み込んだexcelファイルに書き足していきたいのですが、

任意のexcelを開くところまではネットを参考にして出来たのですが
詳細を理解していないため、そのファイルにデータを書き足していくことが出来ません。アドバイスをお願い致します。

現在作ってあるプログラムが以下です。

' 既存のEXCELワークブックを開く
Dim xlApp As Variant ' Excelオブジェクト
' マイドキュメントの指定ファイルを開く
Dim wsh As Variant, fso As Variant
Dim FilePath As String, FileName As String
Set wsh = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
FilePath = wsh.SpecialFolders("MyDocuments")
FileName = FilePath & "\sample.xls"
If Not fso.FileExists(FileName) Then
Msgbox "ファイルがありません。" & Chr(13) & FileName, 16
Exit Sub
End If
Set xlApp = CreateObject("Excel.Application") ' Excel OLE起動
xlApp.Workbooks.Open FileName
xlApp.Visible = True


これで、ファイルは開けます。ちなみにビュー内の選択文書の取り込みは出来てます。後は、そのデータをエクセルに書き出すだけなのですが
そこが解りません。

それと、現在マイドキュメント内のファイルを読み込んでますが
同じデータを共有リソースの中に保存してあるので、そっちから開きたいのですが、パスをどのように設定すればいいのか解りません。

すみませんが、アドバイスをお願い致します。

A 回答 (3件)

ひとまず、書き出しの方から回答いたします。



エクセルファイルの取得まではできているようですので、今後は「シートオブジェクトの取得」->「セルを指定して処理」の流れでプログラムを作成すればよいと思います。

例えば、作成済みのプログラムの次に以下のコードを追記すれば、Excelに書き出しができると思います。

Dim xlWorksheet As Variant'エクセル・シート
'シート名を指定してシートオブジェクトを取得
Set xlWorkSheet = xlApp.WorkSheets( "Sheet1" )
'セルの1行1列目に「あああああ」という文字をセット
xlWorksheet.cells(1,1).Value = "あああああ"

既に文書の取り込みができているとのことですので、例えば文書オブジェクトがdocだとしたら、以下のコードで実現できるのではないでしょうか。

'文書上のxxxxxフィールドの値を、Excelの1行1列目にセット
xlWorksheet.cells(1,1).Value = doc.GetItemValue( "xxxxx")(0)

蛇足ですが、サイズ幅の変更のような処理も可能です。(マクロをNotes上から実行させるイメージです)

xlWorksheet.cells(1,1).ColumnWidth = 4.13
    • good
    • 0

共有リソースはそちらをさしていたのですね、了解いたしました。


ただし、そうなると、申し訳ありませんが、あまり期待にそえる回答ができなそうです。

共有リソースは、例えば複数のフォームで同じロゴの画像イメージを使いたい場合等に、共有リソースにロゴイメージを1つだけ登録し、各フォームでは共有リソースを参照するという用途に利用いたします。(メンテナンス性とディスクサイズの削減)

また、共有リソースへのパスの指定方法は、申し訳ありませんがちょっと思いつきません。(WebDAVの機能を利用すればできるかもしれませんが、各クライアントに設定が必要になることと、共有リソースは設計要素のため、編集には設計者権限以上が必要となってしまうことから現実的ではないと思います)

どのような要件から、Notes DB上にExcelファイルを共有し、そちらに直接書き込みをしたいのか、ということにもよりますが、対応としては以下の方法が考えられるかと思います。

1. Excelファイルについては、ファイルサーバーで共有する
2. Excelファイルは特定のNotes文書に添付して管理し、書き出し時には一旦ダウンロードして添付しなおすという運用にする
3. (Notes DB内の情報だけでExcelファイルが作成できる場合、)既存のファイルに書き出すのではなく、新規にExcelファイルを作成するロジックを組む
    • good
    • 0
この回答へのお礼

gexさん

回答ありがとうございました!!
無事に、ファイル読み込み→編集→出力 を行うことができました!
本当に助かりました!
ありがとうございます。

ファイルの保持についてですが、
ご指摘のとおり共有フォルダにファイルを保存することにします!

丁寧な説明、有難うございました!

お礼日時:2009/07/30 10:44

続いて、パスの指定方法について。



「共有リソース」といっているのは、エクスプローラーでマイコンピューターの直下にある「共有ドキュメント」(私の環境はWindows XPです)のことでしょうか?

それであれば、以下のように絶対パスを指定するのもありかもしれません。

FileName = "C:\Documents and Settings\All Users\Documents\sample.xls"

また、頻繁に更新ファイル先を変える場合には、以下のように都度Fileパスとシート名をセットさせるのも手かもしれません。

Dim filenames As Variant'ファイルパス&ファイル名
Dim sheetName As String'シート名
Dim objXL As Variant'エクセル・ファイル
Dim xlWorksheet As Variant'エクセル・シート

Dim ws As New NotesUIWorkspace

'ファイルの指定
filenames = ws.OpenFileDialog( False, "上書きするファイルを選択してください",, )

If Not( Isarray( filenames ) ) Then
Msgbox "処理を終了します"
Exit Sub
End If

'シート名の指定
sheetName = Inputbox$("読み込みを実施するシート名を入力ください")

'エクセルファイルの読み込み処理
Set objXL = getObject( filenames(0) )
'シートの読み込み処理
Set xlWorkSheet = objXL.WorkSheets( sheetName )
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!

とても丁寧な説明で助かります^^
早速明日試してみたいと思います!

共有リソースの話なのですが、マイドキュメント直下の共有フォルダのことではなく、NotesDB内に存在する共有リソースというものです。

Notes Designerで、作成中のDBの項目画面(ページやフォームなどが表示されているところ)に、共有リソース→(画像 or ファイル etc..)
と設定できる箇所があり、共有リソースに1回データを取り込むと
DB内のいたるところに活用でき、例えば画像ファイルを共有リソースに取り込んで、ページの2箇所にその画像を挿入したとします。
画像自体を修正し更新すると、ページ内に挿入されている画像も全て自動的に更新されるというものです。

今作っているDBはローカルで作っていますが、いずれサーバーにUPするので、マイドキュメントのファイルを参照している現在の形ではなく
DB自体にファイルを保存させ、マイドキュメントにファイルを保持していなくてもデータの出力が行えるようにしたいと考えています。

てっきり、共有リソースというのが,DBが保持するデータの集まりなのかと思っていました。

方法は何でもいいのですが、上記に書いたように、DB自体に元となるEXCELファイルを保持させ
それを参照してきて、データを追加していき、ファイルを出力する。ということがやりたいので、そのためのEXCELファイルの保持方法、参照方法がもし解れば教えて頂けると嬉しいです。

お礼日時:2009/07/29 22:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!