会社で在庫管理をエクセルでやってます。

エクセルを開こうとすると次のメッセージが表示されます。
【アプリケーションエラー】
≪エラーが発生したため、EXCEL.exeを終了します。
プログラムをもう一度開始する必要があります。
エラーログを作成しています。--OK--≫
と表示され開くことができなくなりました。

エラー診断で保存されていたエラーは
iexplore.exe cooooo5<nosymdols>(70F65EOE)です。

内容が濃く大量の在庫管理をエクセルだけででやることじたいに無理があると思うんですが
社長の経費削減の案でして。。

とても困っています。どうぞご指導の方よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

C0000005のエラーは、基本的にアクセスしてはいけない所に


アクセスしたときに出るエラーです。

アクセスエラー自体の回避策は、これといったものはないと
思いますが、やはりファイルの容量が大きいと発生しやすい
みたいです。

ある項目毎にファイルを小分けにしてみてはどうでしょうか?

ハードディスクが断片化してる場合も起こりやすいようです。
Windows95,98,ME系であれば、Cドライブ上で"*flag*"で検索
するとデフラグというものが見つかると思うので、それを使って
定期的に断片化したハードディスクを整理するのも手だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
項目毎に小分けしてやるようにしました。
おかげさまでエラーも出ず軽くなり助かりました。
バックアップをマメに取るようにします。

お礼日時:2002/04/14 02:56

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの動作が停止する事があります

エクセル2013をwindows7で使っています。

入力している時に何かの拍子でいきなり「エクセルは動作を停止しました」という
表示が現れ、エクセルが強制的に落ちるような状態になる事があります。

結構入力したあとですと、こまめに保存していないとデーターが消えてしまい困っています。

落ちたあとに再びエクセルを立ち上げると、前の入力していたファイルを選び立ち上げる事もたまにできますが、毎回ではありません。

エラーが出たときの詳細表示をそのまま下に書きますと、

問題イベント名:APPCRASH
アプリケーション名:EXCEL.EXE
アプリケーションのバージョン:15.0.4454.1503
アプリケーションのタイムスタンプ:50b592fe
障害モジュールの名前:ntdll.dll
障害モジュールのバージョン:6.1.7601.18205
障害モジュールのタイムスタンプ:51db96c5
例外コード:c0000005
例外オフセット:00052d94
OSバージョン:6.1.7601.2.1.0.256.48
ロケールID:1041
LCID:1041
skulcid:1041

となっています。

何が原因でどうすれば改善されるのでしょうか?
どうかお教えください。
宜しくお願いいたします。

エクセル2013をwindows7で使っています。

入力している時に何かの拍子でいきなり「エクセルは動作を停止しました」という
表示が現れ、エクセルが強制的に落ちるような状態になる事があります。

結構入力したあとですと、こまめに保存していないとデーターが消えてしまい困っています。

落ちたあとに再びエクセルを立ち上げると、前の入力していたファイルを選び立ち上げる事もたまにできますが、毎回ではありません。

エラーが出たときの詳細表示をそのまま下に書きますと、

問題イベント名:APPCRASH
アプ...続きを読む

Aベストアンサー

こちらのQ&Aが参考になりますでしょうか?

http://oshiete.goo.ne.jp/qa/249046.html

http://answers.microsoft.com/ja-jp/office/forum/office_2010-excel/%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E5%90%AB/2e755c83-b938-400c-af7c-af033538a915

あと、何かの常駐プログラムが悪さをする場合もあるようです。
常駐プログラムのうち、使いそうにないものをアンインストール
するといいかもしれません。

QExcelVBA実行後に時々落ちる

VBA初心者です。
色々調べてみましたが、どうしても原因が判りません。よろしくお願いします。

Excel2007
Windows7

実行後時々Excelが落ちてしまいます。

エラーの内容
***************************
問題の署名:
問題イベント名:APPCRASH
アプリケーション名:EXCEL.EXE
アプリケーションのバージョン:12.0.6661.5000
アプリケーションのタイムスタンプ:4f7cda6d
障害モジュールの名前:EXCEL.EXE
障害モジュールのバージョン:12.0.6661.5000
障害モジュールのタイムスタンプ:4f7cda6d
例外コード:c0000005
例外オフセット:0004da42
OS バージョン:6.1.7600.2.0.0.256.48
ロケール ID:1041

