- 締切済み
Excelのマクロ ランタイムエラー1004
上記のエラーが出て困っています。 仕事の就業報告書を書こうと、会社から配られたマクロの組まれたエクセルファイルを開き、 マクロの有効化ボタンを押すと 「ランタイムエラー1004 DialogSheetクラスのエディタボックスのプロパティが取得できません」 なるエラーが出てきてしまい、本来表示されるはずの年月・社員番号・名前を入力するウィンドウが出てきません。 一番謎なのは、別のパソコンでそのファイルを開くとマクロが正常に動くことです。 土日は会社が休みなので、会社に聞くことも出来ず・・皆さんの力をお借りしたいです。 どちらのパソコンもOSはWindows7、使用しているのはMicrosoft Office2010のexcelです。 どのような原因が考えられられますでしょうか? あまり詳しくないので、どのような情報を提供すればよいのか分かりません。 何か皆さんが知りたいこと・確認作業が必要なら、そちらも教えていただけると幸いです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- WindFaller
- ベストアンサー率57% (465/803)
#2の回答者です。 >1と書かれたダイアログボックスが表示されました。これは、シートは存在していると言う事でしょうか? はい! ダイアログシートはあります。そして、ダイアログ・シートは開きましたか? まず、私の心配していた、ロックは掛かっていなかったようですね。 次に、エディットボックスが存在しているか、生きているか、という所を確認してみてください。エラーが出るでしょうか?ダメな場合は、再度、貼り付けるしかありません。 Excel 2010 の場合は、[開発タブ]--[挿入]--[フォームコントロール]--[テキストフィールド] です。ダイアログ・ボックス上で、カーソルが+(プラス)に変わったら、エディットボックスが作れます。以下のように、EditBoxes(1),EditBoxes(2) ... というスタイルにしている限りは、読み取れるはずです。 基本的には、元のマクロにも、同様の構文があるはずです。 '最初に、1番目のEditBoxに文字を入れてみてください。白抜きの所で二度クリックします。 'そうしてこのマクロを実行したらどうなりますか? Sub Test2() MsgBox DialogSheets(1).EditBoxes(1).Text '←プロパティは、.Text のみです。 End Sub これでダメだと、私には、今のところ、他に思いつく所がありません。
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 確認作業としては、 まず、DialogSheet は、存在していますか? ふつう、Excel 2010 でも、DialogSheet は動きますが、別のオブジェクトが邪魔をしているのかもしれませんね。そうすると、ネットからの指示では難しいです。 どこのVBEditor の画面でもよいので、以下を貼り付けます。 (プロテクトが掛かってはいませんよね。) '// Sub Test() MsgBox DialogSheets.Count 'ひとつなら、1が出ます。 If DialogSheets.Count > 0 Then DialogSheets(1).Activate 'とりあえず、ダイアログシートの1つを開けます。 End If End Sub '// この後、オブジェクトが正しく貼り付けられているか確認してください。もしかしたら、消えているかもしれませんね。その場合は、一端、元のコードで、エディタ・ボックスの部分を知らないといけないかもしれません。
お礼
回答ありがとうございます。 書いていただいたコードを貼り付けて実行してみたところ、1と書かれたダイアログボックスが表示されました。これは、シートは存在していると言う事でしょうか?
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1です もしくは、エクセルを起動して「開く」から「開いて修復する」を実行してみてもいいかもしれません。
お礼
回答ありがとうございます。Officeやファイルの修復を行ってみたのですが、変わらずエラーが出てしまいます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
DialogSheetを使っているという事はかなり古いエクセルファイルのようですね。 一度Officeの修復をされてみてはいかがでしょう。 http://office.microsoft.com/ja-jp/excel-help/HA010357402.aspx
お礼
どうやら私の使っているOfficeが英語版なため、値を取得する際の名称が違うだけでした。おかげさまで解決できました。ありがとうございました。