- ベストアンサー
Excel ファイルに保存すると実行時エラーになる
こんにちは。宮本と申します。VB6(SP5)で、 プログラミングをしております。 下記の様にプログラミングをしましたが、どうしても [実行時エラー’1004’ test_1.xlsにアクセスできません]と、なります。 c:\test.xls は、元々ある事を前提とし、c:\test_1.xlsに上書きをしたいのです。 宜しくお願い致します。 Dim wApp As Excel.Application Dim wExl As Object Set wApp = CreateObject("Excel.Application") Set wApp = CreateObject("Excel.Application") Set wExl = wApp.Workbooks.Open("c:\test.xls") wExl.Worksheets(1).Cells(1, 1).Value = 3000 wExl.Application.Visible = False wExl.Application.DisplayAlerts = False wExl.SaveAs "c:\test_1.xls" <---ここで、エラー
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
Set wApp = Nothing wExl.Close True 最後に追加すればOKだと思います。
その他の回答 (6)
- you111111
- ベストアンサー率45% (20/44)
wExl.Closeの追加で解決ですね・・・ ちなみにCloseの前に.DisplayAlertsはTrueに戻した方がよいでしょう。 #4さんの回答について補足というかなんと言うか・・・ Sava → 上書き保存 SaveAs → 名前をつけて保存(上書き可) です。
お礼
解決いたしました。ありがとうございます。 Save & SaveAs の 件も、勉強になりました。
- todo36
- ベストアンサー率58% (728/1234)
1回目にキッチリ終わっていないので、2回目にエラーになるのでは? CloseやSet Nothingをしてますか?
お礼
していませんでした。これが原因の様です。 ありがとうございました。
- ats8181oyaji
- ベストアンサー率38% (94/244)
こんにちは、ats8181oyajiです ごめんなさい。説明が足りませんでした 引数が違うエラーはSaveでファイル名を書くと 出ます。Saveは今開いているファイルを上書き 保存する場合に使います。 今回の場合は test_1.xlsについては新規に一回だけ作成するのですか? ならば、テストで一回目はSaveAsで正常にできますが (当方テスト済み)二回目はエラーになります。 ようするに、正しい処理です。 しかし、何度も同じtest_1.xlsに書き込みが発生する のでしたら、上記のことを考慮する必要があります。 いつでも書き換えるのであれば 1.test_1.xlsの存在チェックで、あればkillで削除 2.SaveAsで新規名前付け保存 で可能かと思います。
お礼
何度も、ありがとうございました。
- ats8181oyaji
- ベストアンサー率38% (94/244)
こんにちは、ats8181oyajiです SaveASとSaveの違いなのでは? SaveASは初回のみ、すでに存在するときはエラーです 二回目以後はSaveを使います。
補足
ご回答をありがとうございます。 >SaveASとSaveの違いなのでは? 書き換えてみました。が、今度は、 [実行時エラー'450' 引数の数が一致していません。 または、不正なプロパティを指定しています。] と、なってしまいました。(;_;) 原因は、No.1さんのおっしゃる様に他に原因が あるような気がしてきました。
- wan-chan
- ベストアンサー率13% (169/1255)
実行したところ1回目は上手く行きました。 (test.xlsのみ用意し、実行しました。) No.1さんもおっしゃるように、 test_1.xlsが使用中であることが原因のようです。
お礼
ご回答をありがとうございました。
- kmb01
- ベストアンサー率45% (63/138)
VBがないのでWSHのVBScriptで試したところ、 c:\test_1.xlsが別のエクセルで開かれていることが原因のようです。 Application.VisibleをTrueにしてみて確認してください。 または、Ctrl+Alt+Delのプログラムの強制終了画面でExcelというプログラムが動いていればそれを終了すればいいかも。
補足
ご回答をありがとうございました。 >Application.VisibleをTrueにしてみて確認 確認しました。c:\test.xls は、読み取り専用で開かれていました。が・・・それ、以外はありません。(;_;)
お礼
解決いたしました。ありがとうございました。