• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:4.0マクロを Excel2003で実行?)

4.0マクロをExcel2003で実行する方法

このQ&Aのポイント
  • Excel2000まで動作していた4.0マクロがExcel2002およびExcel2003では動作しない問題についての解決方法を教えてください。
  • マクロを修正するための知識がなく、友人から10年以上前にもらったExcelファイルを使用しています。修正してくれる業者を教えてください。
  • 以下のマクロはExcel2000までは動作しますが、Excel2002およびExcel2003では動作しません。 Sub Record1() For I = 1 To 15 Cells(50, 1).Value = Cells(51, 4) - Cells(52, 4) * (I - 1) Application.ExecuteExcel4Macro String:= "SOLVER.XLA!SOLVER.OK(!R49C2,2,0,(最適化!R49C3:R49C13))" Application.ExecuteExcel4Macro String:= "SOLVER.XLA!SOLVER.SOLVE()" SendKeys ("{ENTER}") Range("C49:M49").Copy Cells(31 + I, 3).Select Selection.PasteSpecial Paste:=xlValues Next I End Sub

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.6

#2です。 Excel2003でVisualBasicEditor画面のツール-参照設定の参照可能なライブラリファイルで「ソルバー」にチェックを入れてから、下記を実行したら取り合えずループしましたが、、、 データ環境が異なるので正しい動作なのか解りませんけど。 Sub Record2() With ActiveSheet   For i = 1 To 15     .Range("A50").Value = .Range("D51") - .Range("D52") * (i - 1)     SolverOk SetCell:=.Range("B49"), _          MaxMinVal:=2, _          ByChange:=.Range("C49:M49")     SolverSolve UserFinish:=False     SendKeys ("{ENTER}")     .Range("C49:M49").Copy     .Range("C" & 31 + i).PasteSpecial Paste:=xlValues   Next i End With End Sub

kent-goo
質問者

お礼

お礼を書く欄を間違いました。completeです。 本当に何とお礼をいっていいのかわかりません。 随分時間をかけていただきましたし、非常に恐縮しています。 ここでダメなら、東工大の学生課にでも行って「簡単なプログラム修正できる人求む。完成すれば5千円~1万円」とでも掲示板に貼ってこようかと思っていました。

kent-goo
質問者

補足

完成です。私の今のPC(Excel2002とExcel2003の2台)でもワークしました。 本当に長い間付き合ってくださって大変感謝しています。 お礼のしようもありません。 今気がつきましたが、papayukaさんは一般人とのこと。とてもそうとは思えません。 こんなに感激したのは久しぶりです。凄く嬉しいです。 私も何か人助けをするようにしようと思いました。

その他の回答 (5)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.5

>「マクロシートに RETURN() または HALT() が記述されていません。」というエラー修正のアイデアはありませんか? SendKeys ("{ENTER}") を修正した行の次行に入れてみてはいかがですか?

kent-goo
質問者

お礼

hana-hana3さん、いろいろサジェスチョンありがとうございました。 少し勉強になりました。 解決しました。長く付き合ってくださって感謝しています。

kent-goo
質問者

補足

すみません。 とにかく、マクロ、VBAの知識はゼロなもんで、意味がわかりません。具体的にどうするのでしょう? ところで、会社の同僚にも聞きまくったところ、次のプログラムもでてきました。これはエラー・ダイアログは出てきませんが、ループを実行してくれません。つまり、papayukaさんが教えてくれたのと同じ結果です。 Sub Record1() For I = 1 To 15 Cells(50, 1).Value = Cells(51, 4) - Cells(52, 4) * (I - 1) SolverOK SetCell:=Range("B49"), _ MaxMinVal:=2, _ ByChange:=Range("C49:M49") SolverSolve UserFinish:=False 'Application.ExecuteExcel4Macro String:="SOLVER.XLA!SOLVEROK(!R49C2,2,0,(最適化!R49C3:R49C13))" 'Application.ExecuteExcel4Macro String:="SOLVER.XLA!SOLVERSOLVE(UserFinish:=False)" ' SendKeys ("{ENTER}") Range("C49:M49").Copy Cells(31 + I, 3).Select Selection.PasteSpecial Paste:=xlValues Next I End Sub

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

#2です。 Excel2003で確かにファイル選択ダイアログが出ました。 ソルバーを使ったこと無いうえデータ環境とかも不明なので、希望動作なのか解りませんけど、取り合えず SOLVER.OK と SOLVER.SOLVE の「.」ピリオドを外したらダイアログは出なくなり、何か実行が掛かります。 Application.ExecuteExcel4Macro String:="SOLVER.XLA!SOLVEROK(!R49C2,2,0,(最適化!R49C3:R49C13))" Application.ExecuteExcel4Macro String:="SOLVER.XLA!SOLVERSOLVE()"

kent-goo
質問者

補足

ウアァー! 一歩前進。 試してみたら、(たぶん、I=1の場合を計算してI=2に進まず、)「マクロシートに RETURN() または HALT() が記述されていません。」 というダイアログがでてきますが、このダイアログの「OK」を一回一回14回クリックすれば、とにかくやりたい作業はできました。感激。 papayukaさんに感謝。 自分で使うものなので、これで用は足りますが、「マクロシートに RETURN() または HALT() が記述されていません。」というエラー修正のアイデアはありませんか?

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>エラーの内容について、うまく説明できませんが、計算結果を書き込もうとして書き込み先が見つからないようなのです。 どのようなエラーが起きているか解らないと予測すらできませんが・・・。 実際にエラーが起きているなら実行が停止し、VBE画面からエラーが起きているコードが反転表示されます。 ソルバーは使った事が無いので解りませんが、コードからはファイル選択ダイアログを呼び出す部分はありませんので、他のコードが実行されているのではないでしょうか?

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

「最適化」っていうシートが無いからとか、、、

kent-goo
質問者

補足

papayuka さん、 ご指摘ありがとうございます。 しかし、「最適化」のシートはもちろんあります。 とにかく、Excel97や2000では問題なく実行されますので、そういう根本的な問題ではないと思うのですが・・・?

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>Excel2002、Excel2003では動きません。 これだけでは何とも言えません。 どのようなエラーが表示されるのでしょうか? SOLVER.XLA(ソルバーアドイン)と言うアドインは設定(登録)してありますか?

kent-goo
質問者

補足

hana-hana3さん、レスポンスありがとうございます。 (1) executeする前にソルバーアドインをロードしています。これは問題ないと思います。 (2)エラーの内容について、うまく説明できませんが、計算結果を書き込もうとして書き込み先が見つからないようなのです。つまり、ファイル選択ダイアログが出てきます。 全然関係ありませんが、ファイル選択ダイアログのイメージは次のようなものです。 http://www.softvision.co.jp/dbpro/help/dialog/cmmnfsel.htm

関連するQ&A