• ベストアンサー

処理後、Excelファイルを開くとうまく立ち上がりません

原本となるExcelファイルをコピーして、 VBの画面内容をコピーしたExcelファイルに展開させる、 と言うプログラムを作りました。 処理を終了して、プログラムが 立ち上がった状態で、Excelファイルを開くと うまく立ち上がりません。 (Excelファイルの表示がおかしくなってしまいます) タスクマネージャを見てもリソースは食っていないし、 他のアプリ(Word、IE、Outlook等)は普通に開けます。 OSのフリーズも起こりません。 ソースを見ないと判断が付きにくいと思われますが、 発生要因等がありましたら回答願います。 備考として、各スペックと処理フロー概要を記載します。 【各スペック】 OS:Win2000 SP1 VB:VB6.SP5 Excel:Excel2000 CPU:pentium3 1GHZ RAM:256KB 【処理フロー概要】 1:原本ファイルが開いているかチェック 2:原本ファイルをコピー 3:コピーしたファイルを開く 4:画面内容→コピーしたファイルのシートの各セルに展開 5:コピーしたファイルをセーブ 6:コピーしたファイルをクローズ 7:新しいファイル名を作成 8:コピーしたファイルを新しいファイル名にリネーム

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.5

公開していただいた部分以外で不具合があるのかな? http://oshiete1.goo.ne.jp/kotaeru.php3?q=133035 に載っているサンプル通りの手順になっているでしょうか?

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=133035
usi-iti
質問者

お礼

TAGOSAKUさんの提示したやり方を 参考にして、解決しました。 ありがとうございました!

その他の回答 (5)

  • bugmaru
  • ベストアンサー率38% (76/195)
回答No.6

実際にExcelオブジェクトを生成、消滅しているソース個所を示してください。 提示されているソースがすべててであるなら、問題はExcelオブジェクトその ものがメモリに残っているのではないでしょうか? No.5さんの示している方法に書き換える事は可能ですか? やってみて下さい。

usi-iti
質問者

お礼

度々のレス、ありがとうございます。 下記の箇所以外では Excelオブジェクトの生成、 消滅しているソース個所は無いです。 変数の宣言(Dim wb As Workbook)も Private Sub コマンドボタン_Click()の中です。 TAGOSAKUさんの提示したやり方は まだ試していませんが、他に解決方法が 無いようでしたら、書き換えてみます。

usi-iti
質問者

補足

TAGOSAKUさんの提示したやり方を 参考にして、解決しました。 ありがとうございました!

  • bugmaru
  • ベストアンサー率38% (76/195)
回答No.4

そもそもソース中に突然、Workbooks.Openと言う命令が出てきていますが、WorkbooksはExcel.WorkBooksの事だと思いますが、このExcelオブジェクトは何処で生成して何処で消滅させているんですか?

usi-iti
質問者

お礼

>そもそもソース中に突然、Workbooks.Openと言う命令が出てきていますが… ファイル操作の処理は 全てコマンドボタン_click内で行っています。

usi-iti
質問者

補足

補足しますと Private Sub 実行_Click() ファイル操作処理 end sub と言う形式です。

  • bugmaru
  • ベストアンサー率38% (76/195)
回答No.3

検証してないので推測ですが、やってみて下さい。 wbオブジェクトはローカル変数として割り当てたオブジェクトでこいつを Closeして Nothingしてもwbに割り当てられたメモリが解放されるだけです。 Workbooks.Open ("C:\aaa\ccc.xls") ↑ここで生成されているオブジェクトがメモリ上に生成されたままです。 Workbook.Close命令を実行してみて下さい オブジェクト操作は、生成と消滅だいたいセットで命令が用意されているので 対でつかうようにした方が無難です。

usi-iti
質問者

お礼

回答ありがとうございます。 Workbooks.Closeを 一番最後に組み込んでみました。 処理後、他のExcelファイルを立ち上げてみたら、 1回目は正常に立ち上がりますが、そのファイルを閉じて 再度Excelファイルを立ち上げてみたら…ダメでした。 Excel以外は普通に立ち上がります。 変数を150個くらい使っているので、 不用意にメモリを食っているからだと思ったんですが、 そうしたらExcelファイルしかおかしくなる、なんて 事は無いと思うのですが…? 引き続き書き込み等をお待ちしております。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

ある特定パターンのコーディングにより、EXCELが残るパターンがあります。 タスクに残って無くても、プロセスが終了されないのです。 以前に「EXCELの残骸」で残ったプロセスを全て終了させるサンプルを掲載しました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=231028 の「quitAllExcel() 」関数を使用してみてはいかがでしょうか?

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=231028
usi-iti
質問者

お礼

