VisualBasic6.0でGetObject関数を使用しExcel

このQ&Aのポイント
  • VisualBasic6.0でGetObject関数を使用しExcelのマクロを実行させようとしています。
  • マクロの実行はできたのですが、ユーザーが別のエクセルファイルを印刷プレビューで表示したまま、VBのプログラムを実行すると「コンポーネントを使用できません」とメッセージが表示されてしまいます。
  • コンポーネントエラーが発生するとエラーメッセージ「印刷プレビューを閉じてください」が表示されるようにしたいのですが、方法がわからず困っています。
回答を見る
  • ベストアンサー

VisualBasic6.0でGetObject関数を使用しExcel

VisualBasic6.0でGetObject関数を使用しExcelのマクロを実行させようとしています。 (1) Set AppXL = CreateObject("Excel.Application") (2) AppXL.Application.Visible = True (3) Set MyXL = GetObject("C:\伝票.xls") マクロの実行はできたのですが、ユーザーが別のエクセルファイルを 印刷プレビューで表示したまま、VBのプログラムを実行すると(3)で 「コンポーネントを使用できません」とメッセージが表示されてしまいます。 ***コンポーネントを使用できません****************************** 他のアプリケーションがサーバーを使用しているため、この操作を完了 できません。操作を続けるには、[切り替え]を選択して、他の アプリケーションを終了させてください。 [切り替え][再試行] *********************************************************** コンポーネントエラーが発生するとエラーメッセージ「印刷プレビューを 閉じてください」が表示されるようにしたいのですが、方法がわからず 困っています。 (On Error GoTo を使ってもダメでした。) VisualBasic6.0のプログラムで何か良い方法があれば教えてください。

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

  • ベストアンサー
  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

> (1) Set AppXL = CreateObject("Excel.Application") > (2) AppXL.Application.Visible = True > (3) Set MyXL = GetObject("C:\伝票.xls") (1)~(2)は結構ですが、これと(3)は相容れません。 AppXL.Workbooks.Open("C:\伝票.xls")

MekaOsaru3
質問者

お礼

早速「AppXL.Workbooks.Open」を使用したところ 別のExcelファイルが印刷プレビューで開いていても マクロを実行することができるようになりました!! ご回答ありがとうございました。

