
エクセルのマクロについて質問です。
今エクセルで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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/05/23 15:54
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールツールボックスの式?
-
Excel VBAで、実行時にsheet上...
-
Excelで一般機能の自動立ち上げ...
-
EXCEL VBA カレンダーコントロ...
-
キーボードでコマンドボタンを...
-
オプションボタン
-
エクセルVBAで質問です
-
エクセルで印刷する方法 エクセ...
-
複数のデータ系列の線の太さを...
-
【マクロ】宣言は、何のために...
-
マクロを削除したい
-
Excel2002のおせっかい機能につ...
-
エクセル マクロ WEBエクセル...
-
エクセルの質問です。
-
エクセルのブックを保存すると...
-
マクロの作成について
-
エクセル2007で、マクロを使う...
-
OUTLOOKのスケジュール...
-
エクセルの表にボタンを付けたい
-
エクセルのマクロでこんな風に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAで、実行時にsheet上...
-
エラー内容が分かりません
-
エクセルVBAでmeに相当するもの...
-
オプションボタン
-
コモンダイアログエラー
-
BackColor でてこなかった
-
キーボードでコマンドボタンを...
-
VBAのコントロールなんかをコレ...
-
EXCEL VBA テキストボックスの...
-
エクセル2010のvbaとコマンドボ...
-
アクセス カンレンダーコント...
-
EXCEL VBA カレンダーコントロ...
-
ワードVBAで画像を挿入
-
【マクロ】宣言は、何のために...
-
複数のデータ系列の線の太さを...
-
VBAを一度起動するとずっと出て...
-
ExcelVBAで今開いているユーザ...
-
エクセルでツールバーに「縮小...
-
エクセル終了時の保存確認メッ...
-
コピーしたファイルのマクロを...
おすすめ情報