現在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
これで、ファイルは開けます。ちなみにビュー内の選択文書の取り込みは出来てます。後は、そのデータをエクセルに書き出すだけなのですが
そこが解りません。
それと、現在マイドキュメント内のファイルを読み込んでますが
同じデータを共有リソースの中に保存してあるので、そっちから開きたいのですが、パスをどのように設定すればいいのか解りません。
すみませんが、アドバイスをお願い致します。
No.1ベストアンサー
- 回答日時:
ひとまず、書き出しの方から回答いたします。
エクセルファイルの取得まではできているようですので、今後は「シートオブジェクトの取得」->「セルを指定して処理」の流れでプログラムを作成すればよいと思います。
例えば、作成済みのプログラムの次に以下のコードを追記すれば、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
No.3
- 回答日時:
共有リソースはそちらをさしていたのですね、了解いたしました。
ただし、そうなると、申し訳ありませんが、あまり期待にそえる回答ができなそうです。
共有リソースは、例えば複数のフォームで同じロゴの画像イメージを使いたい場合等に、共有リソースにロゴイメージを1つだけ登録し、各フォームでは共有リソースを参照するという用途に利用いたします。(メンテナンス性とディスクサイズの削減)
また、共有リソースへのパスの指定方法は、申し訳ありませんがちょっと思いつきません。(WebDAVの機能を利用すればできるかもしれませんが、各クライアントに設定が必要になることと、共有リソースは設計要素のため、編集には設計者権限以上が必要となってしまうことから現実的ではないと思います)
どのような要件から、Notes DB上にExcelファイルを共有し、そちらに直接書き込みをしたいのか、ということにもよりますが、対応としては以下の方法が考えられるかと思います。
1. Excelファイルについては、ファイルサーバーで共有する
2. Excelファイルは特定のNotes文書に添付して管理し、書き出し時には一旦ダウンロードして添付しなおすという運用にする
3. (Notes DB内の情報だけでExcelファイルが作成できる場合、)既存のファイルに書き出すのではなく、新規にExcelファイルを作成するロジックを組む
gexさん
回答ありがとうございました!!
無事に、ファイル読み込み→編集→出力 を行うことができました!
本当に助かりました!
ありがとうございます。
ファイルの保持についてですが、
ご指摘のとおり共有フォルダにファイルを保存することにします!
丁寧な説明、有難うございました!
No.2
- 回答日時:
続いて、パスの指定方法について。
「共有リソース」といっているのは、エクスプローラーでマイコンピューターの直下にある「共有ドキュメント」(私の環境は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 )
早速の回答ありがとうございます!
とても丁寧な説明で助かります^^
早速明日試してみたいと思います!
共有リソースの話なのですが、マイドキュメント直下の共有フォルダのことではなく、NotesDB内に存在する共有リソースというものです。
Notes Designerで、作成中のDBの項目画面(ページやフォームなどが表示されているところ)に、共有リソース→(画像 or ファイル etc..)
と設定できる箇所があり、共有リソースに1回データを取り込むと
DB内のいたるところに活用でき、例えば画像ファイルを共有リソースに取り込んで、ページの2箇所にその画像を挿入したとします。
画像自体を修正し更新すると、ページ内に挿入されている画像も全て自動的に更新されるというものです。
今作っているDBはローカルで作っていますが、いずれサーバーにUPするので、マイドキュメントのファイルを参照している現在の形ではなく
DB自体にファイルを保存させ、マイドキュメントにファイルを保持していなくてもデータの出力が行えるようにしたいと考えています。
てっきり、共有リソースというのが,DBが保持するデータの集まりなのかと思っていました。
方法は何でもいいのですが、上記に書いたように、DB自体に元となるEXCELファイルを保持させ
それを参照してきて、データを追加していき、ファイルを出力する。ということがやりたいので、そのためのEXCELファイルの保持方法、参照方法がもし解れば教えて頂けると嬉しいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) Excel VBAについて、 フォルダ内のファイルを全て開きたい場合、 FSOを使えば、Dirは使わ 1 2023/01/27 13:18
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
Teraマクロで日付ディレクトリ...
-
エクセルファイルから指定した...
-
ファイルを並び替えるときの「...
-
エクセル 一括リンクの解除
-
EXCELのVBAで画像を選んだ順に...
-
PDF ファイルが開けません。
-
VLOOKUP関数とネットワークに置...
-
エディタで効率的な切り出し方法
-
Notes 開発で、 excelファイル...
-
エクセル起動時にエラー
-
エクセルVBAでファイルを連...
-
VBAでFileDialogを利用してファ...
-
ハイパーリンクで前回値をひき...
-
ローマ字→カタカナへ変換(エク...
-
コマンドボタンを押すたびに大...
-
マクロ 実行ボタンを押さずに...
-
複数ファイルにある特定のシー...
-
EXCELのセルへ、デジタル時計を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
ファイルを並び替えるときの「...
-
EXCELのVBAで画像を選んだ順に...
-
Teraマクロで日付ディレクトリ...
-
エクセルファイルから指定した...
-
PDF ファイルが開けません。
-
エディタで効率的な切り出し方法
-
エクセルからスキャナVBAで連動...
-
=CELL("filename")で取得したフ...
-
CSVで文字化けしてしまうのを直...
-
VLOOKUP関数とネットワークに置...
-
Excel VBAで自動的にハイパーリ...
-
エクセル 一括リンクの解除
-
ハイパーリンクで前回値をひき...
-
EXCELのマクロを使って、テキス...
-
EXCELで複数のファイルから抽出
-
ミュージックファイルのファイ...
-
Notes 開発で、 excelファイル...
-
Excelでリンクを使用すると#N/A...
おすすめ情報