• ベストアンサー

VBからExcelに書き込む方法

こんにちは。VB6.0(SP5),Excel2000,Win2000でVBの勉強をしています。 VBでコマンドボタンを押した時に、テキストボックスのデータを、Excelに書き込みたいと思っています。 特定のExcelに書き込むことは「GetObject」で出来たのですが、名前がわからない場合はどうしたらよいのでしょうか? ※ExcelはVBから起動したものではなく、人が任意のファイルを起動しています。Excelの名前はわかっていません(任意なので、何かわかりません) このような場合に、VBから書き込むのは可能なのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • aki_aero
  • ベストアンサー率100% (1/1)
回答No.2

'Microsoft Excel への参照を格納する変数を宣言します。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet 'Microsoft Excel が既に起動されているかどうかを調べます。 '第 1 引数を指定せずに GetObject 関数を呼び出すと、 'アプリケーションのインスタンスへの参照が返されます。 'Microsoft Excel が起動されていないと、エラーが発生します。 Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません。" ' エラーが発生した場合は Err オブジェクトをクリアします。 Err.Clear Else ' MsgBox "Excel はすでに起動中です。" Set xlBook = xlApp.Workbooks.Item(1) Set xlSheet = xlBook.Worksheets.Item(1) xlSheet.Cells(3, 5) = Me.Text1.Text End If 上記のプログラムで開いてるエクセルの1つめのブックの1つめのシートにテキストボックスのデータが書き込まれます。 いかがでしょうか?

izumi_charis
質問者

お礼

回答ありがとうございます。 GetObjectは引数なしで使えるのですね。大変参考になりました。ありがとうございます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

ActiveBook、ActiveSheetが使えるかテストしてみました。名前を使っていません。エクセルが起動されているか・アクチブブックが存在するかどうかはチェックなし。 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then MsgBox Form1.Text1.Text Set xlapp = GetObject(, "Excel.Application") 'Set xlbk = xlapp.workbooks("Book1") Set xlbk = xlapp.activeworkbook 'Set xlsh = xlbk.Sheets("sheet1") Set xlsh = xlbk.activesheet xlsh.cells(1, "C") = Form1.Text1.Text End If End Sub 上手く行くようです。 今開かれてアクチブになっているブック・シートにテキストボックスの値を(C1セルに)セットしました。 コメント化した行でも上手く行きます。 Msgboxは確認用。

izumi_charis
質問者

お礼

回答ありがとうございます。参考になりました。

  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.3

>特定のExcelに書き込むことは「GetObject」で出来た >のですが、名前がわからない場合はどうしたらよいの >でしょうか? >※ExcelはVBから起動したものではなく、人が任意の >ファイルを起動しています。Excelの名前はわかって >いません(任意なので、何かわかりません) GetObjectで開いているExcelは掴めたが、 何のブックが開いているか解らないということですね。 Set xlApp = GetObject(, "Excel.Application") の後、 For Each objWbk In xlApp.Workbooks If objWbk.Name = "HOGE.xls" Then ' 目的のブックへの処理 End If Next とすれば開いている中で所望するブックに対して 処理ができます。 開いていなければ未処理で終わらせるとか、 その時点で開くとか、 後は方法を考えて下さい。

izumi_charis
質問者

お礼

回答ありがとうございます。参考になりました。

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1

私だけでしょうか、質問の意味がわからないのは・・・(だいたひかる風) GetObject(, "Excel.Application") を知りたいのでしょうか? >特定のExcelに書き込むことは「GetObject」で出来たのですが、 というのであれば、その部分の抜粋を記さないと、既存が読めません。 現在はGetObjectのパラメータをどのように利用しているのでしょうか?

izumi_charis
質問者

お礼

返答ありがとうございます。 特定のexcelというのは、名前がわかっている場合という意味で書きました。

