【無料配信♪】Renta !全タテコミ作品第1話

EXCEL VBAで作ったマクロが、立ち上がらなくなってしまいました。
EXCELを起動すると、『ファイルへのアクセスでエラーが発生しました』というコメントが現れ、その後、『Visual Basicプロジェクトが失われました』というエラー表示が出てきます。
EXCEL自体は立ち上がるのですが、モジュールが消えてしまいます。

復活させる良い方法はないでしょうか?

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

A 回答 (2件)

こんにちは。

Wendy02です。

詳しいExcel等の情報がなかったので、一般的な内容を書きましたが、まず、Excel 2002 ということは間違いないですね。

もしかしたら、下位バージョンで作ったVBAコードで、下位バージョンで、デジタル署名を付けていたものを、上位バージョンで開けようとしたのではありませんか?

また、以下にこんな解決策が見つかりました。
http://www.adras.com/Lost-visual-basic-project-i …

非Unicodeプログラムをインストールしたら、マクロを救うことが出来たと書かれています。しかし、この方も書いていますが、それじゃあ、とっても不便なので、他に方法はないですか?と聞いていますね。


http://forums.wugnet.com/office/
-Excel-reports-Error-accessing-file-open-excel-book-ma-ftopict569995.html
(画面の都合で途中で改行コードを入れました)

では、

古いシステムで、Excel 2000でためしに開いてみたら、そのファイルは開き、マクロも動きました、となっています。

その書き込みの紹介先に、News Group のNorman Harker 氏のコメントを紹介しています。

その中で、氏は、Excel修復ソフトを紹介していますね。確か、日本で販売しているものでもあったと思います。ただ、英語バージョンにしろ、国産にしろ、1万円を越える値段のようですね。

http://groups.google.com/group/
microsoft.public.excel.misc/browse_frm/thread/816aca1f6d120cd8
(レイアウトの都合で、改行キーを入れています。)

ここの#3です。

ここに、以下の内容が紹介されています。

http://support.microsoft.com/kb/142117/

WordかWordPad を利用して、Sub かFunctionを検索して拾い出す。

というのがあります。私は、この手のものは成功した覚えがありませんが、今の段階では、こんなところぐらいしか紹介できません。
    • good
    • 0
この回答へのお礼

重ね重ね、ありがとうございました。

ありとあらゆる手段を講じて、Microsoftのサポートにもあたってみましたが、やはり駄目なようです。あきらめることとします。

お礼日時:2005/12/09 13:41

こんにちは。



いくつか検索してみました。
本当に、モジュールがなくなったわけではないのではないでしょうか?

アプリケーション側のVBAの機能自体がないか、なくなっているのではないでしょうか?


[XL2002] マクロを含むブックが修復モードで開かれる
http://support.microsoft.com/default.aspx?scid=k …

(この内容は分りにくいですね。要するに、VBAの機能がないので、VBAをインストールしてください、と読めます。)

後は、アップデートによるパッチ当てですね。
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ございません。

ご紹介のサイトを観て検討しましたが、やはり駄目なようです。
他の複数のPCで試してみましたが、駄目でした。やはりファイル自体が完全に壊れてしまったようです。一週間かけて苦労して作ったマクロなのに、非常に残念です。

なんとか、VBAだけでもテキストで抽出できないものでしょうか。

お礼日時:2005/12/07 12:18

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

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

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

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

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

QACCESSエラー「モジュールがありません」

ACCESS2000でテーブルとフォームを作っていたら下記のエラーメッセージが出てきました。
「実行時エラー'2001';直前の操作はキャンセルされました。」
その後、
「イベントプロパティに指定した式 クリック時でエラーが発生しました:モジュールがありません。※マクロ名、ユーザー定義関数名、[イベントプロシージャ]以外の式が指定されています。※関数、イベント、マクロの評価でエラーが発生しました。」
というメッセージもでてきました。また、フォームが開かなくなり誤作動をし始めたのですが原因がわかりません。どなたか回避策をご存知ないでしょうか?

Aベストアンサー

#1です。
一応、私が参考にしたMicroSoftのページを貼り付けておきます。

参考URL:http://www.microsoft.com/japan/support/kb/articles/J055/8/78.asp

Qエクセルを立ち上げるとVBA関係のエラーが出てしまいます

