• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2000のマクロが2007で型が一致しませんと表示されます)

Excel2000のマクロが2007で型が一致しませんと表示されます

このQ&Aのポイント
  • Excel2000のマクロがExcel2007で型が一致しないと表示されます。自作マクロを作成し、別のブックから転記するものですが、Excel2000では正常に動作するのに、Excel2007では転記対象のセルが0の場合にエラーが出てしまいます。
  • マクロ初心者であるため、ExecuteExcel4Macroや型について調べましたが、理解できませんでした。解決策を知りたいです。
  • 質問のコードは、1から7までの行のセルにExecuteExcel4Macroを使って別のブックのセルの値を転記するものです。転記対象のセルが0の場合には空白にするという処理を行っています。しかし、Excel2007では「型が一致しません」というエラーが出てしまいます。

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

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

またまた登場、myRangeです。 >転記されるようになりましたが ということは、エラーの原因は先の回答のように meca.xlsの該当セルに●エラー値●があったから、という理解でいいですか? それが一番重要なことですから、コメントした方がいいと思います。 また、「エラー値」が原因なら、 エクセルのバージョンに関係なく同じエラーになるはずです。(I'm Sure)   ま、それは置いといて、補足の回答。 >1ステップごとに「値の更新」というダイアログボックスが出て コードの前後を、DisplayAlerts プロパティで挟みましょう。 '---------------------------------------------------------   Application.DisplayAlerts = False  '●最初はFalse For i = 1 To 7  Cells(i, 1).Value = ExecuteExcel4Macro("'\[meca.xls]Sheet1'!R" & i & "C1")  If IsError(Cells(i, 1).Value) Then Cells(i, 1).Value = ""  If Cells(i, 1).Value = 0 Then Cells(i, 1).Value = "" Next i   Application.DisplayAlerts = True  '●最後はTrueに戻しておく '------------------------------------------- DisplayAleartsについてはご自分で調べてみてください。 そうすることがスキルアップにつながると考えます。 以上です。

reimy1
質問者

お礼

エラーも無くなり、できました。 ステップごとにやってみてどうやら("'\[meca.xls] あたりを疑って絶対パスに変更したら("'C:\[meca.xls]すんなりいきました。 お陰さまで大分勉強できてVBAの面白さも わかってきました。 ありがとうございました。

その他の回答 (4)

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

回答3、myRangeです。 回答2で上手くいかなかったら(同じエラーが出たら) meca.xlsから読み込んでいるセルの値に●エラー値(#VALUE,#DIV/0等)があることが考えられます。 それは、meca.xlsを見なくてもCells(i,1)に転記されてるはずなので直ぐ確認できます。 もしエラー値が原因だったら、以下のようにエラー値を判断します。 '-------------------------- For i = 1 To 7  Cells(i, 1).Value = ExecuteExcel4Macro("'\[meca.xls]Sheet1'!R" & i & "C1")  If IsError(Cells(i, 1).Value) Then Cells(i, 1).Value = ""  If Cells(i, 1).Value = 0 Then Cells(i, 1).Value = "" Next i '--------------------------- エラー値だったら、空白を転記 0だったら、空白を転記 マクロになれてきたら、On Error ステートメントを使うのもいいかも知れません。 以上です。

reimy1
質問者

補足

myRange様。 細かい点まで解答していただいて感謝します。 転記されるようになりましたが 1ステップごとに「値の更新」という ダイアログボックスが出て その度にファイルを選び直さないと 値が転記されないのです。 どうすればよいでしょうか。

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

手元に2007がないので検証できないので何ですが。。。 >If ExecuteExcel4Macro("'\[meca.xls]Sheet1'!R" & i & "C1") = "0" Then Cells(i, 1).Value = "" の ="0" を = 0 にしてみてください。 それでダメなら、 ExecuteExcel4Macro("'\[meca.xls]Sheet1'!R" & i & "C1") を2度使う必要はないので、IF文を If Cells(i, 1).Value = 0 Then Cells(i, 1).Value = 0 に代えてみてください。 以上です。

  • ro-chan
  • ベストアンサー率38% (45/116)
回答No.2

度々すみません。 分かりやすいページがありました。 [開発]タブの[マクロのセキュリティ]でも設定できます。 ご参考まで。

参考URL:
http://kiyopon.sakura.ne.jp/soft/2007.html
reimy1
質問者

補足

ご連絡ありがとうございます。事前にマクロは有効にしていました。 動作させた後で実行したら「型が一致しません」のエラーが表示されました。

  • ro-chan
  • ベストアンサー率38% (45/116)
回答No.1

マクロが無効になっているのではないでしょうか?エクセル2007では、標準の設定で、無効になっていると思います。それを、有効に設定すればよいと思います。

関連するQ&A

専門家に質問してみよう