Excel2000でFileDialogにコンパイルエラーが表示される

このQ&Aのポイント
  • Excel2000でマクロを実行する際に、FileDialogを使用するとコンパイルエラーが表示される問題が発生しています。
  • Excel2002と同じマクロをExcel2000で使用する際に、保存 As FileDialog の部分で「コンパイルエラー ユーザ定義型は定義されていません。」というエラーが表示されます。
  • Excel2000でもExcel2002と同じファイルダイアログを使用するには、修正が必要です。
回答を見る
  • ベストアンサー

Excel2000でFileDialogにコンパイルエラーが表示される

Excel2000でFileDialogにコンパイルエラーが表示される いつもながらExcelのマクロについての質問です。 Dim 保存 As FileDialog Set 保存 = Application.FileDialog(msoFileDialogSaveAs) If 保存.Show = -1 Then 保存.Execute End If Set 保存 = Nothing これがExcel2002で使っていたマクロです。 ところが、同じものをExcel2000で使おうとしたら 保存 As FileDialog の部分にチェックが入り 「コンパイルエラー ユーザ定義型は定義されていません。」 と表示されて止まってしまいました。 Excel2000でもExcel2002と同じ操作ができるようにするには どうしたらよいのでしょう。 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.4

またまた登場、myRangeです。 ご気分を悪くさせたとしたら、I have to apologize...(^^;;; ファイル名を表示したければ、引数にファイル名を付加するだけです。 '----------------------------- Sub Test()  Dim 保存  Dim myFile As String    myFile = "test" & Format(Range("A1"), "m") & ".xls"  保存 = Application.Dialogs(xlDialogSaveAs).Show(myFile)    If 保存 Then      MsgBox "保存しました"    Else      MsgBox "Cancelしました"    End If End Sub '---------------------------------------------- ●それから、質問者が何度も提示している >Application.FileDialog(msoFileDialogSaveAs).InitialFileName = "test" & Format(Range("A1"), "m").xls" このコードは、Dialog云々以前に、文字列の扱い方にミスのありますよね。 恐らく、タイプミスでしょうが、、、、、 以上です。  

niftynejp
質問者

お礼

回答、ありがとうございました。 おかげさまで動くようになりました。 バージョンが違うと使えないマクロがあること 今後は十分に気をつけます。 何かありましたら、またよろしくお願いいたします。

その他の回答 (3)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

回答1,2とも同じ補足をしているということは、 どちらの回答も試さないで、ただ補足だけしているように思えますが。 回答1,2、どちらを試したのでしょうか。 また、試してみての感想は? 先ずそこをコメントするべきでしょう。 補足の件は、それからです。 以上。  

niftynejp
質問者

補足

書き方が中途半端でごめんなさい。 もちろん、どちらも試させていただいております。 その結果 マクロのはじめに付けていた Application.FileDialog(msoFileDialogSaveAs).InitialFileName = "test" & Format(Range("A1"), "m").xls" の部分に 同じエラーが発生したのです。 マクロを変更する前は この部分にエラーが表示されなかったので 問題ないと思い 質問では省いていました。 本当に申し訳ありませんでした。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

FileDialogオブジェクトは、2002から。 2000ならDialogオブジェクトなどでしょうか。 Dim 保存 保存 = Application.Dialogs(xlDialogSaveAs).Show   If 保存 = False Then   MsgBox "Cancelしました"   Else   MsgBox "保存しました"   End If

niftynejp
質問者

補足

申し訳ありません。 書く内容が不足していることに気がつきました。 実際には Application.FileDialog(msoFileDialogSaveAs).InitialFileName = "test" & Format(Range("A1"), "m").xls" といったものをはじめに書いていたのです。 要はA1に書いてあるものをファイル名に反映したいのです。 書き足りなくて本当にごめんなさい…

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

無いものは無い…。では寂しいので、 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200907/09070135.txt は?どうでしょう。

niftynejp
質問者

補足

同じことを書かせていただく点 申し訳ありません。 質問に書く内容が不足していることに気がつきました。 実際には Application.FileDialog(msoFileDialogSaveAs).InitialFileName = "test" & Format(Range("A1"), "m").xls" といったものを マクロのはじめに書いていたのです。 要はA1に書いてあるものをファイル名に反映したいのです。 書き足りなくて本当にごめんなさい…

関連するQ&A

  • ExcelのChDirで二つのフォルダを指定しても一つめしか認識しない

    ExcelのChDirで二つのフォルダを指定しても一つめしか認識しない いつもながらExcelのマクロについての質問です。 ChDir "C:\A" Dim 開く As FileDialog Set 開く = Application.FileDialog(msoFileDialogOpen) If 開く.Show = -1 Then   開く.Execute End If Set 開く = Nothing ChDir "C:\B" Dim 保存 As FileDialog Set 保存 = Application.FileDialog(msoFileDialogSaveAs) If 保存.Show = -1 Then   保存.Execute End If Set 保存 = Nothing これで"C:\A"のフォルダにあるファイルを一つ選び そのファイルをそのまま "C:\B"フォルダにコピーしようとしても コピー先としては 同じ"C:\A"フォルダが表示されてしまいます。 コピー先に "C:\B"フォルダが表示されるようにするためには どうしたらよいのでしょう。 Excel2002およびExcel2003でやってみたのですが 同じ結果でした。 以上、よろしくお願いいたします。

  • Excelのマクロで[名前を付けて保存]に候補のファイル名を表示したい

    いつもながらExcelのマクロについて質問です。 Dim 保存 As FileDialog Set 保存 = Application.FileDialog(msoFileDialogSaveAs) If 保存.Show = -1 Then 保存.Execute End If Set 保存 = Nothing これで[名前を付けて保存]が表示されますよね。 ここで質問です。 この画面でファイル名の候補を 例えば test のように表示させるには どうしたらいいのでしょうか。 そのまま[保存]を押せば test.xls で保存されるし ちょっと手を入れて test2.xls にもできるようにしたいのです。 また、もし同じ名前のファイルがすでにあれば 上書きするかどうかの確認表示をさせることにより 上書きしたり、別の名前に変えたりしたいと思います。 以上、よろしくお願いいたします。

  • コンパイルエラーの対処がわかりません。

     初心者です。エクセルのマクロで次のようなコードを書いたとき(2)のif文のところで 「コンパイルエラー:メソッドまたはデータメンバが見つかりません」 と表示されます。  Dim A As Worksheet   Set A = Worksheets(1)    If Sheets(1).CheckBox1 = True Then   '(1)     Range("A1") = 1    End If    If A.CheckBox1 = True Then       '(2)     Range("B1") = 1    End If  どちらも同じ意味だと思っているのですが、なぜ(2)ではエラーと なるのかわかりません。詳しい方、ご教示願います。

  • EXCEL2007で動くマクロがEXCEL2000だとエラーが出ます。

    下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるEXCEL2007で作成したマクロですが、EXCEL2000で動かすと「メソッドまたはデータメンバーが見つかりません」のエラーが出ます。初心者につき、対処方法を教えて下さい。 Dim wordApp As Word.Application Dim wordDoc As Word.Document Dim wordRange As Word.Range Set wordApp = New Word.Application Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\ひな型用ドキュメント.docx") (途中略) Set wordRange = wordDoc.Content wordRange.Find.Execute "@一覧表", Forward:=True Range("B3:E9").Copy wordRange.PasteAndFormat (Word.wdPasteDefault) ←エラー *エラーは、wdPasteDefaultで出ます。

  • EXCEL/VBAで、自分のPCだけエラーが出ます

    下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるマクロですが、自分のPCだけ「Executeメソッドは失敗しました:Findオブジェクト」のエラーが出ます。 何が原因なのでしょうか、対処方法を教えて下さい。 ちなみに自分のPCは、EXCEL2003です。他のPCのEXCEL2003や自宅のEXCEL2007ではエラーは出ません。 Dim wordApp As Word.Application Dim wordDoc As Word.Document Dim wordRange As Word.Range Set wordApp = New Word.Application Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\ひな型用ドキュメント.doc") (途中略) Set wordRange = wordDoc.Content wordRange.Find.Execute "@一覧表", Forward:=True ←エラー Range("B3:E9").Copy wordRange.Paste

  • 「コンパイルエラー :ユーザ定義型は定義されていません」の原因

    Excelのマクロで Sub Main() Dim ta As Value Dim tb As Value Sheet1.Cells(1, 1).Value = TimeValue("2:00") End Sub を実行すると 「コンパイルエラー :ユーザ定義型は定義されていません」が出ます。 「参照設定」の「参照可能なライブラリファイル」の一覧から「Microsoft Scripting Runtime」にチェックも入れました。 しかし結果は同じです。 Excel2007を使い始めて間もないのですが何が原因なのでしょうか。

  • ACCESS2000でコンパイルエラーが表示されてしまいます

    ACCESS初心者です。宜しくお願いします。 前任者が作成したACCESS2.0で使用していたものを、ACCESS2000でコンパイルすると、 コンパイルエラー ユーザ定義型は定義されていません。と表示されてしまいます。 Sub ページ設定P() Dim DB As Database, T As Table, X As Integer, I As Integer, 図面番号 As Integer Set DB = CurrentDb() Set T = DB.OpenTable("図面リスト印刷TEMP") ' テーブルを開きます。 X = DCount("印刷", "図面リスト印刷TEMP", "[印刷]=No") If X > 27 Then X = X - 27 + 43 X = X Mod 42 X = X For I = 1 To X T.MoveLast T.Delete Next I Else X = X - 27 + 43 X = X For I = 1 To X T.MoveLast T.Delete Next I End If End Sub どのようにすれば動くのでしょうか? 以上、宜しくお願い致します。

  • コンパイルエラー 属性が違う?

    はじめて、質問させていただきます。 マクロの勉強を始めたばかりの初心者ですが、こちらの質問や回答を拝見し、勉強させて頂いております。 早速ですが過去の質問で『選択行のセルの色を変更する』というマクロ(下記のコード)があったのですが、私にとっては実用的で魅力のあるコードでしたので活用させて頂いております。現在シートに、このコードを記録してシートがアクティブになった時に実行させているのですが、これを単純にマクロ(1)とマクロ(2)にコードを記載してマクロの実行で、有効と無効に出来るようにしたいのですが、『コンパイルエラー 属性が適切ではありません』というエラーになります。 現在、私のスキルはマクロの記録で覚えさせたコードを組み合わせる位のレベルです。 初歩的でお恥ずかしい質問ですが、ご指導下さい。 ----------コード---------- Private m_ROW As Range '変更前の行番号 Private m_IRO As Variant '変更前の色 Private Const MYCOLOR As Long = 36 '変更する色番号 Sub test() '選択した行に色を付ける Dim Target As Range Dim i As Integer Dim 処理対象セル As Range Dim 処理対象セル色 As String Set Target = Selection If Target.Row > 1 Then '2行目以降を対象とする '変更前の色に戻す If Not m_ROW Is Nothing Then i = 0 For Each 処理対象セル In m_ROW 処理対象セル.Interior.ColorIndex = CInt(m_IRO(i)) i = i + 1 Next Set m_ROW = Nothing m_IRO = "" Else '変更前の行番号と色を記憶 Set m_ROW = Target For Each 処理対象セル In m_ROW m_IRO = m_IRO & " " & 処理対象セル.Interior.ColorIndex Next m_IRO = Split(Trim(m_IRO)) '色を変更 Target.Interior.ColorIndex = MYCOLOR End If End Sub

  • Access2002 VB がエラー

    Access2002 VBで以下のコーディングをしてます Dim db As Database Dim rs As Recordset Dim fld As Field Set db = CurrentDb Set rs = db.OpenRecordset("ConvertChar") これを実行するとdb宣言行で以下のエラーが表示されます。 コンパイルエラー: ユーザ定義型は定義されていません。 これは何が原因でエラーとなるのでしょうか? 宜しくお願いします。

  • 開いている別のファイルにExcelのマクロで上書きしたい

    開いている別のファイルにExcelのマクロで上書きしたい いつも申し訳ありませんが またExcelのマクロについて質問させてください。 名前 = ActiveWorkbook.Name Set ファイル = Application.FileDialog(msoFileDialogSaveAs) Application.FileDialog(msoFileDialogSaveAs).InitialFileName = "コピー" & 名前 If ファイル.Show = -1 Then Worksheets.Copy ActiveWorkbook.SaveAs "コピー" & 名前 End If Set ファイル = Nothing これにより、現在開いているファイルを マクロを付けない状態で 名前の前に「コピー」と付けた別のファイルとして保存しています。 ただ問題は 同じ「コピー」が付いたファイルがすでに開かれている場合 保存しようとしても 実行時エラー '1004': このブックを、ほかの開いているブックまたはアドインと同じ名前では 保存できません。別の名前を指定するか、または保存する前に開いている ブックまたはアドインを閉じてくさい。 というエラーが表示されてしまうのです。 Excel2002でもExcel2003でも同じでした。 これを 仮に「コピー」の付いているファイルが すでに開かれているとしても これに上書きする形で保存できるようにするためには どうすればよいのでしょうか。 ご回答をよろしくお願いいたします。

専門家に質問してみよう