回答ありがとうございます。 下記の方のご指摘の通り、ファイル操作をチェックしてみました。 ファイル操作はこんな感じです。 Dim wb As Workbook 'Excelブック 'ファイルコピー FileCopy "C:\aaa\bbb.xls", "C:\aaa\ccc.xls" 'ファイルオープン Workbooks.Open ("C:\aaa\ccc.xls") Set wb = ActiveWorkbook wb.ActiveSheet.Range("a1") = テキストボックス1.Text '保存 wb.Save 'ファイルクローズ wb.Close 'ファイル名変更 Name "C:\aaa\ccc.xls" As "C:\aaa\ddd.xls" 多分初歩的な間違いをしているかと 思いますが… ちなみに一番最後に「Set wb = Nothing」を 入れてもダメでした。

  • bugmaru
  • ベストアンサー率38% (76/195)
回答No.1

VBの中から生成しているExcelオブジェクトを正しく終了させていないのでは?

usi-iti
質問者

お礼

回答ありがとうございます。 ご指摘の通り、ファイル操作をチェックしてみました。 ファイル操作はこんな感じです。 Dim wb As Workbook 'Excelブック 'ファイルコピー FileCopy "C:\aaa\bbb.xls", "C:\aaa\ccc.xls" 'ファイルオープン Workbooks.Open ("C:\aaa\ccc.xls") Set wb = ActiveWorkbook wb.ActiveSheet.Range("a1") = テキストボックス1.Text '保存 wb.Save 'ファイルクローズ wb.Close 'ファイル名変更 Name "C:\aaa\ccc.xls" As "C:\aaa\ddd.xls" 多分初歩的な間違いをしているかと 思いますが…

