• ベストアンサー

オブジェクトの外部出力

Vbのオブジェクトをファイルに保存したいのですが、方法が解りません。 例えば、スプレットシートの(*.frx)ファイルのようなイメージで、 プログラムから、ある機能を呼んだ際に、ファイルからオブジェクトを 取得して、フォーム等に貼り付けるといったものです。 私の考え方そのものが、間違っているのでしょうか? どなたか、教えください。 ちなみに保存したいものは、"TreeView"の"nodes"です。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

再度、田吾作7です。 うーむ、ユーザコントロールは基本的にユーザが自分の目的にために作成するコントロールだから、、、ベストなサンプルは見当たりませんでした。 しかし、仕様に添ったものではないですが、サンプルのユーザコントロールを配布してるところがありますので、そちらを紹介しますね。 み~くんパパの仕事場 http://www.mitene.or.jp/~sugisita/family/papa/vb/ メジャーなHPだから知ってるかな?(^^;) 今回のことだけに限らず、いいサンプルを配布してるので、見たことがないのであれば、一見の価値ありですよ!! じゃ、がんばってくださいねー

参考URL:
http://www.mitene.or.jp/~sugisita/family/papa/vb/
ks-777
質問者

お礼

サンプルを参考にしながら、いろいろやってみようと思います。 ありがとうございました。

その他の回答 (2)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

TreeViewはWindowsAPIを使用してできるものです。 スプレッドシートはフォームとAPI関数を多用して作られるもので、その中のプロパティ値は独自に保持しています。 状況から察するに、ユーザコントロールを作成してみてはいかがでしょうか? TreeViewを埋め込んだActiveXコントロールを作成したら、手っ取り早いかも?

ks-777
質問者

お礼

ありがとうございます。 まだ経験が浅くユーザコントロールの作成は未経験、その上時間も無かったので、 今回は必要な情報をテキストファイルに出力することで解決しました。 TAGOSAKU7さんのアドバイスは今後の参考にしたいと思います。 やはり、知識の量は物を言いますね。 良かったら、参考になる書籍やURL等を教えて頂けないでしょうか?

  • haporun
  • ベストアンサー率40% (230/562)
回答No.1

オブジェクトやコントロールは、ユーザー定義型の構造体と違って、内部にたくさんの参照を持っています。 参照とはあるデータの格納されたメモリアドレスのことで、これは動的で毎回同じとは限りません。 オブジェクトの値を保存したいときは、プロパティをすべて書き出すぐらいしか手段はないでしょう。

ks-777
質問者

お礼

早速の回答ありがとうございます。 よく考えるとそうですね。 まだ私の理解が足りないようです。 参考になりました。