この問題に関する追加情報:
LCID:1041
Brand:Office12Crash
skulcid:1041

*****************************

以下のVBAに問題があるのでしょうか?

内容は「フォームのテキストに数字を入力し、入力した回数繰り返す」というものです。

******************************

Private Sub キャンセル_Click()
MsgBox "キャンセルされました"
Unload 奉行変換
End Sub

Private Sub 変換実行_Click()
DM = 実行枚数.Value
実行枚数.Value = Empty
MsgBox DM & "枚の伝票を変換します"
Unload 奉行変換
変換
End Sub


**********************************

入力用のシートで入力した内容を他のシートにためていくものです。
以下の内容を標準モジュールに書いています。

**********************************

Public DM As Byte '入力フォームテキストに入力された数
Public BGyo As Integer
Public BCol As Integer

Sub 変換開始()
BGyo = ActiveCell.Row '入力セルの行取得
BCol = ActiveCell.Column '入力セルの列取得
奉行変換.Show
End Sub


Sub 変換()
Dim hgyo As Integer
Dim BGyoH As Integer

If BGyo = 5 Or BGyo Mod 23 = 5 And BCol = 2 Then ’特定のセルがアクティブな時だけ実行

データー用シートの最終行指定
hgyo = Worksheets("HANYO").Cells(1, 3).CurrentRegion.Rows.Count
hgyo = hgyo + 1

For n = 1 To DM
BGyoH = BGyo + 3
With Worksheets("HANYO")

.Cells(hgyo, 3).Value = Cells(BGyo, BCol)

.Cells(hgyo, 5).Value = Cells(BGyoH, BCol + 1)

.Cells(hgyo, 6).Value = Cells(BGyoH, BCol + 2)

.Cells(hgyo, 7).Value = Cells(BGyoH + 1, BCol + 2)

.Cells(hgyo, 8).Value = Cells(BGyoH, BCol)

If Cells(BGyoH + 1, BCol + 1) = 2 Then
.Cells(hgyo, 10) = 1
ElseIf Cells(BGyoH + 1, BCol + 1) = "" Then
.Cells(hgyo, 10) = ""
.Cells(hgyo, 11) = "0"
ElseIf Cells(BGyoH + 1, BCol + 1) = 1 Then
.Cells(hgyo, 10) = 1
.Cells(hgyo, 11) = 1
End If



.Cells(hgyo, 13).Value = Cells(BGyoH, BCol + 6)

.Cells(hgyo, 14).Value = Cells(BGyoH, BCol + 7)

.Cells(hgyo, 15).Value = Cells(BGyoH + 1, BCol + 7)

.Cells(hgyo, 16).Value = Cells(BGyoH, BCol + 10)



If Cells(BGyoH + 1, BCol + 6) = 2 Then
.Cells(hgyo, 18) = 1
ElseIf Cells(BGyoH + 1, BCol + 6) = "" Then
.Cells(hgyo, 18) = ""
.Cells(hgyo, 19) = "0"
ElseIf Cells(BGyoH + 1, BCol + 6) = 1 Then
.Cells(hgyo, 18) = 1
.Cells(hgyo, 19) = 1
End If

.Cells(hgyo, 21).Value = Cells(BGyoH, BCol + 4) & Cells(BGyoH + 1, BCol + 4)


End With
hgyo = hgyo + 1
BGyoH = BGyoH + 2
Next nd
BGyo = BGyo + 23

Next n
Else
MsgBox "アクティブセルが日付にありません。"
Exit Sub
End If

End Sub

Excelが落ちるのはこれを実行した後のみ時々起きますので
私が作成した内容に何か問題があるのだと思うのですが
調べても判りません・・・・

この内容で情報は足りるでしょうか?
よろしくお願いします。

VBA初心者です。
色々調べてみましたが、どうしても原因が判りません。よろしくお願いします。

Excel2007
Windows7

実行後時々Excelが落ちてしまいます。

