エクセルのマクロについて質問です。
今エクセルでCommonDialog1を実行しようとしています。
やりたいことは”ファイルを選択するウィンドウを表示”させて”ファイルを開く”です。
マクロを作成しているエクセルは2007で実際に動作させるときに使用するのは2002です。
下記マクロ参照ください。
Private Sub CommandButton1_click()
Dim strfilename As String
commondialog1.Filename = ""
commondialog1.Filter = "CSV Files(*.csv)|*.csv"
commondialog1.showopen
strfilename = commondialog1.Filename
End Sub
実行しようとすると実行エラー424
オブジェクトが必要です
とエラーメッセージがでます。(2007で作成、デバック時)
common dialog controlの挿入等試してみましたがうまくいきません。
解決策がありましたらご教示願います。
ちなみに、既存のマクロの都合でcommondialogのコマンドを使用して作りたいです。
他にも方法はあるかと思いますが、宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
#1 です。
どうも、前の回答は説明が過ぎたようで却って分かりにくかったでしょうか。
新規の ブック で、下記の通りに試してみてください。
先ず、新規の ブック を開き、VBE を開いてください。
1)VBE において、[挿入(I)] - [ユーザー フォーム(U)] で ユーザー フォーム を挿入します。
2)[ツールボックス] の中から [コマンド ボタン] を クリック し、[UserForm1] の中に配置します。
3)[ツールボックス] の アイコン が並んでいるトコロの何もないトコロを [右クリック] - [その他のコントロール(A)...] を クリック します。
4)[コントロールの追加] ダイアログ - [利用可能なコントロール(A):] の中から、[Microsoft Common Dialog Control, Version 6.0 (SP6)] を クリック して、前の □ に「×」を付け [OK] します。
5)[ツールボックス] の アイコン が並んでいるトコロの最後に、アイコン が1つ追加されましたので、それ([CommonDialog])を クリック し、[UserForm1] の中に配置します。
6)(2) で配置した [コマンド ボタン] を [右クリック] - [コードの表示(O)] を クリック します。
7)現われた コードウィンドウ に、ご質問でお示しの コード をそのまま コピペ します。そのまんまです。
このとき、冒頭に「Option Explicit」と書かれていなかったら、これを冒頭に書いてください。
8)ワークシート上 に配置した コマンドボタン なり、シート イベント なりで、
UserForm1.Show
を実行します。
9)現われた ユーザーフォーム の コマンドボタン を クリック します。
10)[開く] ダイアログ が起動します。
上記で エラー が出ずに (10) まで行けたとしたら、お手許の ブック と比べて、どこが異なるのかご確認ください。
上記でも、まだ エラー が出るということであれば、話は振り出しに戻ります。
なお、当方、Excel 2003 にて試行しましたが、ユーザーフォーム 関係は、2007 でも余り変わっていなさそうですので。。。
http://www.asahi-net.or.jp/~ef2o-inue/kankyo/sub …
No.2
- 回答日時:
エクセルVBAでやるらしい。
質問にはhttp://www.serpress.co.jp/excel/vba030.html
に書いてある3つの方法(API、commondialog1のコントロール、Excel標準のダイアログボックス)のうち、どれでやっているのか。APIは論外としてはっきり質問には、書くべきではないか。
参考
UserFormにcommondialog1のコントロールを貼り付け
Sub test02()
With UserForm1
.CommonDialog1.Filename = "C:\Documents and Settings\XXXX\My Documents\*.xls" 'デフォルトのファイル名
.CommonDialog1.DialogTitle = "ファイルを開く" 'ダイアログのタイトル
.CommonDialog1.Filter = "Microsoft Excel (*.xls)|*.xls" '拡張子にxlsを指定
.CommonDialog1.Flags = cdlOFNExplorer + cdlOFNLongNames 'エクスプローラ形式と長いファイル名を指定
.CommonDialog1.MaxFileSize = 512 '512文字
.CommonDialog1.ShowOpen 'ダイアログを開く
strFileName = .CommonDialog1.Filename '選択したファイル名
MsgBox strFileName
End With
End Sub
のようなユーザーフォーム上にコントロールを貼り付けてやっているのか。
With UserForm1
に当たるものは入れているか?
ーー
別パソコンに行けばパソコンの環境・データ(ドライブ、フォルダなど)が変わる可能性がある。
プログラムがうまく行かないのは
(1)プログラムコード
(2)環境(例えば、ドライブ、フォルダ、参照設定、ライブラリ、64ビット、ソフトのバージョンなど多岐にわたってありえる)
(3)データの有様(予期せぬデータがあった)
などでエラーが起こりえる。(1)だけとは限らない。
それらを切り分けてみましたか。
commondialog1のコントロールは昔からあるコントロールだが。
No.1
- 回答日時:
>common dialog controlの挿入等試して
>みましたがうまくいきません
http://www.serpress.co.jp/excel/vba030.html
に書かれているような段取りでしていらっしゃるのでしょうか?
-------------------------------
「Option Explicit」で変数の宣言を強制してある場合には、
-------------------------------
【1】「Private Sub CommandButton1_click()」が 標準モジュール などに記載してある場合:
【1-1】[CommandButton1] を クリック した場合:何も起こりません。
【1-2】VBE において デバッグ しようとしている場合:
CommonDialog1.Filename = ""
の行で「コンパイル エラー: 変数が定義されていません。」が発生します。
-------------------------------
【2】「Private Sub CommandButton1_click()」が フォーム モジュール に記載してある場合
【2-1】[UserForm1] 上に [CommonDialog1] コントロール がない(削除された)場合:
CommonDialog1.Filename = ""
の行で「コンパイル エラー: 変数が定義されていません。」が発生します。
【2-2】[CommonDialog] の「(オブジェクト名)」が「CommonDialog1」でなくなっている場合:【2-1】と同じ結果です。
-------------------------------
【1-2】【2-1】の場合に、「Option Explicit」で変数の宣言を強制していない場合:
「コンパイル エラー: 変数が定義されていません。」が発生する場所で、「実行時エラー '424': オブジェクトが必要です。」が発生します。
※VBE の [ツール(T)] - [参照設定(R)...] において、[参照(B)...] ボタン を クリック、[ファイル名(N):] に、「C:\windows\System32\COMDLG32.OCX」と入力して、[参照可能なライブラリ ファイル(A):] の一覧の「Microsoft Common Dialog Control 6.0 (SP6)」に チェック が付いた状態でも結果は変わらないようです。
-------------------------------
以上のことから、【1-2】はちょっとあり得ないので、【2-1】ということになりましょうか?(これもあり得ませんが。。。)
===============================
ちなみに、
>既存のマクロの都合でcommondialogの
>コマンドを使用して作りたいです。
とのことですが、
http://gallery.technet.microsoft.com/scriptcente …
には、
>UserAccounts.CommonDialog オブジェクトは、
>セキュリティ上の問題から Windows Vista で
>廃止されました。
と書かれています。
今、Windows7 32bit & Excel 2003 で試してみましたが、問題なく行なうことができましたので、実際のところは分かりませんが、「セキュリティ上の問題から廃止」になったものを使うというのはどうでしょうかねぇ。。。
ちなみにちなみに、本家MS社でありながら、「12/2/2010」(昨年暮れ)に「UserAccounts.CommonDialog オブジェクト」の使い方を紹介しています。
http://gallery.technet.microsoft.com/scriptcente …
また、冒頭の URL は、下記を具体的に紹介した ページ かと存じます。
●コモン ダイアログ コントロール (Comdlg32.ocx) を呼び出すコードを実行するとエラー メッセージ "ActiveX コンポーネントはオブジェクトを作成できません" が表示される
http://support.microsoft.com/kb/281848/ja
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
コモンダイアログコントロールがコンポーネントにありません
Visual Basic(VBA)
-
CommonDialog でエラー
Excel(エクセル)
-
動かなくなってしまった古いVBAを動くようにしたい
Visual Basic(VBA)
-
-
4
vbsで選択ダイアログを表示したいのですがやり方が分かりません。教えて
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー内容が分かりません
-
Excel VBAで、実行時にsheet上...
-
エクセルVBAでmeに相当するもの...
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
ExcelVBAで今開いているユーザ...
-
フォルダ内の全ブックのシート...
-
VBAを一度起動するとずっと出て...
-
コピーしたファイルのマクロを...
-
エクセルの指数を無効にしたい
-
【マクロ】エラーが発生⇒実行時...
-
VBA マクロ実行時エラー’1004Ra...
-
excelファイルに使われているVB...
-
エクセルマクロ実行中に別ファ...
-
ファイル名を今日の日付、時刻...
-
複数のCSVファイルを横に並べて...
-
「ほかのアプリケーションを無...
-
excelインポート時の「実行時エ...
-
別のパソコンでエクセルのマク...
-
VBA[Private Sub]のコードをシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー内容が分かりません
-
Excel VBAで、実行時にsheet上...
-
エクセルVBAでmeに相当するもの...
-
コモンダイアログエラー
-
オプションボタン
-
EXCEL VBA テキストボックスの...
-
キーボードでコマンドボタンを...
-
エクセルのコマンドボタンの使...
-
ワードVBAで画像を挿入
-
VBAのコントロールなんかをコレ...
-
複数のデータ系列の線の太さを...
-
フォルダ内の全ブックのシート...
-
エクセルでツールバーに「縮小...
-
ExcelVBAで今開いているユーザ...
-
VBAを一度起動するとずっと出て...
-
エクセルの指数を無効にしたい
-
Powerpointでランダムな数字の...
-
コピーしたファイルのマクロを...
-
cellsで特定の離れた範囲を選択...
-
エクセル終了時の保存確認メッ...
おすすめ情報