■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
|
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った): |
■ ページの共有: |
[ サイト内検索 ]
![]()
カスタム検索
|
#44047-0マクロを含むエクセルファイルのOPENたま2001-06-15(金) 14:47
#44049-0RE#44047:マクロを含むエクセルファイルのOPENみゃお2001-06-15(金) 15:05
#44051-0RE#44049:マクロを含むエクセルファイルのOPEN匿名440512001-06-15(金) 15:18
#44059-0RE#44051:マクロを含むエクセルファイルのOPENみゃお2001-06-15(金) 16:13
#44060-0RE#44059:マクロを含むエクセルファイルのOPENたま2001-06-15(金) 16:28
#44062-0RE#44060:マクロを含むエクセルファイルのOPENLESIA2001-06-15(金) 17:16
#44123-0RE#44062:マクロを含むエクセルファイルのOPENたえ2001-06-18(月) 13:08
#44128-0RE#44123:マクロを含むエクセルファイルのOPENLESIA2001-06-18(月) 14:14
#44130-0RE#44123:マクロを含むエクセルファイルのOPENみゃお2001-06-18(月) 14:31
#44049-0RE#44047:マクロを含むエクセルファイルのOPENみゃお2001-06-15(金) 15:05
#44051-0RE#44049:マクロを含むエクセルファイルのOPEN匿名440512001-06-15(金) 15:18
#44059-0RE#44051:マクロを含むエクセルファイルのOPENみゃお2001-06-15(金) 16:13
#44060-0RE#44059:マクロを含むエクセルファイルのOPENたま2001-06-15(金) 16:28
#44062-0RE#44060:マクロを含むエクセルファイルのOPENLESIA2001-06-15(金) 17:16
#44123-0RE#44062:マクロを含むエクセルファイルのOPENたえ2001-06-18(月) 13:08
#44128-0RE#44123:マクロを含むエクセルファイルのOPENLESIA2001-06-18(月) 14:14
#44130-0RE#44123:マクロを含むエクセルファイルのOPENみゃお2001-06-18(月) 14:31
たま2001-06-15(金) 14:47
はじめまして。 現在、VBからマクロを含むエクセルファイルを開く PGを組んでいます。 CreateObjectを使用するとマクロの確認メッセージが表示されず Auto_Openも行われません。 GetObjectを使用すると、マクロの確認メッセージは表示される のですが、「はい」を選択すると「オートメーションエラーです」 のエラーメッセージが出てしまいます。 やりたい事としては、マクロの確認メッセージを表示し、Auto_Open を実行したいのです。 VBからマクロを含むエクセルファイルのOPENについて どなたかご存知の方、宜しくご指導お願いします。
みゃお2001-06-15(金) 15:05
> CreateObjectを使用するとマクロの確認メッセージが表示されず > Auto_Openも行われません。 この場合、Auto_Openを実行させるには、オブジェク変数.Run("ファイル名.xls!Auto_Open") とします。 > GetObjectを使用すると、マクロの確認メッセージは表示される > のですが、「はい」を選択すると「オートメーションエラーです」 > のエラーメッセージが出てしまいます。 普通は出ないはずですが。。。 何か特別なコードを書いていますか? > やりたい事としては、マクロの確認メッセージを表示し、Auto_Open > を実行したいのです。 CreateObjectとRunメソッドの組み合わせでもエラーが出ますか? 出ないなら、マクロの確認メッセージを自作しましょう(笑) 出るなら、マクロ自体を見直しましょう。
匿名440512001-06-15(金) 15:18
> 何か特別なコードを書いていますか? コードは以下の通りです。 Public Function Excel_Open_New(pPath As String) As Boolean Dim G_Excel_New As Object 'Excelオブジェクト Dim bNotRun As Boolean On Error Resume Next Excel_Open_New = False Set G_Excel_New = GetObject(, "Excel.Application") If Err.Number <> 0 Then bNotRun = True Err.Clear DetectExcel '__pPath:ファイルのフルパス Set G_Excel_New = GetObject(pPath) G_Excel_New.Application.Visible = True G_Excel_New.Parent.Windows(1).Visible = True If bNotRun Then G_Excel_New.Quit End If Set G_Excel_New = Nothing Excel_Open_New = True Exit Function End Function > CreateObjectとRunメソッドの組み合わせでもエラーが出ますか? 試してみました。 エラーは出ませんでした。 確認メッセージを自作しましょうかね?(^^;)
みゃお2001-06-15(金) 16:13
> Set G_Excel_New = GetObject(pPath) こうすると変数 G_Excel_New は、ブックオブジェクトになります。 ですから、 > G_Excel_New.Quit この行は、G_Excel_New.Application.Quit になります。 気の付いたところはこのくらい。
たま2001-06-15(金) 16:28
みゃおさんありがとうございます。 さらに質問なんですが、 CreateObjectでマクロ確認メッセージを自作する場合、 そのエクセルファイルにマクロが含んでいるか判断する ことは可能なのでしょうか?
LESIA2001-06-15(金) 17:16
> みゃおさんありがとうございます。 > > さらに質問なんですが、 > CreateObjectでマクロ確認メッセージを自作する場合、 > そのエクセルファイルにマクロが含んでいるか判断する > ことは可能なのでしょうか? CodeModuleプロパティで出来たと思います。 試してないけど、こんな感じかな? Dim i As Integer Dim CheckModule As Boolean CheckModelue = False With objExcel.Application.VBE.ActiveVBProject For i = 1 To .VBComponents.Count If .VBComponents(i).CodeModule Is Nothing then ' Else CheckModule = True MsgBox .VBComponents(i).Name & "にモジュールがあります。" End If Next i End With if CheckModule = False Then MsgBox "このプロジェクトにはモジュールがありません。" End If
たえ2001-06-18(月) 13:08
> CodeModuleプロパティで出来たと思います。 > 試してないけど、こんな感じかな? > > Dim i As Integer > Dim CheckModule As Boolean > > CheckModelue = False > With objExcel.Application.VBE.ActiveVBProject > For i = 1 To .VBComponents.Count > If .VBComponents(i).CodeModule Is Nothing then > ' > Else > CheckModule = True > MsgBox .VBComponents(i).Name & "にモジュールがあります。" > End If > Next i > End With > > if CheckModule = False Then > MsgBox "このプロジェクトにはモジュールがありません。" > End If 上記のコードを使ってみたのですが、マクロを含んでいないエクセルファイルでも マクロを含んでいるように認識してしまいます。 どうも、 > If .VBComponents(i).CodeModule Is Nothing then の部分がうまく行っていないようです。 本をいろいろと調べてみたのですが、分かりませんでした。 ご存知の方、いらっしゃいましたらご指導宜しくお願いします。
LESIA2001-06-18(月) 14:14
> 上記のコードを使ってみたのですが、マクロを含んでいないエクセルファイルでも > マクロを含んでいるように認識してしまいます。 > どうも、 > > If .VBComponents(i).CodeModule Is Nothing then > > の部分がうまく行っていないようです。 > 本をいろいろと調べてみたのですが、分かりませんでした。 > ご存知の方、いらっしゃいましたらご指導宜しくお願いします。 すみませんでした。先程試してみたら確かにIf文の条件は 成り立たないですね。 If .VBComponents(i).CodeModule.CountOfLines > 0 Then CheckModule = True MsgBox .VBComponents(i).Name & "にモジュールがあります。" End If とするとうまくいくようです(^^;
みゃお2001-06-18(月) 14:31
> どうも、 > > If .VBComponents(i).CodeModule Is Nothing then > の部分がうまく行っていないようです。 http://www.microsoft.com/JAPAN/support/kb/articles/J031/5/06.htm を見て、コードの行数を数えてはいかがでしょう? マクロがあれば、必ず2行以上(Sub〜End Sub, Function〜End Functionなど) 使われているはずです。
このページと関連する記事:
#44173-0マクロを無効にしファイルを開きたい2001-06-19(火) 09:25#147-3VBからExcelを起動後、マクロの自動実行2003-07-31(木) 16:06
#41142-0EXCELからマクロを実行2001-04-02(月) 11:04
#45578-0VB から Excel マクロの実行2001-08-02(木) 10:05
#1266-1Excel操作について2004-03-03(水) 11:57
#45754-0VBによるエクセルのシートのコピー方法2001-08-08(水) 17:41
#18895-0ExcelのマクロをVBで実行するには?2001-11-24(土) 09:53
#118-1ExcelVBA(マクロ)の利用方法について2001-05-30(水) 11:45
#45159-0VB-Excel2001-07-19(木) 10:26
#38906-0Excelが開かれているかの確認2001-02-15(木) 17:59