• ベストアンサー

[ExcelVBA] objExcel.Sheetsのような感じで、objExcelのマクロを作動させたい

objExcelにオブジェクトがある状態で、 objExcel.Sheets(1).cells(1,1) でセルの情報が取得できます。 これと同じような感じで、マクロを作動させることはできるのでしょうか? objExcel.Module1.マクロ名 を実行しても、 エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。 となってしまいます。 取得済みのオブジェクトのマクロを作動させられれば どのような方法でもいいのですが。アドバイスいただけたら幸いです。

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

  • ベストアンサー
回答No.3

objExcelは別Excelという認識でいいですよね。 ExcelAのTestメソッドをExcelBで実行したい。 ■ExcelA ブック名:Book1.xls モジュール名:Module1 Public Sub Test Msgbox "Test表示" End Sub ■ExcelB Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\Book1.xls") xlBook.Application.Run "Module1.Test" ですかね。

emson100
質問者

お礼

>objExcelは別Excelという認識でいいですよね。 説明不足申し訳ございません。まさに別Excelという認識です。 xlBook.Application.Run "Module1.Test" これが重要なのですね。 Application.Run " " というものを全く知りませんでした。m(_ _)m 別ExcelのModuleのマクロを無事実行できました。 非常に分かりやすいコードを書いていただき 本当にありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

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

何がしたいかわかりません。通りがかりに何か見て、あれがほしいといっているような感じ。 もっとVBAを勉強して質問してください。 ーー >objExcel.Sheets(1).cells(1,1) はエクセル以外のソフト「(ワードやACCESSやFSOなど)からエクセルを操るときに出てくるコードを思わせます。そんなレベルになっているのでしょうか。 VB.NETからもエクセルを実行したり出来ます。 みなエクセルのオブジェクトライブラリを参照できる(使える)ことが条件です。 ーー まずエクセルからエクセルVBAを実行するためのコードをまず勉強してください。こういうことを考えるのはその後です。学習には順序があります。 エクセルでVBAコードを書く場合に似ていなくも無いが、エクセル定数などは注意のこと。 VB.NETからではいわばエクセルのVBAの勉強のしなおしです。 ーーー >同じような感じで、マクロを作動させることはできるのでしょうか 感じなんてあいまいな表現では判りません。 勉強がそこまで及んでないためこういう質問表現になってしまうのだと思いますが。 >取得済みのオブジェクトのマクロを作動させられれば オブジェクトは色々、色々なレベルのものがあります。 取得済みでも、関係ないオブジェクトであれば、役立ちません。 マクロ実行なら Googleで「application.run VBA」で照会して http://officetanaka.net/excel/vba/tips/tips09.htm  など調べてください。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

メソッドの管理はApplicationオブジェクトです。 objExcel ← これ、見た目ワークブックなんで、ここから実行は 無理でしょうね。変数に実行したいメソッドの名前を設定し、 動的に実行する場合は次の手順になります。 Dim メソッド As String メソッド = "Procedure" Application.Run メソッド >取得済みのオブジェクトのマクロ これはどういう意味ですか?

emson100
質問者

お礼

Application.Run メソッド というものがあるのですね。 どんなメソッドが分かっていないかを 的確にご指摘いただき誠にありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