エラーの内容
***************************
問題の署名:
問題イベント名:APPCRASH
アプリケーション名:EXCEL.EXE
アプリケーションのバージョン:12.0.6661.5000
アプリケーションのタイムスタンプ:4f7cda6d
障害モジュールの名前:EXCEL.EXE
障害モジュールのバージョン:12.0.6661.5000
障害モジュールのタイムスタンプ:4f7cda6d
例外コー...続きを読む

Aベストアンサー

こんにちは。

一応ひとつひとつ確認していきますが

>  Next nd

Neext に対応する For がありません。
確実にコンパイルエラーになる間違いです。
誤って消してしまった関連の記述があったのか、
関連の記述を削除した時に消し忘れたものが残ってしまっているのか、
確認しましょう。
///
 
 
以下、今回のトラブルに直接関わりがあるかは状況次第ですが、 

>  Public DM As Byte '入力フォームテキストに入力された数

Byte 型というのは、バイナリデータのやり取りに使う為のものですから
こういう使い方をするものではありません。間違いです。
ユーザーフォームの TextBox の .Value から
数値文字列を格納するのなら Variant 型が正解です。

  Public DM As Variant

確認の上、書換えておいた方が無難です。
///
 
 
>  Public BGyo As Integer
>  Public BCol As Integer
 
>  Dim hgyo As Integer
>  Dim BGyoH As Integer
以上4点の宣言は Long 型を使うのが正常です。
.Row プロパティ、.Column プロパティ の戻り値は Long 型です。
Integer 型には収まりきらない大きな数値を扱いますから
必然 Long 型になる、という覚え方でも、当面は構わないですけれど、
本来は取得するプロパティに合わせるものです。
  Public BGyo As Long
  Public BCol As Long

  Dim hgyo As Long
  Dim BGyoH As Long
後になってからエラー原因になりそうな不備は直しておきましょう。
///
 
 
Sub 変換() に欠けてる宣言は以下。これは今回のトラブルとは無関係です。
  Dim n As Long
  Dim nd As Long
(但し、nd に関しては、推測です。)
///
 
 
以上は、比較的基本的で、環境や動作条件に左右されないレベルの手当てです。
確認して、それでも解決できない場合、は以下。
 
 
  Sub 変換開始()
これは、どうやって呼び出してますか?
シート画面からAlt + F8などでマクロを直接実行するのでしょうか?
もしそうなら、このセクションは読み飛ばして結構です。
シートにあるボタンやシェイプから実行させている場合は
その点、具体的で詳細な情報が必要です。
また、他のマクロから呼び出している場合も同様です。
///
 
 
以上で解決の目途が立たない場合は、試しに
>  奉行変換.Show

  奉行変換.Show vbModeless
に換えてから実行するとどうなるか、知らせてください。
Worksheets("HANYO") にシートの保護を適用しているかどうか知らせてください。
///
 
 
以上、とりあえず、気が付いた点だけレスしておきます。
確認してみてください。

こんにちは。

一応ひとつひとつ確認していきますが

>  Next nd

Neext に対応する For がありません。
確実にコンパイルエラーになる間違いです。
誤って消してしまった関連の記述があったのか、
関連の記述を削除した時に消し忘れたものが残ってしまっているのか、
確認しましょう。
///
 
 
以下、今回のトラブルに直接関わりがあるかは状況次第ですが、 

>  Public DM As Byte '入力フォームテキストに入力された数

Byte 型というのは、バイナリデータのやり取りに使う為のものですから
こういう使...続きを読む

Q突然Excelが動作停止

Windows7でExcel2007を使用していますが、Excelファイル作成中に突然下記メッセージが出て使用できなくなります。

「Microsoft Excelは動作を停止しました。」
しばらくして、
「問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ解決策等がある場合は、Windowsから通知されます。」

この後問題のファイルを上書き保存すると再度同じ状態になります。また、ファイルにグラフ等を多く使用して重くなるとこの状態になるようです。
解決策があればお教え下さい。

Aベストアンサー

こんにちわ

・ファイルにグラフ等を多く使用したり、マクロとの併用をするとExcelの負担が大きくなるため、不具合が出ることがあります。
・そのため、PC全体の不具合修正作業により、不具合が出る頻度が減ると思われます。

