【先着1,000名様!】1,000円分をプレゼント!

最近excelの動きが遅くなってきたので、イベントログを確認したところ

「Excel.files.component 検索に失敗しました」
「excel.exeがありません」

のような警告が度々確認されています。

このイベントはなにを意味しているのでしょうか・・。

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

A 回答 (1件)

イベントログは、OSからのログですので、



Windowsが、
「Excelさん、ファイル(files)のコンポーネント(component)の機能で○○を検索してみて?」
「excel.exeさん、生きてる?」
と尋ねた際、Excelが重い・忙しくて、何秒か以内に応答できなかった場合に、Windowsが「だめだこりゃ」とイベントログに記録を残すのではないでしょうか?


excelが重いのは、別の原因ではないかと思います。
    • good
    • 0

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

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

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

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

QExcelが異常終了して,エラーログを作成していますと出ましたが

Excelのファイルを2つ開いて作業していました。
作業を終えようと,まずデータ量の多い方から上書き保存してそのファイルを閉じたところ,
もうひとつのファイルが異常終了で閉じてしましました。
上書きする必要があったのに,あっけなく閉じて途中の作業も保存されていませんでした。
普段は自動保存を設定していますが,それも効いてなかったようです。

閉じる直前に『エラーログを作成しています・・・』と出たということは
どこかに閉じる直前の状態が保存されているのでしょうか?

Aベストアンサー

エラーログとはmatsonのログでは?
本の文章は保存されていないと思います。(経験から...)

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

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

Qアプリケーションエラー

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

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

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

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

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

Aベストアンサー

C0000005のエラーは、基本的にアクセスしてはいけない所に
アクセスしたときに出るエラーです。

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

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

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

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
...続きを読む

QVBAにてデータが数字か文字かを判定するには

VBAにてデータが数字か文字かを判定するには、
どうすれば良いのでしょうか?

文字数は任意で決まっていません。


123 ← 数字
あい ← 文字
1F  ← 文字
G  ← 文字

Aベストアンサー

こんにちは。

数字か文字かなら、IsNumeric でよいと思いますが、数値か文字かでしたら、VarType を使います。私の場合は、IsNumericは、めったに使いません。VarTypeのほうが多いですね。IsNumeric は、文字通り、文字か数字かで、文字列書式の数字も含まれます。なお、VBAでは、数字は、数値型に型キャストされますので、特に問題は発生しません。

ご参考までに。

Sub Test()
 If VarType(Range("A1").Value) = vbDouble Then
  MsgBox "数値"
 ElseIf VarType(Range("A1").Value) = vbString Then
  MsgBox "文字列"
 Else
  MsgBox "その他" '代表的なものはエラー値です
 End If
End Sub

-----------------------------------------
こちらの場合は、全角数字も、数字として扱われます。

Sub Test2()
 If IsNumeric(Range("A1").Value) Then
   MsgBox "数字"
 Else
   MsgBox "数字ではない"
 End If
End Sub

こんにちは。

数字か文字かなら、IsNumeric でよいと思いますが、数値か文字かでしたら、VarType を使います。私の場合は、IsNumericは、めったに使いません。VarTypeのほうが多いですね。IsNumeric は、文字通り、文字か数字かで、文字列書式の数字も含まれます。なお、VBAでは、数字は、数値型に型キャストされますので、特に問題は発生しません。

ご参考までに。

Sub Test()
 If VarType(Range("A1").Value) = vbDouble Then
  MsgBox "数値"
 ElseIf VarType(Range("A1").Value) = vbString Th...続きを読む

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

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

Aベストアンサー

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

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

QDOSコマンドのダブルクォーテーションの扱い

DOSコマンドでダブルクォーテーションを検索し、
リダイレクションをすることが出来なくて困っています。
例えば
findstr "\"!" a.txt
は出来ますが
findstr "\"!" a.txt >b.txt
とするとリダイレクションが出来ません。
grepも同じようです。

またunixコマンドではシングルクオートは、「囲まれた中身をそのままの文字として利用」し、ダブルクオートは、「囲まれた中身に$HOME など $ で始まる文字列があれば、
それを環境変数、シェル変数といった、値に置き換えてから、利用する」という明確な違いがありますが、DOSコマンドでは明確な違いはあるのでしょうか?

unixのshellをDOSコマンドに移植しています。
DOSコマンドの参考Webもあまり見つからなくて困っています。
もし参考になりそうなWeb等ありましたら教えてください。

Aベストアンサー

"と'の違いですが、cmd.exe では ' 特殊文字ではありません。for /f 文のある形式で意味を持つだけでそれ以外の場所では#+-/などと同じ普通の文字です。unixのシェルとは全然違います。

まず質問文の
>findstr "\"!" a.txt >b.txt
ですが、\ はfindstrが正規表現の特殊文字として扱うだけでCMDの構文解析では普通文字なので、"\"が引用符に囲まれた文字列として扱われます。次の!は引用符の外の文字。次の " a.txt >b.txtが、(終りの引用符の欠けた)引用符に囲まれた文字列とみなされますので、リダイレクト記号は引用符の中となり効きません。

>OKだったもの
>findstr ^"\^"!^" a.txt
>findstr \^"! a.txt
^を前置した"は引用符としての意味を失い、そのまま"がfindstrにわたされます。リダイレクト記号をつけても引用符の中で無いので効きます。findstrは検索文字列が"で囲まれていればそれを外して、囲まれていなければそのままが使われますので、どちらでも同じ結果になります。

>以下待ちになるもの
>findstr ^"! a.txt
findstrに "! a.txt が渡るのでa.txtも検索文字列の一部とみなされます(閉じる"がfindstrによって補われる)。従って、標準入力から、! または a.txt という文字列を含む行を探していることになります。
リダイレクトをつけると引用符の外なので効きます。