http://support.microsoft.com/kb/219905/en-us http://support.microsoft.com/kb/213837/en-us 個人的にはKB219905のソース例のほうが好きかなあ。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelのマクロを使ってコメントを表示させる

    マクロを使ってセルにコメントを挿入したいのですが、どうしてもエラーが出て先に進めません。 エラー内容 実行時エラー:438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 【Excel2007 SP1】を使っています。 マクロに詳しい方、ご教授よろしくお願いします。

  • コピーの方法

    エクセルのある部分をコピーしてその下に貼り付けたりするやつで やってみたんですけどエラーがでるんです( ̄□ ̄;)!! For i = 2 To Page g = (i - 2) * 34 + 1 objExcel.Sheets("Sheet1").Range("A1:P34").Select objExcel.Sheets("Sheet1").Selection.Copy objExcel.Sheets("Sheet1").Range("A" & Format(g)).Select objExcel.Sheets("Sheet1").ActiveSheet.Paste Next ってやつで objExcel.Sheets("Sheet1").Selection.Copy だけエラーがでるんです。 エラーの内容は オブジェクトは、このプロパティまたはメソッドをサポートしていません。 (438) なんです。 「Selection」をかえればいいんでしょうけど 何にかえればいいんでしょうか??? 困ってます。 教えてくださいっ!

  • エクセルVBA 現在のセルの4個上のセルの値

    こんにちは、 エクセルマクロの質問です。 イミディエイトウィンドウにて 現在のセルの4個上の値を表示しようと以下の文を入力したところエラーになりました。 ?cells(activecell.row-4,activecell.colum).value で 「実行時エラー 438 オブジェクトはこのプロパティまたまメソッドをサポートしてません。」 なぜでしょう? ?activecell.Row-4  ?activecell.colum はそれぞれ 正しく表示されます。

  • すみません・・・(。 。、 )

    何度もすみません。 ついさっき質問したばかりなのですが エクセルのある部分をコピーしてその下に貼り付けたりするやつで やってみたんですけどエラーがでるんです( ̄□ ̄;)!! For i = 2 To Page g = (i - 2) * 34 + 1 objExcel.Sheets("Sheet1").Range("A1:P34").Select objExcel.Sheets("Sheet1").Selection.Copy objExcel.Sheets("Sheet1").Range("A" & Format(g)).Select objExcel.Sheets("Sheet1").ActiveSheet.Paste Next ってやつで 今度は貼り付けができないんですっ! さっき回答をもらってその方法でためしてみたりもしたのですが だめでした・・・ やっぱり オブジェクトは、このプロパティまたはメソッドをサポートしていません。 (438) といわれます・・・・ もう、なにがいけないんでしょう(;∩;) 困ってます。 教えてくださいっ! ホントになんどもすみません。。。

  • マクロ作動

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) tm = Time() '現在時間を取得 If tm < TimeValue("08:30:00") Then Exit Sub If tm > TimeValue("09:30:00") Then Exit Sub  Dim ANS As Integer  Dim 値 As String If Sheets("営業確認").Range("D6").Value <> "" Then ANS = MsgBox(Sheets("営業確認").Range("B6") & "のデーターが残っています。クリアしますか?", _ vbYesNo) Select Case ANS Case vbYes Sheets("営業確認").Select Sheets("営業確認").Range("B6:E461").Select Selection.ClearContents Sheets("営業確認").Range("G6:K461").Select Selection.ClearContents Sheets("入力").Select MsgBox "クリアしました" Case vbNo MsgBox "キャンセル" End Select Else End If End Sub プログラムを組みましたが、上記のとおり時間設定している間は『キャンセル』をしてもセルを動かす度にマクロが動いてしまいます。 下記のようなマクロは可能でしょうか。 (1)一番最初にシートが開くとマクロが作動 (2)その後、指定してるシートに値があってもマクロは作動しない (3)また翌日シートを開くとマクロが作動 ※1日1回マクロが作動出来ればいいです

  • エクセルをインターネットエクスプローラで開いた場合のマクロ

    エクセル2000、Windows2000です。 エクセルのBOOKをインターネットエクスプローラ6.0で開いた場合のマクロの動作について教えてください。 Sheets("Sheet1").Select は、「実行時エラー1004 Sheetsメソッドは失敗しました。Globalオブジェクト」 ActiveWindow.SelectedSheets.PrintPreview は、「実行時エラー1004 PrintPreviewメソッドは失敗しました。Sheetsオブジェクト」 などエラーになってしまいます。 自宅のエクセル2003,IE7.0でやってみても同様でした。 どのように対処すればよいのでしょうか? なお、BOOKをIEで開くのは社内のイントラネットに掲載したエクセルをダウンロードするのではなく、イントラ上でIEで開くためのテストです。

  • エクセル 実行時エラー 438

    Sheets("シート1").Column("a").Find(What:="検索文字").Row で 実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 が発生する理由は、セルに検索文字がないからですか? それとも文法が間違っているからですか? Sheets("シート1").Column("a").Find(What:="検索文字").Row だとエラーになるのに、 Sheets("シート1").cells.Find(What:="検索文字").Row これだと検索文字が入ってる行番号を返します。 A列には、検索文字が入っているのに、 .Column("a")だとダメで、.cellsだと問題ない理由は何でしょうか? Column(1)にしてもエラーになります。

  • エクセルマクロエラー「'Cells'メソッドは失敗しました。'_Global'オブジェクト」について

    Excel 2000のマクロで教えてください。 あるセルに関数をいれるマクロを設定しております。  変数% = 8  Range(Cells(126, 20), Cells(155, 19 + 2 *  変数%)).FormulaR1C1 =  "=(RC[-18]-R[-1]C[-18])/0.04*100" このマクロを走らせると、たまに、 「'Cells'メソッドは失敗しました。'_Global'オブジェクト」 という、エラーがでます。 どういう意味なのでしょうか。 うまくいくときもあるので、よくわかりません。 すみませんが、教えてください。

  • エクセルのマクロを使ったファイルが他のPCで動きません。

    マクロ超初心者です。 マクロは自動記録で登録しました。 40個くらいのマクロを自動記録して、 それを連続して実行できるようにしました。 自分のPCでは問題なく作動します。 そのエクセルファイルをメール添付で友人に送りました。 ところが友人のPCではエラーになり実行できません。 「実行時エラー1004 runメソッドは失敗しました。applicationオブジェクト」 と表示されるそうです。 個々のマクロを単独で実行しても出来ません。 そこで送ったファイルと同じファイルのマクロを全てエクスポートして そのファイルを友人に送り、それをインポートしてもらいました。 Visual Basic Editorで確認してもらうとそのファイルはインポートされたようですが、上記のエラーになります。 マクロのファイルは「module1.bas」のような標準モジュールです。 どうすればマクロを実行できるようになりますか? 初心者でも分かるような回答をよろしくお願いいたします。

  • エクセルのブックを開いた時にマクロを自動定期に実行したいのですが。

    エクセル97でブックを開いたときに、自動的にマクロを実行させたいのですが、どのようにマクロを記述すればいいのか教えて頂けませんか。 sub autorun() sheets(2).select sheets(1).cells(2,2)=cells(5,5) end sub のように、シート2のある数値をシート1のセルに自動的に貼付したいのですが。 このマクロは自動的には実行されませんので、どうすれば自動的に実行するようにできるのかが知りたいのですが。 よろしくお願いします。