1:PC不具合修正
・Win7 ディスククリーンアップと検索し、ディスククリーンアップをします。
・終わりましたら、Advanced SystemCare7無料版と検索し、Advanced SystemCare7無料版をダウンロード、インストールします。
・インストールしたら、下記の手順を踏んでください。
・起動→右上(×印)付近にある「詳細設定」を選択→設定のケア欄にあるレジストリ修復、プライバシースイープ、ジャンクファイルクリーン(ゴミ箱以外)の項目に全てチェックを入れる。ディスクデフラグの「断片化が下記の%以上で実行」の所に常時デフラグを選択します。
・終わりましたら、適用→OKを選択します。これにより設定は完了です。
・再度起動→ケア→すべてチェックを入れる
・ケア→ケア欄にあるスキャンを選択→少し時間がかかります。→修復を選択します。→自動的に修復されます。全体が修復されるので、終わるまで待ちます。
・終わりましたら、”WIN7 チェックディスク”と検索し、チェックディスクを行ってください。
・終わりましたら、1にてインストールしたソフトをアンインストールします。

こんにちわ

・ファイルにグラフ等を多く使用したり、マクロとの併用をするとExcelの負担が大きくなるため、不具合が出ることがあります。
・そのため、PC全体の不具合修正作業により、不具合が出る頻度が減ると思われます。

1:PC不具合修正
・Win7 ディスククリーンアップと検索し、ディスククリーンアップをします。
・終わりましたら、Advanced SystemCare7無料版と検索し、Advanced SystemCare7無料版をダウンロード、インストールします。
・インストールしたら、下記の手順を踏んでください。
・起動→...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qアプリケーション終了時例外エラー(アクセス違反)の調査方法について

大変困っています。

アプリケーションが終了するときに「アクセス違反」がワトソン博士によって取得されています。
当方アプリケーションなどに弱く、解決策の想像が付きません。どなたかご教授お願いいたします。

<解決策例>
・どういったスキルを持った人にどの様な調査を進めさせれば良いのか。。。
・以前同様な事があり原因は○○だった
・恐らく○○だろう
 など、お願いいたします。

<ユーザ報告>
処理終了し、画面が消えたところでワトソン博士のメッセージが表示された

<ログ抜粋>
例外番号c0000005(アクセス違反)

ファンクション:RtlDestroyHeap
~略~
フォールト → 77f6d672 8908 mov [eax],ecx ds:09000001=00000000

<備考>
開発環境:MSVC6.0
動作環境:Windows NT4.0 SP6a
発生頻度:2回/年
使用頻度:2~3回/(平日)

以上、よろしくお願いします。

Aベストアンサー

発生頻度が年2回というのはなかなか厳しい条件ですね。

さて・・・

「私であれば、次の手順で調査を行います。」という書き始めで延々とデバッグ方法を書いていたのですが、書き終わってからちょっとGoogleで検索したら、ひょっとするとちょうど質問者さんのトラブルと同じかもしれない現象がMicrosoftのKBにありました。

場所はここです: http://support.microsoft.com/kb/168006/ja

要点をかいつまんで書くと、MSVCRT/MFCのDLLのバージョン不整合でエラーが発生することがある、という内容です。KB自体は特定のアプリケーションについて書かれていますが、記述されている現象と原因の関係から考えるに、他のアプリケーションでも同様の現象が発生すると思われます。

さてさて。

せっかく書いた文章を捨てるのがもったいないので(貧乏性)、邪魔かもしれませんが下に続けることにします。もし上のKBの内容がそれらしいようであれば、読み飛ばしてください。

========

私であれば、次の手順で調査を行います。

1. MAPファイル、CODファイル作成

「ワトソン博士のログを取得した際に実行していたEXEファイル」をビルドした際、一緒にMAPファイルやCODファイル(リスティングファイル)を作成していれば、そのファイルを用意しておきます。

もし作成していない場合は、「ワトソン博士のログを取得したEXEファイル」と、バイナリレベルで全く同じEXEファイル(バイト単位で比較すると、ファイルに埋め込まれたタイムスタンプ・チェックサム以外は一致する)が作成可能かどうか調べます。(ビルドに必要なソースファイルやビルドオプションに変更を加えていなければ作成可能です。)