以前にマクロを含んだフリーソフトをインストールしてから、エクセルを開くたびに「このブックにあるVBAプロジェクト、ActiveX
コントロールおよびその他のプログラム関連の機能は失われています」というエラーメッセージが出て、エスケープするかOKしないとエクセルが開始できません。
以前インストールしたソフトは「.XLA」というファイルを含んでいました。(今は、ソフトは削除してあります。)
ネットで検索したところ、「未コンパイルアドイン(.xlaファイル) 未コンパイルアドインはVBAを使用して作成されたアドインです。未コンパイルアドインを開くと通常のVBAプロジェクトを含むファイルを開いた場合と同じ警告メッセージが表示されます。次の組み込みアドインが使えなくなります・・・」と書いてありました。
意味はわかるのですが、ではどうしたらこの警告メッセージが出なくなるようにできるのか、が書いてありません。
どなたか教えていただければ、大変ありがたいです。
よろしくお願いします。

Aベストアンサー

こんばんは。#4 のWendy02です。

特別な設定をしない限りは、通常は、以下にあります。

XLB:
C:\Documents and Settings\[ユーザー名]\Application Data\Microsoft\Excel\

これを削除して直るのは、メニュー関係ですね。

PERSONAL.XLS (個人用マクロブックを作ってなければ「ない」)
C:\Documents and Settings\[ユーザ名]\Application Data\Microsoft\Excel\StartUp\

セーフモードは、個人用の一切の設定を読まないデフォルト状態だから、通常、その後に設定されるものに対するエラーは発生しません。

「このブックにある、VBA プロジェクト、ActiveX コントロール、およびその他のプログラミング関連の機能は失われています。 」

このエラーのフレーズは、いずれにしても[システムポリシー]の関係でしょうから、リセットすれば直ると思います。再インストールするなら、xlb ファイル、PERSONAL.XLS を削除すればよいのですが……。

こんばんは。#4 のWendy02です。

特別な設定をしない限りは、通常は、以下にあります。

XLB:
C:\Documents and Settings\[ユーザー名]\Application Data\Microsoft\Excel\

これを削除して直るのは、メニュー関係ですね。

PERSONAL.XLS (個人用マクロブックを作ってなければ「ない」)
C:\Documents and Settings\[ユーザ名]\Application Data\Microsoft\Excel\StartUp\

セーフモードは、個人用の一切の設定を読まないデフォルト状態だから、通常、その後に設定されるものに対するエラーは発生し...続きを読む

QOfficeマクロが使えなくなった

先日windows8.1のプレビュー版から製品版に更新しました。
その後,Office2013をインストールしたのですが,ExcelやOneNoteを使用中,頻繁にフリーズするため,Office2013をいったんアンインストールしてOffice2010をインストールしてみました。

そうしたところ,マクロを含んだエクセルブックを開こうとすると,
「'**.xlsm'には読み取れない内容が含まれています。このブックの内容を回復しますか?ブックの発行元が信頼できる場合は,[はい]をクリックしてください。」
というダイアログが表示されるようになりました。

「はい」をクリックすると,ファイルは開くのですが,
「'**.xlsm'の修復」というタイトルで,
「読み取れなかった内容を修復または削除することにより、ファイルを開くことができました。」「削除されたパーツ: /xl/vbaProject.bin パーツ (Visual Basic for Applications (VBA))」などというダイアログが表示され,マクロは利用できません。

システムの復元をしてみたり,2010を再インストールしたり,2013を再インストールしてアンインストールソフトを使ってアンインストールしてみたり,いろいろ試してみましたが,解決の目処が立ちません。

今後しばらくはOffice2010を使用することを前提に,どうすればマクロを利用できるようになるか,
心当たりのある方,ヒントでけっこうですので,何とぞご教示ください(英文サイトを読んで参考にしろというのでもけっこうです。URLをご教示ください)。

先日windows8.1のプレビュー版から製品版に更新しました。
その後,Office2013をインストールしたのですが,ExcelやOneNoteを使用中,頻繁にフリーズするため,Office2013をいったんアンインストールしてOffice2010をインストールしてみました。

そうしたところ,マクロを含んだエクセルブックを開こうとすると,
「'**.xlsm'には読み取れない内容が含まれています。このブックの内容を回復しますか?ブックの発行元が信頼できる場合は,[はい]をクリックしてください。」
というダイアログが表示されるように...続きを読む

Aベストアンサー

http://support.microsoft.com/kb/182500/ja
まずは、こちらを参照してみてください。

QVBA(excel2003)が動作しません

VBA(excel2003)が動作しません

