環境:OS.Win2000、Excel2000、VB6
VBで作成したアプリからExcelを開き文字列を検索・置換し保存して閉じる
という流れの処理をしたいのですがエラーが発生してしまいます。
Private Sub Command1_Click()
Dim xlApp As Object
Dim xlBook As Object
Dim ret As Object
'OPEN
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("c:\aaa.xls")
xlApp.Application.Visible = True
'置換
xlApp.ActiveCell.Replace what:=TextBox1.Value, _
replacement:=TextBox2.Value, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False
'検索
Set ret = xlBook.Application.Cells.Find(what:=TextBox1.Value, _
After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _
MatchByte:=False)
ret.Activate
'終了
xlApp.Quit
'開放
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
上記の状態だと ”指定された文字列に置換” の所で ”オブジェクトが必
要です”とエラーが出てしまいます。エラーNOは424です。ちなみに検索
では”Rangeクラスのfindプロパティを取得できません”(1004)となりま
す。どうすればエラーが出ないように出来るのか分かりません。また、外部
のアプリでオートメーションを利用する際に気おつけなければいけない事が
あれば教えてください。ちなみにExcelのVBA上で実行すると置換までは動作
します。検索の所でエラー1004が発生します。さっぱり理解できません。で
きればこの違いも教えてください。続けての質問ですがよろしくお願いします。
No.3ベストアンサー
- 回答日時:
>>xlPart、xlNext、xlByRowsが宣言されていないからでは?
>これは、定数ですか?ヘルプを見る限りはそのようですが。
そうです。定数です。
ExcelのVBE、または参照設定でExcelのオブジェクトを
追加したVBのオブジェクトブラウザで確認してみてください。
VBやVBAは、
Option Explicit
がソースの先頭にないと、関数中にはじめて出てくる
未定義の変数は、Variant型の変数として勝手に
処理します。
つまり、参照設定を行わない状況では、xlPart等の
定数の情報もないので、VBが勝手にVariant型の変数と
して処理されています。
これを回避するのは、
参照設定をするか、オブジェクトブラウザで調べた数値を直接指定or自分で定数宣言するかです。
No.2
- 回答日時:
開発時は、参照設定をする
メニューバー「プロジェクト」→「参照設定」
「Microsoft Excel *.* Object Library」にチェック
変数の宣言を以下のように...
'Dim xlApp As Object
'Dim xlBook As Object
'Dim ret As Object
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim ret As Excel.Range
OPENのところを変更
'Set xlApp = CreateObject("Excel.Application")
Set xlApp = New Excel.Application
正常に動作することを確認したら、
参照設定の「Microsoft Excel *.* Object Library」にチェックをはずし、
コメントアウトしたところを元に戻してから、
正常動作するか確認する
あと、VBのテキストボックスオブジェクトには、「Value」プロパティはないような...
どこが分からないのかはっきりしてから、整理してから再度...
この回答への補足
アドバイスの通りにしたら動作しました!text.valueは自分の間違えでした...。最大の問題は参照設定だったようです。しかし、
> コメントアウトしたところを元に戻してから、
> 正常動作するか確認する
元に戻したら..動作しません。これにはどんな意図があるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Excel(エクセル) エクセルマクロで教えてください 2 2022/05/04 09:07
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) エラー処理 3 2022/04/11 14:58
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) マクロで特定日より1日前の日を求めたい 6 2022/05/08 09:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
Excelで下記のようにマクロを作...
-
エクセルエラー13型が一致しま...
-
職場から目的地までの距離集計
-
インデックスが有効範囲にあり...
-
【Excel VBA】マクロをボタンに...
-
デバッグ時はOK、デバッグ無し...
-
VBAがブレークモードになっ...
-
VBAでのMATCH関数
-
『実行時エラー 5 プロシージャ...
-
VBSで変数の宣言はできないので...
-
実行時エラー -'-2147417848
-
プロシージャ名の取得
-
Excel VBA で End Subのところ...
-
INSERT INTOステートメント構文...
-
AccessVBAでExcelを起動し、罫...
-
■VBA■ SUMとAVERAGEの違い
-
カーソルオープンでエラー(ORA...
-
EXCEL VBA シート追加時のエラ...
-
なぜこんな初歩的なVBAのIf文で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
実行時エラー3001「引数が間違...
-
VBS実行時エラー オブジェクト...
-
VBAがブレークモードになっ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBSで変数の宣言はできないので...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
AccessVBAでExcelを起動し、罫...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
Application.ActiveInspectorで...
おすすめ情報