作成可能であれば、コンパイルオプションに「リスティングファイルタイプ:マシン語コードとソースを含む」、リンクオプションに「MAPファイル作成」を追加してEXEを再作成してください。これで、「ワトソン博士のログを取得した際に実行していたEXEファイル」に対応するMAPファイルとCODファイルが得られます。

2. エラー発生行を特定

ワトソン博士のログがどれだけ取れているかにもよりますが、スタックダンプが含まれていればたいていエラー発生行を特定できます。

まず「フォールト->」が含まれる逆アセンブルリストを探します。次に、その下にある「スタックバックトレース」を探します。

スタックバックトレースを上から下に順にたどっていくと、そのうち「ReturnAd」(リターンアドレス)がアプリケーションのアドレス範囲(VC++6の標準オプション設定を変更していなければ0x00400000~)に入るところが出てきます。見つかったら、そのアドレスの直前にあるcall命令が例外を発生させたAPIを直接呼び出している場所です。

さて、仮にリターンアドレスが0x00401234だったとします。そうしたら、次はMAPファイルを見てこのアドレスがどの関数に属しているか探します。ちょうど0x00401234というアドレスは見つからないでしょうけれども、これに近いアドレスは見つかるはずです。そのアドレスに対応する関数名もMAPファイルにあります。

次はその関数名をCODファイルから探します。見つかったら、MAPファイルにあるアドレスがCODファイルにあるマシン語コードの先頭アドレスになるので、そこからリターンアドレス0x00401234に対応するはずの場所まで順番にアドレスを辿っていきます。関数の先頭アドレスが0x00401200であれば、0x34バイト先を探すわけです。

そうすると、その探した場所にある命令の直前の命令がcall命令になっているはずです。CODファイルには、その場所のC++ソースでの行番号とソース文もコメントとして入っているはずなので、あとは対応するソースをよーく見てエラーの見当をつけてください。

アセンブラの知識があれば、そこでcallを使った(他の関数を呼び出した)ときの引数の内容もある程度分かります。(ポインタ渡しだと、そのポインタの先の内容までは分かりませんが。)

3. 置き換え用EXEファイルと対応するMAPファイル作成

これ以降は将来への備えです。

コンパイルオプションでデバッグ情報を「プログラムデータベースを使用」、リスティングファイルタイプを「マシン語コードとソースを含む」、リンクオプションで「MAPファイルを作成する」、デバッグ情報「他の種類」を追加してビルドし、出来たEXEファイルを本番用として使用します。同時に作成されるMAPファイル、CODファイル、PDBファイルは保管しておきます。

MAPファイル、CODファイルの使い方は上記2.のとおりです。PDBファイルは、もし完全なクラッシュダンプが取得できればWinDbgを使って事後ソースレベルデバッグが可能になりデバッグ作業が非常に楽になるので、念のため取っておきます。

4. ワトソン博士のオプション変更

drwtsn32.exeを起動し、「クラッシュダンプファイルの作成」をチェックします。(デフォルトは、チェックが入っています。)

クラッシュダンプファイルとEXEとPDBがあればWinDbgで事後ソースレベルデバッグができます。(いわゆるポストモーテムデバッグです。UNIX系でコアダンプしたコアをデバッガで読み込んでデバッグするのと同じ種類のものです。)


普段何とも思わずに行っていることでも、文章にすると長いですね・・・

えーと、「どういうスキルを持った人に調査させればいいか」については、上記の内容を読んで『なるほど!』と言える人でしょうか。

参考URL:http://support.microsoft.com/kb/168006/ja

発生頻度が年2回というのはなかなか厳しい条件ですね。

さて・・・

「私であれば、次の手順で調査を行います。」という書き始めで延々とデバッグ方法を書いていたのですが、書き終わってからちょっとGoogleで検索したら、ひょっとするとちょうど質問者さんのトラブルと同じかもしれない現象がMicrosoftのKBにありました。

場所はここです: http://support.microsoft.com/kb/168006/ja

要点をかいつまんで書くと、MSVCRT/MFCのDLLのバージョン不整合でエラーが発生することがある、という内容です。KB...続きを読む

QExcel強制終了