関連するQ&A

  • オブジェクト

    VBでimage(オブジェクト名:aaa)をクリックした折  aaa_click() ができます    そこでご質問なのですが、クリックしたオブジェクト名を 取得できるのでしょうか?  例えば xxx_click 関数を作成し、 (1) image(オブジェクト名:aaa)をクリックした折      xxx_click()関数に入って オブジェクト名 aaa と取得      (2) 他のimage(オブジェクト名:bbb)をクリックした折も      xxx_click()関数に入って オブジェクト名 bbb と取得 のような xxx_click 関数を作成することは可能でしょうか? 非常に困っています。教えてください

  • VB2005 TreeViewの任意ノード選択

    お世話になっております。 VB2005でWinアプリを開発中です。 ルートノードは1つで、 そこから子、孫、ひ孫・・・と階段状になるTreeViewを作っています。 親   L子      L孫         Lひ孫             ・・・・ このようなツリーに対し、プログラムで任意のノードを選択状態にしたいのですが、 ノードの名称などで一発で指定する方法はありますでしょうか?? 上の例で、「孫」を選択状態にしたい場合、 TreeView1.SelectedNode = TreeView1.Nodes(0).Nodes(0).Nodes(0) と書けば、できることはできるのですが。 他にもっとよい方法があるはずと思うのですが、見つけられませんでした。 VB6.0なら、下記に方法があったのですが・・・ http://oshiete1.goo.ne.jp/qa732490.html よろしくお願いします。

  • ExcelVBA:フォーム2のイメージオブジェクト(画像付)をフォーム1のイメージオブジェクト(画像なし)に表示する方法

    ExcelVBAで、他のフォームのイメージオブジェクトを表示させる方法が分かりません。LoadPicture()を使ってみたのですが、ファイル名を入力しないとダメなのでできませんでした。 例えば、フォーム2の中に画像の付いたイメージオブジェクト「イメージ2」があったとします。 それを、フォーム1の、画像のないイメージオブジェクト「イメージ1」に表示させるにはどうすればよいのでしょうか? 回答よろしくお願いします。

  • MSアクセス VBA クラスオブジェクト内のファイルを削除できない

    MSアクセス VBA クラスオブジェクト内のファイルを削除できない 誤ってフォームを削除してしまいました。 そのフォームに関連したVBのファイル(クラスオブジェクト内)は残ったままです。 それを削除しようとしてもできません。どうしたら削除できますか?

  • 実行画面が消えてしまう?

    WindowsXP、VB6.0でデレクトリをTreeViewに表示するプログラムです。 フォームにTreeViewコントロールとコマンドボタンを貼り付け、 下記のプログラムを実行します。 curFolder.Name に "System Volume Information" がでると エラーになり、それを回避するために "On Error Resume Next"をいれて EXEファイルを作り、実行するとフォームが消えてしまいます。 どなたか教えて下さい。 Private Sub Command1_Click() ' Microsoft Scripting Runtime を参照設定する。 Dim item1 As Node, FsoObj As New scripting.FileSystemObject Set item1 = TreeView1.Nodes.Add(, , , "c:") Call SearchFolder(FsoObj.GetFolder("c:\"), item1) End Sub Private Sub SearchFolder(NextFolder As scripting.Folder,               itemX As Node) On Error Resume Next Dim TreeItem As Node, curFolder As scripting.Folder For Each curFolder In NextFolder.SubFolders ' Debug.Print curFolder.Path Set TreeItem = TreeView1.Nodes.Add(itemX.Index,                tvwChild, , curFolder.Name) Call SearchFolder(curFolder, TreeItem) Next End Sub

  • VB2005 ツリービューに子ノードを追加

    VB2005 ExpressEditionにて開発しています。 フォームロード時にデータセットからツリービューにデータをセット しようとしています。 ルートノードには  Dim Node As TreeNode  Node = TreeView2.SelectedNode  TreeView2.Nodes.Add("追加したい名前") で追加できます。 子ノードを追加する時はどうしたらいいのでしょうか。 ご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • VB2005でフォームに取り込んだデータをCSVファイルを出力したい

    VB2005環境、DBはSQLサーバです。 VB2005でフォームに取り込んだデータをCSVファイルで出力する 機能を付けたいと考えています。 現状は、SqlDataAdapterのFillメソッドでDBから取得したデータをWindowsフォーム上に出力する機能を持っています。 その出力したデータをクリック一つでCSVファイルとして出力したい と考えています。 かなり調べたのですが出来ませんでした。 どなたかご教授よろしくお願いします。

  • VB6.0同一プログラム上で複数のExcelファイルの編集をしたいのですが…

    目にとめていただき有難うございます。 VBについては初心者です。宜しくお願い致します。 VB6.0で、フォーム上で指定した2つのExcelファイルについて、それぞれ特定の行・列を削除してCSVとして保存、そのデータを使って処理を行うプログラムを作成しようとしています。 同じVB6.0のプログラム上で、複数のExcelファイルに対して編集をかけることは可能でしょうか。 プログラムの流れとしては (1)エクセルオブジェクトの新しいインスタンスを作成 (2)エクセルファイル1を開き、特定行を削除する (3)エクセルファイル1をCSVとして保存、閉じる (4)オブジェクトを解放する (5)エクセルオブジェクトの新しいインスタンスを作成 (6)エクセルファイル2を開き、特定行を削除する (7)エクセルファイル2をCSVとして保存する (8)オブジェクトを解放する というものです。 (1)~(4)と(5)~(8)は同じSubプロシージャでファイルのパスだけ変えるようにしています。 (1)~(5)迄は素直に行くのですが、(6)の削除行を指定する段階で ‘Rows’メソッドは失敗しました’_Global’オブジェクト と出てしまう状態です。 (1)~(4)は問題なく動き、ファイル1の編集もきちんと出来ているため、混乱しております。 同じコードでパスだけ変えてやろうという考えが無理な話なのか、コードの組み方が悪いのか… 質問で不明瞭点があれば説明させて頂きますのでご指摘下さい。 宜しくお願い致します。 #ソースまで出した方が良かったのでしょうか…

  • 単一のフォームオブジェクトを外部ファイル(.js)に送る意味?

    とある2つの別ファイル(A.jspとB.jsp)でそれぞれ単一のフォームを使用しています。 そこで各フォームの処理で共通部分を別の外部ファイル(.js)にまとめる場合、例えば。。。フォームの名前を取得してその名前をalertで表示する。。。みたいな処理を外部ファイルに作成します。 A.jsp:<form method='post' name='frmA' onsubmit='return getFrmName(this)'> B.jsp:<form method='post' name='frmB' onsubmit='return getFrmName(this)'> 外部ファイル:共通関数 getFrmName(frm){ alert(frm.name); } ボタンが押されたらalertで表示する。通常なら、”frmA”とか”frmB”って出ます。 ここで、以下のように変更する。 A.jsp:<form method='post' name='frmA' onsubmit='return getFrmName()'> B.jsp:<form method='post' name='frmB' onsubmit='return getFrmName()'> 外部ファイル:共通関数 getFrmName(){ alert(document.forms[0].name); } と、引数のフォームオブジェクトを消して”document.forms[0]”に書き換えた場合でも正常に稼動されます。 その場合、引数なしでも十分なのでは? というか、引数なしの方がより見やすいプログラムになるのでは? また、そのファイルにあるフォーム数を数えるような処理を最初に追加すれば、”document.forms[Index]”:Index(カウントしたフォーム数)にして多重フォームにも対応できるように汎用できそう・・・? 長くなりましたが、上記のタイトルにある通り、フォームオブジェクトを引数とする意味は?できればメリット、デメリット両方があればうれしいです。よろしくお願いします。 <だいたい適当に書いたので多少の省略等はしてますが、ご了承ください>

  • frxファイルの役目

    VB6の開発環境で、拡張子がfrxというVisual Basic Form Binary Fileが出来ますが、何に使われるのですか? 2台のPCで同じプロジェクトの開発をしている際、frmファイルだけをコピーすると、VBでファイルを開く時エラーになることがあります。 frxファイルも同時にコピーする必要があるのでしょうか? 2台のPCのOSは、Win2000とWinXP ProSP2で、XPから2000へコピーした際は問題なく、2000からXPへコピーした際のみ、上記の問題が発生します。 よろしくお願いします。

専門家に質問してみよう