関連するQ&A

  • VBからエクセルのテキストボックスの名称を取得したい

    VB6.0 SP5 WIN2000 で開発しています。 エクセルのシートに複数のテキストボックスがあります。 そのテキストボックスの名称や数は解らない前提で そのテキストボックスの名称(”テキスト 1”などの)を すべてVBから取得したいのですが、 解る方がいましたら教えてほしいのですが よろしくお願いします。

  • Excel2003 VB コマンドボタン

    Excel2003 VB コマンドボタン VB初心者です。コマンドボタンをクリックしたら、テキストボックス1に入力してあるコードと一致する値を別シートのデータTBからvlookupで呼び出してテキストボックス2に表示したいのですが、うまくいきません。コードの例を教えていただけると助かります。よろしくお願いします。

  • VB6.0でVB上にExcel

    VB上にExcelオブジェクトを貼り付け、特定の条件に当てはまったとき既存のExcelファイルのSheet1を乗せたいという場合は、どうすればいいのでしょうか?

  • VB.NETのリソース内のEXCELを開く方法

    環境  WindowsXpPro VB2008EE Excel2007 VB.NETのリソースに登録したExcelファイルをプログラム中から開く(呼び出す)コードを探しているのですが、なかなか見当たりません。 MSDNも探しましたが、探し方が悪いのか見つかりません。 My.Resources.ResourceManager.GetObjectなどを使うのでしょうか? いずれにせようまくいきません。 御存じのかたがいらっしゃいましたらぜひ教えてください。 よろしくお願いいたします。

  • エクセルの日付について、教えてください。

    エクセルの日付について、お伺いしたいのですが、 ユーザーホームにて、テキストボックスを三つ作り、 その、おのおのに、任意の数字をいれて、ユーザーホームのコマンドボタンを押すと、その三つの数字を合わせてできた数字を日付として、シートに表示したいのですが、コマンドボタンの、VBAはどのように記述すればいいのか、教えていただけませんか? 例  テキストボックス1←2007 テキストボックス1←09(※09は9でもかまいません) テキストボックス1←05 コマンドボタンを押す。 シート→2007/09/05(日付として認識してほしい。) 解りにくいかも知れませんがよろしくお願いいたします。

  • VBでDOSコマンドを実行し、結果をEXCELシートに貼りたい

    EXCELからVB等を使ってDOSコマンドを実行し、その実行結果を指定したEXCELシートに貼り付けることは出来ますでしょうか?例えば、EXCELシート内に配置したボタンを押すと、DOSコマンド「ipconfig」等が起動され、その出力結果を指定したEXCELシートに貼り付けるという動作をさせたいと考えています。よろしくお願いいたします。

  • EXCELでのVBについて

    EXCELでVBのプログラムを作成していますが、2点ほどわからないことがありまして困っています。 1.EXCEL等でデータを保存するとき、同じファイルがあれば、上書き確認のメッセージボックスが出ます。VBのOpen文で保存 するとき、このメッッセージボックスを出したい。 2.コマンドボタンの機能をファンクションキー(たとえばF1)に割り付けたい。 以上、2点について、よろしくご教示ください。

  • VBからテキストファイル(タブ区切り)をエクセルで開く方法

    VBからテキストファイル(タブ区切り)をエクセルで開く方法を探しています。CSVデータを出力する方法や、テキストファイルを読み込む方法等の情報はたくさんあるのですが、直接エクセルを起動し、それにテキストファイルを出力するのはなかなか見当たらない状況です。 質問の主旨は、もともと、参照ボタンを押下すると、選択されている指定のテキストファイルを保存するダイアログが出力される仕組みであったものを、どうせ開くのはエクセルだからと言うユーザーの要望から、参照ボタンクリックと同時にエクセルが起動し指定のテキストファイルをエクセルで開いて見ることができるように改造するといったものです。(参照のみですので読み取り専用で見たい) テキストファイルをドラッグしてエクセルシートに持っていけばタブを認識して格セルに分割して開いてくれるのですが、VBから同じような動作をさせることは可能なのでしょうか? よいヒントになるような情報でもかまいません うまく説明できずわかりにくいかも知れませんがご助言をお願いいたします。 【環境】 WindowsXP、VB6.0、EXCEL2002

  • VB.NETで起動したExcelの閉じ方について

    VB.NET(2003)でExce(2003)を起動し、そのシートに動的コマンドボタンを貼り付けました。 このコマンドボタンには、Excelを閉じ、COMオブジェクトの開放を行うコードを記述しています。 これでうまくExcelは閉じることが出来き、Excelのプロセスも残らないのですが、直接Excelの[×]閉じるボタンで閉じるとExcelのプロセスが残ってしまいます。 これを防止するにはどのようにすればよいでしょうか? どうかよろしく御教示ください。

  • Excelのマクロでコマンドボタンを選択する方法

    Excelのマクロでコマンドボタンを選択する方法 マクロの記述でオブジェクトのコマンドボタンのみを選択するにはどうしたらいいでしょうか? 別のマクロが登録されているボタンを削除するのが目的です。 オブジェクトは他にもテキストや直線などがあり、コマンドボタンのみの特定の仕方がわかりません。 シートも複数あり、コマンドボタンもまちまちな名前がついています。 WinXP Excel2000

専門家に質問してみよう