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

  • 質問

  • 存在しますでしょうか?
    ネット検索しても、旧式なためか、WEBが、普及率低いときに、新発売の言語なためか、
    プロパティや、メソッドなどの説明が見つからずに、困っています。

    Excelシートへの、Form上からの、参照や、エディット機能のコーディングが手間かかるので、
    OLEで、Excelブックの希望のシートを、ユーザーが、コンボボックス選んだら、
    コンボボックスのアイテムと同じ名称の、対応するシート名をOLEが表示するという、
    命令が走り、表示して、ユーザーがOLEをダブルクリックなどで、
    Excelが立ち上がり(立ち上がらないほうがいい、そのままの見た目で記入できればそれに越したことないです。)
    エディットして、保存する機能が必要です。

    これで、Excelシートをエディットできれば、いいレベルと考えています。

    お忙しいところ申し訳ありませんが、具体的なサンプルコードありましたら、
    公開いただけますとうれしいです。
    • 移動 星 睦美 2014年8月6日 8:07 Windows クライアント開発 - 全般 から
    2014年8月6日 6:59

すべての返信

  • フォーラム オペレーターの星 睦美です。
    pokepa1001 さん、投稿ありがとうございます。

    内容から、こちらの質問をVisual Basic に関する話題を扱っているフォーラムに移動させていただきますね。
    フォーラムで役立つ回答がありましたら、投稿者からの[回答としてマーク] をお願いします。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2014年8月6日 8:06
  • VB6でOLEコンテナをプログラムしていると推測してSourceDocSourceItemにそれっぽい説明が

    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!)

    2014年8月6日 14:01
  • 星さん、お忙しいところ、情報いただきましてありがとうございます。

    OLEコントロールをダブルクリックすると、

    ブックのフルパス書かれた、ブックが開くので、開いた後、

    VB6.0に、Excel VBA的に、シート指定して、そのシートが、アクティブになるように命令書けばいいかという案が思いつきました。

    オリジナルソフトがあり、DATAコントロールや、DBGridコントロールなど、Windows7(32ビット)上では、うまくいかず、

    Excel シート風に見せつつ、セルを触って、値をエディットして、保存しないといけないのですが、

    .iniファイルや、.csv定期な役割になう、Excelブックは、3つOpenした状態のアプリなため、

    そもそも、OLEコントロールも使わず、Excel VBA的命令を、VB6.0に書いて、必要なExcel シートを右下に

    小さく表示して、エディットのための、ユーザーインターフェースとすることのアイデアがわきました。

    OLEコントロールの知見がなく、Excel VBAの経験 があるため、 ②の方法で、ユーザー要求を達成しようと思います。

    ありがとうございます。

    2014年8月8日 8:00