質問者
VB6.0 OLE コントロールに、Excelブックを、シート名をプロパティなど指定して表示する方法は?

質問
-
存在しますでしょうか?
ネット検索しても、旧式なためか、WEBが、普及率低いときに、新発売の言語なためか、
プロパティや、メソッドなどの説明が見つからずに、困っています。
Excelシートへの、Form上からの、参照や、エディット機能のコーディングが手間かかるので、
OLEで、Excelブックの希望のシートを、ユーザーが、コンボボックス選んだら、
コンボボックスのアイテムと同じ名称の、対応するシート名をOLEが表示するという、
命令が走り、表示して、ユーザーがOLEをダブルクリックなどで、
Excelが立ち上がり(立ち上がらないほうがいい、そのままの見た目で記入できればそれに越したことないです。)
エディットして、保存する機能が必要です。
これで、Excelシートをエディットできれば、いいレベルと考えています。
お忙しいところ申し訳ありませんが、具体的なサンプルコードありましたら、
公開いただけますとうれしいです。- 移動 星 睦美 2014年8月6日 8:07 Windows クライアント開発 - 全般 から
すべての返信
-
VB6でOLEコンテナをプログラムしていると推測してSourceDocとSourceItemにそれっぽい説明が
Option Explicit 'CmdOpenExcel : Button 'CommonDIalog1 : CommonDialog 'OLE1 : OLEコンテナ 'Combo1 : ComboBox Private Sub CmdOpenExcel_Click() CommonDialog1.Filter = "EXCEL|*.xls" CommonDialog1.ShowOpen If CommonDialog1.FileName <> "" Then Me.OLE1.SourceDoc = CommonDialog1.FileName 'Me.OLE1.Action = 0 '埋め込まれるのでフォーム内で開かれる Me.OLE1.Action = 1 'リンクなので外部で開く Me.Combo1.Enabled = True Me.Combo1.Clear Dim sh As Object For Each sh In Me.OLE1.object.WorkSheets 'EXCELのシート一覧を列挙 Me.Combo1.AddItem sh.Name Next End If End Sub Private Sub Combo1_Click() Me.OLE1.SourceItem = Combo1.Text & "!" & "R1C1:R5C10" 'シート名!R1C1形式で表示するシートと範囲が指定できるっぽい Me.OLE1.Action = 1 End Sub
#Action=0だとシート切り替えがうまくいかないなぁ個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
-
星さん、お忙しいところ、情報いただきましてありがとうございます。
①
OLEコントロールをダブルクリックすると、
ブックのフルパス書かれた、ブックが開くので、開いた後、
VB6.0に、Excel VBA的に、シート指定して、そのシートが、アクティブになるように命令書けばいいかという案が思いつきました。
②
オリジナルソフトがあり、DATAコントロールや、DBGridコントロールなど、Windows7(32ビット)上では、うまくいかず、
Excel シート風に見せつつ、セルを触って、値をエディットして、保存しないといけないのですが、
.iniファイルや、.csv定期な役割になう、Excelブックは、3つOpenした状態のアプリなため、
そもそも、OLEコントロールも使わず、Excel VBA的命令を、VB6.0に書いて、必要なExcel シートを右下に
小さく表示して、エディットのための、ユーザーインターフェースとすることのアイデアがわきました。
OLEコントロールの知見がなく、Excel VBAの経験 があるため、 ②の方法で、ユーザー要求を達成しようと思います。
ありがとうございます。