関連するQ&A

  • VisualBasicについて教えてください。

    VisualBasicを起動するとアプリケーションエラーと表示されてしまいます。 急に起動できなくなり原因がわかりません。 どのような原因の可能性があるのか、またどのようにすれば改善できるのか知りたいです。 VisualBasicのヴァージョンは5です。 よろしくお願いします。

  • Excel 2003 GetObjectを連続で使うとエラー

    以下のVBAを実行したいのですが Private Sub test() Dim objWorkbook1 As Excel.Workbook Dim objWorkbook2 As Excel.Workbook Set objWorkbook1 = GetObject("C:\あいうえお\200706.xls") Set objWorkbook2 = GetObject("C:\かきくけこ\200706.xls")←別の場所にある同じファイル End Sub 「アプリケーション定義またはオブジェクト定義のエラーです。」と 表示されます、GetObjectを2回連続で呼ぶことは 出来ないのでしょうか? よろしくお願いします。

  • エクセルを表示できない

    プログラム初心者です。 Private Sub Command3_Click() On Error Resume Next Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet With xlApp.Application Set xlApp = GetObject("F:\vb6.0\book1.xls") Set xlBook = xlApp.Workbooks.Open("Book1") Set xlSheet = xlBook.Worksheets(1) xlApp.Application.Visible = True End Sub と入力したのですが、実行してボタンをクリックしてもエクセルの表が表示されません。なぜでしょうか?

  • アクセスからエクセルのプロシージャーを実行させたい

    オフィス2007です。 ////////////////////////////////////////////////////////// ‘Excel側の標準モジュール ////////////////////////////////////////////////////////// Sub Excelのプロシージャー() MsgBox "Excelです" End Sub ////////////////////////////////////////////////////////// ‘Access側の標準モジュール ////////////////////////////////////////////////////////// Sub Accessのプロシージャー() Dim xlsWB As Object Dim MyFileName As String MyFileName = "D:\Accessからプロシージャーの実行テスト用ファイル.xlsm" Set xlsWB = GetObject(MyFileName) xlsWB.Application.Run xlsWB.Name & "!Excelのプロシージャー" Set xlsWB = Nothing End Sub の状態で、アクセス側から Accessのプロシージャー実行すると、 ////////////////////////////////////////////////////////// マクロ'Accessからプロシージャーの実行テスト用ファイル.xlsm!Excelのプロシージャー' を実行できません。 このブックでマクロが使用できないか、 またはすべてのマクロが無効になっている可能性があります。 ////////////////////////////////////////////////////////// となります。 エクセル側は、「すべてのマクロを有効にする」にしているし、エクセルファイルを単独で開き、 Excelのプロシージャーを実行すると問題なく動きます。 同じ条件で、2003で検証すると問題なく動きます。(拡張子は適宜変えてます) エクセルのパスが間違ってるのかな?と思い、適当なパスに変えたところ、 「オートメーション操作中にファイル名またはクラス名を見つけられませんでした。(Error 432)」 というエラーがでたので、パスは合ってます。 原因がわかる方、ご回答よろしくお願いします。

  • ExcelからAutoCADへの連携ができない

    ExcelのVBAでAutoCADの操作をしようと勉強中なのですが 参考資料を真似て -------------------------------------------------------- Function acad_int()   On Error Resume Next   Set AcadApp = GetObject(, "AutoCAD.Application") (上の行でERR'429'Activexコンポーネントはオブジェクトを作成できません。のエラー)     If Err Then      Set AcadApp = CreateObject("AutoCAD.Application")       AcadApp.Visible = True     End If   AcadApp.Visible = True End Function ----------------------------------------------------------- コピーしてExcelで実行すると、GetObjectで上記( )内のエラ-メッセージがでます。 参照でAutoCAD 2004 タイプライブラリ にはチェック入れています。 また、AutoCADを起動していても、していなくても同じみたいです。 使用しているのは ・AutoCAD LT2004 ・オフィス2003Excel ですが、何せ初心者で始めたばかりでここから進む事ができません。 どうかお力をお貸しください。

  • VisualBasic2008からExcelの操作の仕方

    VisualBasic2008からExcelの操作の仕方 Button1のクリックイベントで、Excelに数値を飛ばしたいのですが、仕方がわかりません。 加えて、Excelからデータも持って来れたらいいなと考えています。 いろいろサンプルコードで試しているのですが、まず参照設定がよくわかりません。 プロジェクト→参照の設定→COM→Microsoft Excel 14.0 ObjectLibrary で追加しているのですが、 サンプルコードをVisualBasic2008にペーストしてやると、エラーのような下線が引かれてしまいます。 VisualBasicを使い始めたばかりなので、どうかわかりやすく、お願いします。

  • アクセスからエクセルのマクロを実行したいのですが

    Sub エクセルのVBA実行する() Dim xlsWB As Object Dim MyFileName As String MyFileName = "C:\test.xlsx" Set xlsWB = GetObject(MyFileName) xlsWB.Application.Run xlsWB.Name & "!マクロ" Set xlsWB = Nothing End Sub と言うコードを作ったのですが エクセルファイルにはパスワードがかかっています。 パスワード付のエクセルファイルを開きマクロを実行するにはどうすればいいでしょうか?

  • VisualBasic2005でExcelを最小化する方法

    VisualBasic2005でExcelファイルを使用しています。 (1)プログラムでExcelを最小化する方法はありますか? (2)format関数で「data=Fromat("2007/01/21","yyyy/mm")」を 実行すると、「2007/00」が返値となります。"yyyy/mm/dd"にすると 正しい値が返されます。年月日を入力した値から「年月」のみを 取得することはできますか? 教えてください。よろしくお願いします。

  • VBからEXCELを起動する

    VBよりExcelを起動するプログラムで困っています。 1.VBよりGetObject関数でTest.xlsを開く 2.Test.xls内のAuto_Openマクロでパラメータファイルをよみ、そこに指定されているエクセルファイルを新しいブックでを開く ということをしたいのですが(「マクロを有効にする」のダイアログは表示されてもかまわないです)、何故かTest.xlsが開いたと思ったらすぐ閉じてしまいます(Excel自体は終了してないですべてのワークシートが閉じた状態)。 Auto_Openマクロは走ってるようなのですが、ついでにCloseマクロも走ってしまいます。 ちなみにTest.xlsを単体で動かしたときは問題なく動くのです・・・。 以前はVB4+Excel95の環境でAPI(CreateProcess)を使用し同作業を行っていたのですが、そのAPIが長いファイル名のスペース(OFFICEがある「Program File」のスペース)を認識しないそうで、この方法が使えないということでGetObjectを使用してみたのですが・・・。 何か根本的な間違いをしているのか、それともコードにエラーがあるのかさっぱりわからずお手上げです。 うまく疑問点を説明できているか不安なんですが、わかる方、どうかご指導願います。 よろしくお願いします。 ---------------------------------------- OSは、Windows 2000 アプリケーションは、Excel 2000 です ----------------------------------------

  • visualbasic

    visualbasic2005で、アナログ時計とデジタル時計を、RadioButtonを押すことにより切り換えられ、アナログ時計は、短針、長針、秒針がついてあり、日付はなく、普通の円形のアナログ時計の表示。デジタル時計は日付と時間の表示だけです。 もし、上の文がわからなかったり、読むのめんどくさい方は、要は、アナログ時計とデジタル時計の切り換えのプログラムを教えて欲しいんだろ!と思って下さい。 プログラムを教えて下さい。お願いします。

専門家に質問してみよう