>findstr "^"!" a.txt
引用符の中で^は"をエスケープしないので1個目と2個目の"がペアになり^を囲み、3個目はペアの欠けた引用符となり a.txtを囲みます。リダイレクトをつけても引用符の中なので効かないはず。
その後、findstrが文字列を囲む""を外すので、^!つまり行頭の!または a.txtを含む文字を標準入力から探すことになります。

>findstr ^"!^"^" a.txt
^が前置されているので"はCMD的には引用符でなくなりますのでリダイレクトは効きます。
findstr には "!"" a.txt が渡り、文字列を囲む""が外されて、!またはa.txtを含む文字列を標準入力から探す。

>findstr ^" a.txt
同様。

>コンソールには表示できるがリダイレクションでエラーになるもの
>findstr \"! a.txt >b.txt
cmd的には"は引用符なので>b.txtも(終りの欠けた)引用符の中なのでリダイレクトは効きません。
findstr にわたるのは \"! a.txt >b.txtで、検索文字列が "! で残りがファイル名とみなされますが、「a.txt >b.txt」という名前のファイルが無いのでエラー
リダイレクトをつけないで
>findstr \"! a.txt
だと、findstr には \"! a.txt が渡り、検索文字列が "! で、ファイル名がa.txtとなり目的通りになります。

>「"」を検索するには「\^」をつけるということでしょうか。
CMDに引用符とみなされないように^をつけて(この^はCMDが外してからfindstrに渡す)、findstrが"を外さないようにさらに\を前置する必要があるということです。

CMDがまず最初に^や"や>をどのように処理して、次にfindstrが渡された文字列をどう解釈するか段階を分けて考えればわかると思います。これはunixのシェルでも同じですが。
unixのシェルと比べるとCMDの"は変態的です。

"と'の違いですが、cmd.exe では ' 特殊文字ではありません。for /f 文のある形式で意味を持つだけでそれ以外の場所では#+-/などと同じ普通の文字です。unixのシェルとは全然違います。

まず質問文の
>findstr "\"!" a.txt >b.txt
ですが、\ はfindstrが正規表現の特殊文字として扱うだけでCMDの構文解析では普通文字なので、"\"が引用符に囲まれた文字列として扱われます。次の!は引用符の外の文字。次の " a.txt >b.txtが、(終りの引用符の欠けた)引用符に囲まれた文字列とみなされますので、リダイレクト...続きを読む

Qワイルドカードを使ってでフォルダを削除

kで始まるディレクトリを削除しようとして、コマンドプロンプトで
rmdir /s /q k*
と打つと、
「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。」
と言ってきます。
どうすれば、DOSコマンドで、kで始まるディレクトリをいっぺんに削除できますか。

WindowsXPです。

Aベストアンサー

こんな方法もありますよ。
for /F %a in ('dir /AD /B /W k*') do rmdir /S /Q %a

XP限定ならば関係ないですけど、これならばどのWindowsでもいけるかと・・・

Qvlookup関数で検索値を含む文字列を検索する方法

vlookup関数で例えば E1のセルに=vlookup(D1,A:C,3,false)とした場合、D1が佐藤であれば、A列に「佐藤」がある場合には当然、「佐藤」がある行の3列目の値が返されますが、「佐藤」はなく「佐藤A」や「A佐藤」がある場合にもこれらがある行の値を返して欲しいのですが、いい方法はありませんでしょうか。*を使ってできると思ったのですがうまくいきません。上記例で、=vlookup("*佐藤*",A:C,3,false)とすればできますが、*佐藤*の部分はD1の引用を利用したいのです。
 よろしくお願いします。

Aベストアンサー

=VLOOKUP("*"&D1&"*",A:C,3,FALSE)

QVBAでeventlogを取得したい

EXCEL2003のマクロを使用して、eventlogの6005と6006を取得し、
それらに対応する時刻を出力させたいのですが可能でしょうか。

お分かりになる方 ご教示の程、宜しくお願い致します。

Aベストアンサー

> これらが発生する原因は何が考えられるでしょうか。

OS 名と OS のバージョン、およびマクロ実行時のログインアカウントの権限は?

Sql の WHERE 句が複雑すぎるのかもしれません。これを簡単に、つまり、2回に
わけて 6005 と 6006 を取得するか、WHERE 句の AND 以降を全てカットし、
全てのイベントコードを取得してから、 Excel 側で加工するようにするか...
で改善するかも。

▼ 6005 取得の Sql(6006 は最後を " AND EventCode = 6006”に変更)

  Sql = ""
  Sql = Sql & "SELECT *"
  Sql = Sql & " FROM Win32_NTLogEvent"
  Sql = Sql & " WHERE Logfile = 'System'" _
       & " AND EventCode = 6005"

これにより Excel への出力部 VBA ソースの修正が必要になりますが、その辺は
大丈夫ですよね?

参考URL:http://www.microsoft.com/japan/technet/scriptcenter/topics/help/wmi.mspx

> これらが発生する原因は何が考えられるでしょうか。

OS 名と OS のバージョン、およびマクロ実行時のログインアカウントの権限は?

Sql の WHERE 句が複雑すぎるのかもしれません。これを簡単に、つまり、2回に
わけて 6005 と 6006 を取得するか、WHERE 句の AND 以降を全てカットし、
全てのイベントコードを取得してから、 Excel 側で加工するようにするか...
で改善するかも。

▼ 6005 取得の Sql(6006 は最後を " AND EventCode = 6006”に変更)

  Sql = ""
  Sql = Sql & "SELECT *"...続きを読む


人気Q&Aランキング