- ベストアンサー
4.0マクロをExcel2003で実行する方法
- 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
- みんなの回答 (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
その他の回答 (5)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>「マクロシートに RETURN() または HALT() が記述されていません。」というエラー修正のアイデアはありませんか? SendKeys ("{ENTER}") を修正した行の次行に入れてみてはいかがですか?
お礼
hana-hana3さん、いろいろサジェスチョンありがとうございました。 少し勉強になりました。 解決しました。長く付き合ってくださって感謝しています。
補足
すみません。 とにかく、マクロ、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)
#2です。 Excel2003で確かにファイル選択ダイアログが出ました。 ソルバーを使ったこと無いうえデータ環境とかも不明なので、希望動作なのか解りませんけど、取り合えず SOLVER.OK と SOLVER.SOLVE の「.」ピリオドを外したらダイアログは出なくなり、何か実行が掛かります。 Application.ExecuteExcel4Macro String:="SOLVER.XLA!SOLVEROK(!R49C2,2,0,(最適化!R49C3:R49C13))" Application.ExecuteExcel4Macro String:="SOLVER.XLA!SOLVERSOLVE()"
補足
ウアァー! 一歩前進。 試してみたら、(たぶん、I=1の場合を計算してI=2に進まず、)「マクロシートに RETURN() または HALT() が記述されていません。」 というダイアログがでてきますが、このダイアログの「OK」を一回一回14回クリックすれば、とにかくやりたい作業はできました。感激。 papayukaさんに感謝。 自分で使うものなので、これで用は足りますが、「マクロシートに RETURN() または HALT() が記述されていません。」というエラー修正のアイデアはありませんか?
- hana-hana3
- ベストアンサー率31% (4940/15541)
>エラーの内容について、うまく説明できませんが、計算結果を書き込もうとして書き込み先が見つからないようなのです。 どのようなエラーが起きているか解らないと予測すらできませんが・・・。 実際にエラーが起きているなら実行が停止し、VBE画面からエラーが起きているコードが反転表示されます。 ソルバーは使った事が無いので解りませんが、コードからはファイル選択ダイアログを呼び出す部分はありませんので、他のコードが実行されているのではないでしょうか?
- papayuka
- ベストアンサー率45% (1388/3066)
「最適化」っていうシートが無いからとか、、、
補足
papayuka さん、 ご指摘ありがとうございます。 しかし、「最適化」のシートはもちろんあります。 とにかく、Excel97や2000では問題なく実行されますので、そういう根本的な問題ではないと思うのですが・・・?
- hana-hana3
- ベストアンサー率31% (4940/15541)
>Excel2002、Excel2003では動きません。 これだけでは何とも言えません。 どのようなエラーが表示されるのでしょうか? SOLVER.XLA(ソルバーアドイン)と言うアドインは設定(登録)してありますか?
補足
hana-hana3さん、レスポンスありがとうございます。 (1) executeする前にソルバーアドインをロードしています。これは問題ないと思います。 (2)エラーの内容について、うまく説明できませんが、計算結果を書き込もうとして書き込み先が見つからないようなのです。つまり、ファイル選択ダイアログが出てきます。 全然関係ありませんが、ファイル選択ダイアログのイメージは次のようなものです。 http://www.softvision.co.jp/dbpro/help/dialog/cmmnfsel.htm
お礼
お礼を書く欄を間違いました。completeです。 本当に何とお礼をいっていいのかわかりません。 随分時間をかけていただきましたし、非常に恐縮しています。 ここでダメなら、東工大の学生課にでも行って「簡単なプログラム修正できる人求む。完成すれば5千円~1万円」とでも掲示板に貼ってこようかと思っていました。
補足
完成です。私の今のPC(Excel2002とExcel2003の2台)でもワークしました。 本当に長い間付き合ってくださって大変感謝しています。 お礼のしようもありません。 今気がつきましたが、papayukaさんは一般人とのこと。とてもそうとは思えません。 こんなに感激したのは久しぶりです。凄く嬉しいです。 私も何か人助けをするようにしようと思いました。