関連するQ&A

  • VB.NETによるEXCELの行挿入

    VB.NET 2005/XP(sp2)/Excel2003(sp2) 上記の環境で開発しておる者です。 VB.NETでExcelを操作するプログラムを作ろうといています。 内容は雛形Sheetの行(複数行)をコピーして、新しく作成したSheetに貼り付ける処理をしたいのですが、手法がわかりません…。 Excel起動・新しいSheetの作成・Excelの保存はなんとかできましたが、行コピーとコピーした行の挿入部分のサンプルが御座いましたら、どなたか、教えて頂けないでしょうか? よろしくお願い致します。

  • Excelファイルの処理、どのプログラムがよい?

    .csvファイルが100個くらいあります。 各ファイルの行数は500~65000ほど、列数は7前後です。 これらのファイルを読み込み、単純操作を行い、結果表示をしたいというのが目的です。 1.具体的にはフォームにファイル一覧が表示される 2.一覧からファイルをクリックすると、ファイルがメモリあるいは、グリッド(?)などに読み込まれる 3.読み込まれたファイルに単純なExcelの処理をほどこす(MAX,MIN関数や加減乗除など) このプログラムを作成するには、どのアプリケーションで作成すべきですか? 自分ができそうなのは、VB.net、Excel、VBAなど(全てサンデープログラマー程度)です。 Javaとか使えません。

  • エクセル付きVBでファイルオープンすると止まる

    エクセル付きのVBでショートカットキーでマクロを起動し、他のエクセルのファイル(ブック)をオープンするとプログラムが止まり、以降のマクロを処理できません。VBの画面で実行ボタンをクリックするとマクロ通りに正しく処理されるので、マクロ自体に問題はないと思います。 どなたか同様の経験をされた方、もしくは解決方法をご存知の方、解決方法を教えてください。 マクロは「Workbooks.open("パス\ファイル名")」または「workbooks.open FileName:="パス\ファイル名"」としており、どちらも止まります。

  • VBの処理結果をEXCELシートへ出力したい

    VB6で処理した結果を、EXCELシートへ編集しプリンターへ出力する方法を教えて下さい。 (1)VBからEXCELをどのようにして、起動させるのか。 (2)EXCELファイルのオープンはどのようにするのか。 (3)BVとEXCEL間の制御が分らない。

  • VBからExcel上の処理をするプログラムを作成しています。

    VB初心者です。 今、VBの画面からExcelを起動させて、一連の処理をした後、 またVBの画面に自動的に戻るようなプログラムを作成しようとしているのですが、 Excelのシートを削除する時に、ダイアログボックスが開いてしまい、そこで処理が止まってしまいます。 ダイアログボックスを開かないようにするとか、自動的にOKボタンを押したことにするとか、 何か方法があったら教えてください。

  • excelで最初に開いたファイル名称を覚えておく様な処理は可能ですか?

    excelで最初に開いたファイル名称を覚えておく様な処理は可能ですか? 1.最初の処理 (1)A.xlsのファイルを開く (2)マクロ:2010.xlsのファイルを開く (3)マクロ:チェックのシートをA.xlsの明細のシートの前に追加 (4)マクロ:チェックのシート名称をコピーした日付と時間のシート名に変更 (5)マクロ:2010.xlsのファイルをディスクトップ上から削除 2.後から追加する処理 (6)B.xlsのファイルを開く (B.xlsは、A.xlsとは異なるフォルダを作成し、A.xlsの特定のセルの中身の名称でファイル名保存されます。名前が異なるだけでマクロの中身はA.xlsと同じ) (7)マクロ:2010.xlsのファイルを開く (8)マクロ:チェックのシートをB.xlsの明細のシートの前に追加 (9)マクロ:チェックのシート名称をコピーした日付と時間のシート名に変更 (10)マクロ:2010.xlsのファイルをディスクトップ上から削除 上記を対応する為に下記の様なマクロ((6)(7)の部分を抜粋)を設定しています。 '2010.xlsのファイルを開く(2010.xlsのファイルは適宜、ディスクトップにコピーされます) Workbooks.Open FileName:="C:\Documents and Settings\ID\デスクトップ\2010.xls" 'チェックのシートを現在のブックの明細の前にコピーする。 Windows("2010.xls").Activate Sheets("チェック").Copy before:=Workbooks(1).Sheets("明細") 単独でA.xlsやB.xlsのファイルが開かれている場合には、 上記の対応で問題ないのですが、A.xls、B.xls以外のexcelファイルが開かれていると、 実行時エラーが出てしまいます。 Workbooks(1)の部分で最初に開いたexcelのファイル名称を指定しているのが 影響しているのはわかるのですが、ここの処理をなんとかしたいというおもいです。 つまり、複数のexcelファイルが開かれていて、A.xlsやB.xlsのファイルを後から開いても エラーがでない様にするには、どの様な処理にしたらよいのか教えて頂きたく。 マクロを実行したexcelのファイル名を覚えておいて、その名前が(1)に置き換わる 様な処理が望まれる処理です。

  • バッチ処理について

    はじめまして! 現在VB5.0で下記のようなプログラムを作っています。 TextBoxにフォルダ名を指定→Commandボタンを押下→Excel出力 このフォルダにはいくつかのテキストファイルがあり それを読込んで、必要な情報だけをグラフ化してEXCELに 表示しています。 実はこのプログラムをバッチで処理する必要にせまられ たのですが、できるのかどうかもわかりません。 もし、処理できるならどのようにしたらいいのでしょうか? プログラム初心者なもので質問の仕方が悪いかもしれませんが、よろしくお願いします。

  • Excel2003のSP3をインストール中止後にExcelファイルが開けなくなりました。

    Excel2003のSP3のインストールについての質問です。 Excel2003のSP3のインストールを行ったのですが、Excel2003をインストールしたCD-ROMが手元になく、SP3のインストールは後ほど行おうとキャンセルをしました。 そして、その後にExcelファイルを開くとインストール画面が自動的に表示されるようになりました。 キャンセルを押すとインストール画面は消えるのですが、Excelファイルも開けません。 Excelファイルを開くたびにインストール画面が出てExcelファイルが開けないので困っています。。。 どなたか対処法などご存じではないでしょうか? 素人考えでインストール画面を表示するファイルなどがあるのかなと期待しています。 よろしくお願いします。

  • Excelオートメーションについて

    こんにちは。 VC++6.0 Excelオートメーション操作を行っています。 Excel内で、セルのコピー&ペーストをたくさんする プログラムなので、本プログラムの処理中に、 他でクリップボードを更新する操作(文字列のコピー&ペーストなど)を行うと、 Excel内のコピー&ペースト処理がおかしくなってしまいます。 これらはVBAなどにも言えることなのかもしれませんが、 Excelのセルをコピー&ペーストする処理を行っている最中は、他でクリップボードを更新する操作を行ってはいけないものなのでしょうか。 アプリ側で何かしら回避策はあるのでしょうか。 (Excel内でコピー&ペーストを使わず、全て直入力する、、ということは抜きにして…) 宜しくお願いします。 Windows XP Pro SP2

  • Excelが開かない

    EXCELのファイルが開かなくなりました。アイコンをダブルクリックすると、「このプログラムは不正な処理・・・」とエラーがでて、閉じるボタンを押すしかありません。 クイックビューアでは、見ることが出来ます。 ファイル名をaaa.xlsにしいて、 他のパソコンにコピーしても同じようにエラーがでます。 IEにドラッグアンドドロップしても、「ページが表示できません」と出ます。 ファイル名やEXCEL自体の問題ではなく、ファイルが壊れているのだと思います。 しかし、データ量が多いので、あきらめられません。 なんとか、データを移すことはできないでしょうか?

専門家に質問してみよう