仕事で使っているExcelのブックがあります。
ある1列に入力しようとすると必ずエラーがでてExcelが強制終了されてしまいます。
いろいろ試してみたもののどうにも変わらず困っています。
どなたか原因がわかるかたもしいらっしゃいましたら教えてください。

以下のような感じです。

エラーの文章
『問題が発生したためMicrosoft Office Excelを終了します。ご不便をおかけして申し訳あ
りません。

作業中の内容は失われた可能性があります。Microsoft Office Excelで、作業内容の回
復を試みることができます。

□作業内容を回復しMicrosoft Office Excelを再起動(R)
この問題をMicrosoftに報告してください。
~~~~~     』


■バージョン WindowsXP Excel2003

・A列からR列までで500行ぐらい入っているデータ
・オートフィルタを使っている
・その列だけオートフィルタの▼ボタンを押すとエラーがでる
・オートフィルタを解除しても文字を入力するとエラーがでる
・空白行もある
・入力するセルの上下1行以上空いていると入力できる
・入力するセルの上下どちらかにでも文字が入っていると入力できずエラーになる
・現在すでに文字が入力されているセルにも入力できない
・その列の左右の列などには普通に入力できる(異なるのは文字数ぐらい)

・マクロなどは使っていない
・書式は罫線と中央ぞろえのみ