excelファイルを起動しようとすると「VBAライブラリー(1004)初期化でエラーが発生しました」と表示されます。
ちなみに別のユーザーのアカウントでは問題ありません。
環境は、Win XP sp3です

一年ほど前から、月例のWindowsUpdateでOffice2003関連の更新が適用された後に、excel/wordを起動しようとすると以下のエラーが出るようになりました。
「Microsoft Excel は、現在のユーザ用にインストールされていません。セットアップを実行してアプリケーションをインストールしてください。」
これについてはネットで、「別ユーザーを作成してそこでMicrosoft Office 2003 個人用設定の保存ウィザードで設定を保存し、本来のユーザーで読み込む」という対策を知り実施して凌いでおりました。

ところが、最近VBAを使用する用があり、ExcelのメニューからVisual Basic Editorを選択したところ冒頭のエラーが表示され使用できないことに気がつきました。以降Visual Basic Editorが選択できなくなり、エクセルの起動の度に同じエラーがでる様になってしまいました。

判っていること
・Officeを最初にインストールした当初はVBAは使用できた
・現在も暫定で作成した別ユーザアカウントでは使用できる
・月例のWindows updateを適用するとOfficeアプリが起動しなくなる
やったこと
・アプリケーションの追加と削除のOffice2003から、VBAを(HDDのキャッシュ?から)追加インストール
・同上、Ofiice自体を(HDDのキャッシュ?から)修復インストール
・同上、Ofiice自体を(HDDのキャッシュ?から)再インストール
・Officeをアンインストール(関連フォルダも削除)してCDから再インストール

いずれも状況は変わりません(excel/wordが起動しない→別アカウントの設定を持ってくると起動、でもVBAは動作せず)

ユーザーアカウントで挙動が異なるということは、officeの問題ではないのかもしれません。
これについて解決策をお持ちの方がいらっしゃいましたらご教示をお願いいたします。

VBA(excel2003)が動作しません

excelファイルを起動しようとすると「VBAライブラリー(1004)初期化でエラーが発生しました」と表示されます。
ちなみに別のユーザーのアカウントでは問題ありません。
環境は、Win XP sp3です

一年ほど前から、月例のWindowsUpdateでOffice2003関連の更新が適用された後に、excel/wordを起動しようとすると以下のエラーが出るようになりました。
「Microsoft Excel は、現在のユーザ用にインストールされていません。セットアップを実行してアプリケーションをインストールしてく...続きを読む

Aベストアンサー

こちらの中身を確認してみました。

Excelの
"C:\Documents and Settings\[User ID]\My Documents\OfficeADMFiles\Office 2003 Group Policies JPN.xls"

OfficeアプリケーションのVBAを無効にする
(L528) No
(N528) Yes
(O528) Yes

>「Office アプリケーションの VBA を無効にする」という項目があり、未構成になっていました。他に有効・無効が選択できるようになっていました。

ここから変更は出来るはすですが、もし、レジストリから処理するとなると、MSに問い合わせたほうがよいと思います。昨日、調べてみましたが、良く分かりませんでした。たぶん、項目そのものが消えているようです。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

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

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

Aベストアンサー

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

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

Qエクセルのファイルが壊れてVBAが出来ない!

何が、原因か未だに分からないのですが、壊れたファイルを開いたせいか、VBAプロジェクトウィンドウにおいて、シートの色が灰色ではなく、青色になってしまい、
その後他のファイルを開いても、○○を開けません。と出てしまいます。
また、VBAのウィンドウには、ファイルの認識がないため、マクロも実行できませんと出てしまいます。

原因は定かではないのですが、シートを大量にコピーしたり移動していたのが悪かった気もします。
何か心当たりのある方は宜しくお願い致します。
また、VBAのウィンドウの開き方、Alt+F11後のウィンドウの配置を初期化するのにはどうしたらいいのでしょうか?
宜しくお願い致します。

* 先ほど、重大なエラーが出たため、再インストールしましたが、ある特定のファイルを開くと、また壊れてしまいます。

宜しくお願い致します。

Aベストアンサー

単にそのファイルが壊れちゃったってだけじゃないですか?
ここらへんで回復するとか。
http://support.microsoft.com/kb/879783/ja

あとはこんな情報とか。バージョン不明だから当てずっぽだけど。
http://www.moug.net/tech/exvba/0040023.htm

> 先ほど、重大なエラーが出たため、再インストールしましたが、ある特定のファイルを開くと、また壊れてしまいます。

Excel が壊れる? ---> 普通はそんなこと無いと思う。
正常な特定のファイルが壊れる? ---> そのファイルが悪い。
さっきから壊れてたファイルが正常に戻らない? ---> 当たり前。

QEXCELマクロで上書きメッセージ無しで保存する方法

EXCELマクロで上書きメッセージ無しで保存する方法をお願いします
ActiveWorkbook.SaveAs "C:\Documents andSettings\Nakatani\MyDocuments\Book1.xls"
の様にするとすでにファイルがある場合上書きメッセージが出ます
メッセージを出さずに上書きするプログラミングを教えて下さい
宜しくお願いします

Aベストアンサー

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "C:\Documents andSettings\Nakatani\MyDocuments\Book1.xls"
Application.DisplayAlerts = True

Q特定の範囲内に空白セルがいくつあるかを数えるマクロを作りたいのですが。

B1セルからB500セルまでの間に、
空白セルがいくつあるかを数えるマクロを作りたいのですが…。
自分では作れません。
作ってください!!!
お願いします。

Aベストアンサー

みなさんの回答のように関数でできますが、無理やりマクロにすると、こんなものですか。最初はワークシート関数を使っています。2つ目は関数を使わず、数えています。結果をC1、C2に書き出します。
参考にして下さい。

Sub KuuhakuCount()
Range("C1") = WorksheetFunction.CountBlank(Range("B1:B500"))
End Sub

Sub KuuhakuCount2()
Dim rg As Range 'セル
Dim ct As Long 'カウンタ
For Each rg In Range("B1:B500")
ct = ct + Abs(rg = "") '空白なら件数をカウント
Next
Range("C2") = ct
End Sub

QEXCEL VBA で指定した範囲に入力があるかどうか?

こんばんは!!
EXCEL VBAを使い出して、初日からつまずいてます・・・。
みなさん、アドバイスよろしくお願いします!!

で、早速、質問なんですけど、
指定したセル範囲のいずれかに入力があるか調べたいんですけど、それができるプロパティとかってあるんでしょうか?
地道にセル毎にチェックするしかないいんでしょうか??

たとえば、範囲をA1:H1として、その範囲内のセルに何か入力があったらTrueが返ってくるとか・・・。

もし、知ってる方がいらっしゃたら教えてください!!
よろしくお願いします!!!!!

Aベストアンサー

>これは、まず範囲を選択して、入力チェック()を呼ぶことなのでしょうか
書いたモジュールは範囲が指定してあります。("A1:H11"は間違いです。質問からすると"A1:H1"です)何もしないで入力チェックを実行します。
モジュールを CountA(Selecton) に変えれば任意の選択範囲がチェックの対象になります。任意の範囲を選択して実行します。
メッセージは確認するためで、IF ・・・・ で入力有無が判定できます。

>ワークシート関数CountAってどうやったら出てくるんですか??
ついApplicationと書いてしまうんですが、『WorksheetFunction.』と打てば、候補の関数名が表示されると思います。

下記の fnc入力チェック は入力有無を返すユーザー定義関数です。
書き方の例です。分かりやすくなった?この例は引数に"A1:H1"をセットしています。任意の範囲にするには Selection.Address に変えます。

Sub 入力チェック()
  Dim 入力有無フラグ As Boolean        '入力有無の答え

  入力有無フラグ = fnc入力チェック("A1:H1")  'モジュール内でA1~H1を指定(固定)

  MsgBox 入力有無フラグ            '帰ってきた答えをメッセージボックスで確認
End Sub

'入力有無を返すユーザー定義関数
Function fnc入力チェック(checkAddress As String)
  If WorksheetFunction.CountA(Range(checkAddress)) > 0 Then
    fnc入力チェック = True
  Else
    fnc入力チェック = False
  End If
End Function

>これは、まず範囲を選択して、入力チェック()を呼ぶことなのでしょうか
書いたモジュールは範囲が指定してあります。("A1:H11"は間違いです。質問からすると"A1:H1"です)何もしないで入力チェックを実行します。
モジュールを CountA(Selecton) に変えれば任意の選択範囲がチェックの対象になります。任意の範囲を選択して実行します。
メッセージは確認するためで、IF ・・・・ で入力有無が判定できます。

>ワークシート関数CountAってどうやったら出てくるんですか??
ついApplicationと書いてし...続きを読む


人気Q&Aランキング