試してみたこと(○がうまく行った操作 ×がエラーになった操作

×再起動

×別の名前を付けて保存

×その列の適当な一箇所をそこだけコピーして別のブックに貼り付け

×別の場所に中身をコピーし、列を削除。
 その後新しい列を挿入しなおし、よせておいたデータを値だけの貼り付け

×シートすべてをコピーして新規ブックに値だけの貼り付け

○別のセルに文字を入力しておいてコピーしてその列に貼り付ける

仕事で使っているExcelのブックがあります。
ある1列に入力しようとすると必ずエラーがでてExcelが強制終了されてしまいます。
いろいろ試してみたもののどうにも変わらず困っています。
どなたか原因がわかるかたもしいらっしゃいましたら教えてください。

以下のような感じです。

エラーの文章
『問題が発生したためMicrosoft Office Excelを終了します。ご不便をおかけして申し訳あ
りません。

作業中の内容は失われた可能性があります。Microsoft Office Excelで、作業内容の回
復を試みるこ...続きを読む

Aベストアンサー

とりあえずは使えるようになったようで、ご苦労様でした。で、

>必要な部分だけ同じブックの空いているセルにコピー&ペースト

これで何とかなった、ということは、ブックの「データとは関係ない
どこかのセル」が壊れているということになりそうですね。とりあえず
それで以降の作業をすることで、一応は解決だと思うのですが。

Microsoftアプリのファイルは、Excelに限らず、Word、Accessなども
こういった「ワケの分からない障害」がたまに発生します。その場合
「必要な部分だけを新規ファイルにコピー」すると直ることがしばしば
あります。

なんにせよ、これ以上の解析は実際のブックをMicrosoftに持ち込ま
ないと分からないと思います。納得できないかもしれませんが、使える
ようになったということで了解して下さい。

QエクセルVBAが途中で止まります

以前別のカテゴリで質問したのですが、そちらでは解決出来なかったので、こちらで改めて質問します。
下記のマクロで、一つのブックからSheet1だけをコピーして来て、少し処理をし、元のブックを閉じるというもので、ブックの数は多くて3000程、少ない時は300位です。
で、このマクロだと900位までですと最後まで行くのですが、それを超えるとリストが95位で止まってしまいます。
自宅で別データを作ってやってみるとうまくいきました。
コピー元のブックにはテキストデータのみで、200文字から500文字程度の大きさしかありません。
ファイル名も50文字程度の物を全部20文字程度まで短くしてもみましたが、ダメでした。
どうかお知恵をお貸しください。

Sub ★1★ブックの結合()
Dim sFile As String
Dim sWB As Workbook, dWB As Workbook, aWB As Workbook
Dim dSheetCount As Long
Dim i As Long
Dim SOURCE_DIR As String

'エクセルデータに変換されたファイルのあるフォルダを選択します。
MsgBox "エクセルに変換されたデータのフォルダを選択"
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
SOURCE_DIR = .SelectedItems(1) & "\"
End If
End With

Application.ScreenUpdating = False

'指定したフォルダ内にあるブックのファイル名を取得
sFile = Dir(SOURCE_DIR & "*.xls")

'フォルダ内にブックが無ければ終了
If sFile = "" Then Exit Sub

'集約用ブックを作成
Set dWB = Workbooks.Add

'転記マクロの中のDMリストシートをコピーする
Workbooks("転記用マクロ.xlsm").Worksheets("DMリスト").Copy Before:=dWB.Worksheets("Sheet1")
Application.DisplayAlerts = False
Worksheets(Array("Sheet1", "sheet2", "sheet3")).Select
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True

'集約用ブック作成時のシート数を取得
dSheetCount = dWB.Worksheets.Count

Do
'コピー元のブックを開く
Set sWB = Workbooks.Open(Filename:=SOURCE_DIR & sFile)

'コピー元のsheet1を集約用ブックにコピー
sWB.Worksheets("sheet1").Copy After:=dWB.Worksheets(dWB.Sheets.Count)

シート転記

'コピー元ファイルを閉じる
Application.DisplayAlerts = False
sWB.Close
Application.DisplayAlerts = True

'セルA2の名前を変更する


'シート名をセルA2の値に変更
'ActiveSheet.Name = Range("A2").Value


'次のブックのファイル名を取得
sFile = Dir()
Loop While sFile <> ""

'集約用ブックを保存する
'dWB.SaveAs Filename:=DEST_FILE


Application.ScreenUpdating = False


End Sub

以前別のカテゴリで質問したのですが、そちらでは解決出来なかったので、こちらで改めて質問します。
下記のマクロで、一つのブックからSheet1だけをコピーして来て、少し処理をし、元のブックを閉じるというもので、ブックの数は多くて3000程、少ない時は300位です。
で、このマクロだと900位までですと最後まで行くのですが、それを超えるとリストが95位で止まってしまいます。
自宅で別データを作ってやってみるとうまくいきました。
コピー元のブックにはテキストデータのみで、200文字から500文字...続きを読む

Aベストアンサー

http://oshiete.goo.ne.jp/qa/8750372.html


例えば、30ファイルあっても10ファイルしか読み込まれない事があり、
エラーメッセージもない、何事もなく終了するが10ファイルしか処理されていない、
常に発生する訳ではなく、マシンが変われば同じデータでもOKだったり、
データが少し変わればOKだったりする。
なので、昨日までOKだったのに、今日データが変わった為、急にダメになったりする。
もし、10ファイル目で発生した場合、何度実行しても必ず、10ファイル目までしか処理されない。
そのファイルがおかしいかと思い、その前後の2~3ファイルを削除しても、
やっぱり、10ファイル目(さっきとは違うファイル)までしか処理されない、
という恐ろしいバグがExcel VBAにありますが、それじゃないですかね?

While文などのループの中に、ワークブックのオープンがあると、
何度目かでオープンが実行されず、エラーなしでスルンと終わります。

回避方法は、Open 文の前に DoEvets の1行を書く事。
だいたいこれで直りますが、これで直らなかったマクロもあったので、
Open 文の後ろにも DoEvets の1行を書いて、前後を DoEvets ではさむと直りました。
安全(?)の為、前後をはさんでおいた方が良いと思います。

こんな感じ:
DoEvents
Workbooks.Open aaa
DoEvents

かなり前(1年くらい?)にハマりググりまくったところ、ほとんど情報はなかったですが、
1人だけ、自分の質問に「直った」と自己回答している方がいて、Open文の前にDoEvetsをつけたら直ったそうです。
半信半疑で真似たら私も直りました。
何故、これで直るのかはわかりませんが、DoEvetsを外すと見事に再現し、DoEvetsではさむとピタッと直ります。

ググりまくった際、とても情報が少なく、こんなに顕著に再現するのに、
何故、情報が少ないのかは不思議に思いました。

http://oshiete.goo.ne.jp/qa/8750372.html


例えば、30ファイルあっても10ファイルしか読み込まれない事があり、
エラーメッセージもない、何事もなく終了するが10ファイルしか処理されていない、
常に発生する訳ではなく、マシンが変われば同じデータでもOKだったり、
データが少し変わればOKだったりする。
なので、昨日までOKだったのに、今日データが変わった為、急にダメになったりする。
もし、10ファイル目で発生した場合、何度実行しても必ず、10ファイル目までしか処理されない。
そのファイルがおかし...続きを読む

QExcel2010がWin7Proで動作不安定(再

先の質問が消えてしまったので再度質問させて下さい。

パソコンを3台、Windows7professional(32bit)のモノを購入、設定しました。

Office無しモデルだったので、正規版のOffice2010personalを入れたのですが…。

2台は安定動作中、何の不具合も無し。

ところが一台だけExcelを使っている最中、突然画面上部のツールを切り替えるタグが固まって切り替えられなくなり、直後にツールボタンも押せなくなるのです。

この時、押せるのは右上の強制終了「赤×」ボタンのみ。

カーソルは動くし、タスクマネージャーを見ると正常になっているのですが、こんな現象が頻発しています。

強制的に終了したEXCELは、タスクマネージャーの「アプリケーション」から消え、タスクバーからも表示が消えるのですが、不思議とタスクマネージャーの「プロセス」にはEXCELがしっかりと動作しています。

そのせいか、一旦ログオフするか再起動しないとExcelのみ正常動作しません。

先の質問で指摘を頂いたメモリモジュールの不具合と増設ソケット間違いについてはWin7のメモリチェック機能で何度もテストし、正常動作してる同型機と交換したり、メーカーのカスタマーに問い合わせてハード的な問題が無い事は間違い無いようです。

一旦Officeそのものを削除し、再インストール&全アップデートも試みましたが症状変わらずです。

ほとほと困り果てた末、SYSLOGを見ると正常LOGの中に突然EXCELのエラーが混じっている事に気付きまして、以下がその内容です。

素人に毛が生えた程度では何の事やらさっぱりでして。

******************************************************
- System

- Provider

[ Name] Application Error

- EventID 1000

[ Qualifiers] 0

Level 2

Task 100

Keywords 0x80000000000000

- TimeCreated

[ SystemTime] 2012-03-06T03:58:20.000000000Z

EventRecordID 4506

Channel Application

Computer pro03-XXX

Security


- EventData

EXCEL.EXE
14.0.6112.5000
4e9b2bb3
EXCEL.EXE
14.0.6112.5000
4e9b2bb3
c0000005
001697f0
16c4
01ccfb4cf64b3e9d
C:\PROGRA~1\MICROS~3\Office14\EXCEL.EXE
C:\PROGRA~1\MICROS~3\Office14\EXCEL.EXE
9c199c03-6740-11e1-b5ec-78acc0aec582
******************************************************

イベントIDやら何やらで問題点を探ろうとしているのですが、未だ尻尾も掴めてません。

これ等をヒントに何か思い当たるフシとかありませんでしょうか?

些細な事でも構いません、引き続き皆様のお知恵を拝借できればと。

宜しくお願い申し上げます。

先の質問が消えてしまったので再度質問させて下さい。

パソコンを3台、Windows7professional(32bit)のモノを購入、設定しました。

Office無しモデルだったので、正規版のOffice2010personalを入れたのですが…。

2台は安定動作中、何の不具合も無し。

ところが一台だけExcelを使っている最中、突然画面上部のツールを切り替えるタグが固まって切り替えられなくなり、直後にツールボタンも押せなくなるのです。

この時、押せるのは右上の強制終了「赤×」ボタンのみ。

カーソルは動くし、タスクマネージャ...続きを読む

Aベストアンサー

Aeroが有効の場合、アプリケーションが突然停止する場合があるとか。
(障害回避:「個人設定」テーマをAeroから「ベーシック」にする)

イベントIDを一つずつ検索
例:「Application Error  EventID 1000 Excell2010 Windows 7」で検索 海外のサイト
"Excel用のCOMアドイン"を無効に、「Excelのオプション」「アドイン」アドインを無効に、
「管理」アドインの種類を選択「Go」「無効」にする場合、アドインのチェックオフ「OK」
などがありますが・・・効果は不明

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング