エクセル(Excel2000)で、マクロを使っていないのにマクロが使われてしまいます。
例えば、
まず普通にスタート→プログラムと表示していき、エクセルを立ち上げる。
次にどこのセルでもいいから適当に文字を入力する。(例えば、A1にaと入力する)
そして、ファイル→名前を付けて保存で保存する。

こうしてできたエクセルのファイルを普通に立ち上げると、「このファイルはマクロが使われています」と、マクロを有効にするか、無効にするかを確認する画面が出てきてしまいます。
どうしてでしょうか。直す方法はあるのですか。よろしくお願いします。

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

A 回答 (8件)

やっぱりウイルスじゃないでしょうか?


ウィルスはインターネットやメールだけでなくいろんな経路から感染することがありますから。
http://isweb15.infoseek.co.jp/diary/ad_hiro/at-s …

参考URL:http://isweb15.infoseek.co.jp/diary/ad_hiro/at-s …

この回答への補足

お礼の欄にお礼ではなく、追加質問のようなこと書いてしまいました。ここで改めて御礼します。
ご紹介のページにしたがって操作したら無事にウイルスを駆除することができました。
まさかエクセルのファイルに感染してるなんて考えもしませんでした。ウイルスはインターネットにつなげるパソコンだけに感染するという安易な考え方をしていた私がおろかでした。
回答ありがとうございました。

補足日時:2002/03/31 14:11
    • good
    • 0
この回答へのお礼

一部始終をお話します。
じつは、あるエクセルのファイルがあって、それはFDにはいっているんです。
そのファイルをリカバリした方のパソコンで立ち上げたんです。そしたら、マクロを有効にしますか?の画面が出て、無効にして立ち上げたあと、ちょっとマウスを触れただけで、「不正な処理をしたため・・・」の画面が出てくるんです。詳細を見ると「ページの違反・・・」とか書いてありました。しかし、そのフロッピーのファイルは、このパソコン(今まさにタイピングしているインターネットにもつなげるパソコン)で開くときは不正な処理・・・は出てこないんです。マクロが有効だの、無効だのの画面は出てきますが。とにかく、このパソコンでは大丈夫だったんです。またリカバリのPCのほうに戻りますが、そのエクセルを強制終了した後は、普通のやつ(新しく作ったファイルでも)でも不正な・・・が出てきてしまうんです。再起動してまたエクセルを新しく開いて、この質問のようなこと(適当に入力してすぐ保存してとじて、開いてみる)をしたら、何もしないマクロが出てきたんです。

そして皆さんの回答を参考に問題のファイルをこのPCにコピーした後マクロウイルスを取り除きまた別のフォーマットしたFDに記録しました。それと同時にリカバリPCの方はまたリカバリして、エクセルをインストールしてました。
そして、その直したファイルの入ったFDをりかばりPCのほうに入れ、立ち上げてみました。しかし、マクロ・・・関係は出てこなかったものの、不正な・・・でまた閉じてしまいました。しかし、フロッピーからパソコン自体にコピーして、立ち上げると、今度は何もなく正常に立ち上がりました。どういうことでしょうか。FDドライブがおかしいということでしょうか。
長くなってしまいましたが、ご存知の方、よろしくお願いします。

お礼日時:2002/03/31 02:42

エクセルのウイルス「ラルー」に関してですが、私も前に感染しました。


ラルーにかかっているファイルをフロッピー経由でパソコン内に入れる等で感染します。
まずこのURLで、ウイルスチェックをしてみてください。

http://www.trendmicro.co.jp/hcall/scan.htm

感染しているのがラルーだけならば、このウイルスに関しては、古くて単純な仕組みなので手動で駆除(除去)することも可能です。
(感染しているエクセルファイルをすべて削除してゴミ箱も空にするのが早いのですが、下記URLを参照して、1つ1つ、データは残したままマクロ部分を消していくことによりウイルスは除去できます。除去作業後、もう一度ウイルススキャンにかけた方がよいですが)
ただし、感染源のフロッピーをまた開いたり、感染したパソコンを持っている人からもらったフロッピーをまた開くと再び感染します。誰のフロッピーから感染したか分かっていればそちらも駆除してもらうほうがよいと思います。
エクセルだけでなく、エクセルファイルを貼り付けたワードのファイルなども感染していることがあるので注意してください。

また、オンラインのウイルスチェックで、ラルー以外のウイルスも見つかってしまった場合には、その個別のウイルスに対しては別の対応が必要になります。
やはり、ウイルス対策のソフトを入れて、常に最新情報を反映させておくのがベストです。
いちいちファイルを開いてマクロを削除するのも面倒、と感じられると思いますが、ウイルス対策のソフトなら一度に駆除できます。ラルーならどのソフトでも駆除してくれると思います。

参考URL:http://www.keep-on.com/~excelyou/1999lng4/199901 …
    • good
    • 0
この回答へのお礼

ラルーウイルスの目的が良く分かりませんが、無事に削除できました。
今回の質問にこんなに回答がくるなんて思っても見ませんでした。
本当は皆さんの回答全てためになったので全てに良回答つけたいのですが、
そうはいきません。しかし気持ちは全ての回答が良回答です。
回答ありがとうございました。

お礼日時:2002/03/31 14:19

やっぱ、ラルーでしたか...



>リカバリCDで再インストールしたその日の出来事ですから。

何度リカバリしても、別ディスクやFD、
LANなら、共有フォルダのExcelファイル等をアンチウイルスソフト等ですべて退治しないと
繁殖します。
すぐにアンチウイルスソフトを入れたほうがいいですね、
それまではそのパソコンからのExcelファイルの
移動は避けたほうがいいです。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
今回の質問はあまりいい回答を期待していませんでした。
「ここの設定をこう変えると直りますよ。」こんなような回答を予想していました。
しかしそれは大違いでした。こんな些細な質問でもこんなに得られることがあって
かなり感激しています。今回のウイルスがそんなに悪質なものでなく良かったですが、
これからは気をつけたいと思います。

お礼日時:2002/03/31 14:10

よく見ると、#2の補足にBook1.xls!laroux.auto_open とありますね。


これはマクロウイルス?ラルー(laroux)?名前は知っているが、実態は見たことがない。
インターネットにつながなくてもウイルスに感染しますよ。

XLStartフォルダに何がある?
#6のkirara_pikaさん紹介のページなどで早急に調べたほうがいいと思います。
駆除する必要があるかもしれません。
    • good
    • 0
この回答へのお礼

ウイルスはインターネットにつながないパソコンでも感染するということを身をもって
実感しました。ウイルスはおそらくラルーだと思います。幸い今回のウイルスはそれほど悪質なものでなかったので良かったと思います。
回答ありがとうございました。

お礼日時:2002/03/31 14:04

Personal.xls は個人用マクロブックなので重要でなければ削除してしまえばいいでしょう。



エクスプローラで、ツール→検索→ファイルやフォルダで『Personal.xls』を探して削除してしまいます。

削除した後、『エクセル技道場-マクロを削除したのに警告が出る』
 http://www2.odn.ne.jp/excel/waza/macro.html#SEC1

を参考にして、確認してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
ちゃんと削除したら、元通りになりました。
しかし、再インストール直後にこうなったのはどうしてでしょうか。
「窓の手」が関係してるのでしょうか。
もうしばらく締め切らないので、心当たりの人は教えてください。

お礼日時:2002/03/31 01:08

下の下のかたの言うとおり。


まず、マクロに何か記録があるか確かめてみて下さい。
それでもし、あればマクロの記録の削除じゃだめかな?
ここで記録なんてなければ、ごめんなさい。
分かりません…。

この回答への補足

マクロを削除するとしたら、どうやって削除するのですか?
下の下の方の補足に書いたとおり、やはり何らかのマクロがありました。

補足日時:2002/03/31 00:53
    • good
    • 0

メニューバー「ツール」→「マクロ」→「マクロ」に何かマクロが入ってますか?

この回答への補足

やはりはいってました。
まず、マクロ名(M)とあるところのすぐした(一行だけのところ)には
PERSONAL.XLS!auto_open
とあり、その下の大きい欄には
PERSONAL.XLS!auto_open
Book1.xls!laroux.auto_open
PERSONAL.XLS!check_files
Book1.xls!aroux.check_files
とありました。

補足日時:2002/03/31 00:45
    • good
    • 0
この回答へのお礼

ラルーというウイルスに感染していたようです。
今までウイルスというものに感染したことがないので、ちょっとショックでした。
感染したことがないといいましたが、気づいていないだけかもしれませんが・・・。
実際今回のウイルスも過去に既に感染していたものが、今回たまたま発覚した
だけですしね。
回答ありがとうございました。

お礼日時:2002/03/31 14:01

きっと、ウイルスだと....

この回答への補足

それはありません。
リカバリCDで再インストールしたその日の出来事ですから。
しかもそのパソコンは、インターネットにつないだことがありません。

補足日時:2002/03/31 00:13
    • good
    • 0
この回答へのお礼

ウイルスではまずないと、えらそうなこといってすいませんでした。
やっぱりウイルスだったようです。
フロッピーなどを通して感染してしまうんですね。
回答ありがとうございました。

お礼日時:2002/03/31 13:58

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

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

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

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

Qエクセルで<名前をつけて保存>するマクロに、保存時マクロを含めて保存させることは可能ですか

エクセル、マクロとも初心者です。
(VBAはわかりません)

エクセルのテンプレートファイルを開いて、必要箇所だけ入力すると、その日の日付をファイル名として、<名前を付けて保存する>ようなマクロを作りました。

このままだと、マクロも一緒に保存されてしまいますよね。

マクロを含まずに、<名前を付けて保存>させるマクロって可能ですか?
できるとしたら、どうやればいいでしょうか。

Aベストアンサー

こんにちは。

今は(Excel 2002以上)は、直接、VBEditor 側にアクセスするコードはセキュリティの関係で嫌われることもあります。Excel 2007 の場合は、拡張子で分別できますから、マクロは切り落とされます。今回は、テンプレートということで、あえて、このようなコードになるのであって、本来は、アドインなどで処理したほうが良いかもしれません。アドインの場合は、ThisWorkbook をActiveWorkbook にすればよいはずです。

シートモジュールにマクロがある場合は、
      sh.Copy After:=wb.Sheets(wb.Worksheets.Count)
と、その下の行のコメントブロックとを切り替えてください。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Dim shCnt As Integer
  Dim wb As Workbook
  Dim i As Integer
  Dim sh As Worksheet
  Dim nSh As Worksheet
  Dim fName As String
  
  If Not ThisWorkbook.Name Like "*.x?t" Then
    Cancel = True
    fName = ThisWorkbook.Name
    fName = Left$(fName, Len(fName) - 1)
    shCnt = Application.SheetsInNewWorkbook
    Application.SheetsInNewWorkbook = 1
    Set wb = Workbooks.Add
    wb.Worksheets(1).Name = "temp"
    Application.ScreenUpdating = False
    For Each sh In ThisWorkbook.Sheets
      sh.Copy After:=wb.Sheets(wb.Worksheets.Count)
      ''シートモジュールマクロがある場合(上のコード切り替えすること)
      'Set nSh = wb.Sheets.Add(After:=wb.Sheets(wb.Worksheets.Count))
      'nSh.Name = sh.Name
      'sh.Cells.Copy nSh.Cells(1, 1)
    Next sh
    wb.Sheets(1).Activate
    Application.ScreenUpdating = True
    Application.DisplayAlerts = False
    wb.Worksheets(1).Delete
    Application.DisplayAlerts = True
    Application.SheetsInNewWorkbook = shCnt
    ChDir Application.DefaultFilePath
    i = 1
    '同名ファイルを探す
    Do Until Dir(fName & i & ".xls") = ""
     i = i + 1
    Loop
    fName = fName & i & ".xls"
    
    Application.Dialogs(xlDialogSaveAs).Show fName, 1
    ThisWorkbook.Close False
    Set wb = Nothing
  End If

End Sub


#3さんのご指摘のマクロですが、マイクロソフトの定義(プログラマーズガイド)からすると、今回のイベント型は、マクロと呼ばないそうです。マクロは、引数を持たないパブリックなSub プロシージャのことだけを指しますので、除外されます。しかし、多くの方は、あまり、これについては、明言は避けているようです。理由は、マクロそのものの意味が、ミクロの反対で、全体のひとつのタスクを指すから、厳密な意味を持たせると、言葉としての原義と離れてしまうように思います。

こんにちは。

今は(Excel 2002以上)は、直接、VBEditor 側にアクセスするコードはセキュリティの関係で嫌われることもあります。Excel 2007 の場合は、拡張子で分別できますから、マクロは切り落とされます。今回は、テンプレートということで、あえて、このようなコードになるのであって、本来は、アドインなどで処理したほうが良いかもしれません。アドインの場合は、ThisWorkbook をActiveWorkbook にすればよいはずです。

シートモジュールにマクロがある場合は、
      sh.Copy After:=wb.Shee...続きを読む

Qエクセルのマクロを使って、例えば、「大阪太郎」を、「25」という数字に

エクセルのマクロを使って、例えば、「大阪太郎」を、「25」という数字に一発&ごっそり変換したい。

上記の1件だけなら、エクセルの「置換」を使ってやればいいのはわかるのですが(実際、そのようにやってみたのですが、結構、大変だったものですから・・・)、実は、このような変換を、毎月、約70件こなさねばならない(つまりは、約70人分ある)ので、どうにか効率化できないかと調べた結果、「マクロ」というものを使って、そこに変換式(プログラム)を入れて、「適用」させれば、うまく行くのでは?と思い至りました。

「大阪太郎」→「25」、「東京次郎」→「26」、「北海道三郎」→「27」とかいう、そういう具合に、変換するのを、エクセルの「置換」を使わずに、変換のためのマクロ(VBA?)を一度だけ組んでしまって、後は、毎月、ポチッとボタンを押す、というようにしたいのです。

こういうことが、果たしてできるのかどうか、もしできるのなら、どういうプログラムを組めばよいのか、入り口だけでもよいので、ご教示いただけるでしょうか?
(ちなみに、ウェブ検索したのですが、漢字の文字列をカナ変換するとか、そういう「変換」のためのページはたくさん出てきたのですが、私の希望する、特定の文字列を、数字に変換するためのページなどは、(ニーズが無いせいか)見つけることができませんでした。

以上、なにとぞよろしくお願いいたします。

エクセルのマクロを使って、例えば、「大阪太郎」を、「25」という数字に一発&ごっそり変換したい。

上記の1件だけなら、エクセルの「置換」を使ってやればいいのはわかるのですが(実際、そのようにやってみたのですが、結構、大変だったものですから・・・)、実は、このような変換を、毎月、約70件こなさねばならない(つまりは、約70人分ある)ので、どうにか効率化できないかと調べた結果、「マクロ」というものを使って、そこに変換式(プログラム)を入れて、「適用」させれば、うまく行くのでは?と思...続きを読む

Aベストアンサー

Sub 置換()

Dim c As Range

For Each c In Selection

c.Value = Replace(c.Value, "置換前文字", "置換後文字")
c.Value = Replace(c.Value, "変換前文字", "変換後文字")

'ここに同じように好きなだけ・・

Next

End Sub


選択範囲について適用します

Qエクセル2007で例えばセルA1~A100まで数字が入力されているとし

エクセル2007で例えばセルA1~A100まで数字が入力されているとします。この範囲の同じ数字だけ抽出(桐みたいような単一化機能)する方法はありますか?
例セル 1,5,6,7,5,8,9,8,2
抽出後 1,2,5,6,7,8,9

Aベストアンサー

A1~A100を選択し、ホームタブの「データ」「詳細設定」で「重複するデータは無視する」にチェックを入れ(必要に応じて抽出範囲を指定して)、「OK」すれば重複のないデータが抽出されます。

Q複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ

複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。

マイドキュメントのデーターというフォルダ内に
エクセルファイルA(シート名みかん)
エクセルファイルB(シート名りんご)
エクセルファイルC(シート名バナナ)
エクセルファイルD(シート名ぶどう)
エクセルファイルE(シート名いちご)

があります。

雛形は同じです。すべてA列~F列までデータが入っています。
行数はファイルによって違います。
また毎日自動で上書き更新され、毎日行数が変わります。

エクセルファイルZがあります。シートが7個あります。
・変換
・集計
・みかん
・りんご
・バナナ
・ぶどう
・いちご

エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。)
マイドキュメントのデーターフォルダも開いておきます。

エクセルファイルZにおいて「マクロの記録」を起動。

エクセルファイルZの
【みかん】~【いちご】までの5シートを全データDELETEします。

開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。
(タスクバーにいます)
ファイルAのシート【みかん】の全データ選択して
エクセルファイルZの【みかん】というシートのA1セルにカーソルを
あわせて貼り付けします。

開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。
(タスクバーにいます)
ファイルBのシート【りんご】の全データ選択して
エクセルファイルZの【りんご】というシートのA1セルにカーソルを
あわせて貼り付けします。
これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。

エクセルファイルZにおいて「マクロの記録」を終了させます。
マクロができあがりました。

ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。

エラーにはなりませんが、ファイルZの5種類各シートに
ファイルA~Eのデータが貼りつきません。

何か無理な事をしているのでしょうか?
もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を
【みかんZ】~【いちごZ】に変更してマクロを再記録しても
駄目でした。

よろしくお願いします。

複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。

マイドキュメントのデーターというフォルダ内に
エクセルファイルA(シート名みかん)
エクセルファイルB(シート名りんご)
エクセルファイルC(シート名バナナ)
エクセルファイルD(シート名ぶどう)
エクセルファイルE(シート名いちご)

があります。

雛形は同じです。すべてA列~F列までデータが入っています。
行数はファイルによって違います。
また毎日自動で上書き更新され、毎日行数が変わります。

エ...続きを読む

Aベストアンサー

保存しないで閉じる、でなくて読み取り専用で開く、なら参考ページあります。
ファイルを選ぶ画面の開くボタンにオプションあります。

OPENの記述行のファイル名の後、「,READONLY:=TRUE」と書きます、試しにマクロを作って確認してみて下さい。

閉じるタイミングはAからZへ貼付けたらA選んで閉じていったんZ選んでB開く、感じです。

Qエクセルでマクロ?を使ってファイルを作るんですが

ロータスで作られてるファイルをエクセルに作り直すことになったんですが
これにマクロが組まれてるようで、それをエクセルでも再現して欲しいといわれました。

マクロを起動すると
強制的にB7にカーソルが移動します。そこからデータ入力が開始になりまして
B7~L7まで入力が終わると、そこに入力されたデータが消えて
B14~L14に入力されます。次にデータを入れるとB15~L15といった感じです。
B列は通し番号で10000から始まり10ずつ増えていきます。
マクロを起動するとB7に次に入れる番号が勝手に入力されます。
おそらくB列の一番下?を参照して+10してるのだと思うのですが。

B7でエンターを押すとC7、入力してエンターを押すとD7に
といった感じで強制的に次に入力する場所にカーソルが移動します。

ただ一箇所だけH7の次が 別のシートに飛びまして
そこで例えば 補助* といれると
その下に補助で始まる品名が(補助シート、補助パネル、補助制御盤など)
候補?としてあらわれて、例えば補助パネルにあわせてエンターを押すと
最初のシートに戻ってI7にそれが入力されているといった感じになってます。
ここは別のシートに品名一覧を最初に作っておいて
そこから呼び出してるんだと思いますが。

入力が終わるとコントロールブレイク?というのでマクロが終了してました。
ロータスは初めて使ったのでさっぱりわかりませんので
うまく説明できなくて申し訳ないです。

エクセルでこんな感じのマクロを組まないといけないのですが
どのようにすればよいのかをわかる方いませんか?


あと、今後このようにマクロやら関数やらを使ったファイルを作ってくれ
という仕事がやたらと回ってきそうなんですが(というか回ってきてる)
殆ど素人の私が一から学んでいく上で
参考になるサイトや本とかありましたら教えていただけたらと思います。

ロータスで作られてるファイルをエクセルに作り直すことになったんですが
これにマクロが組まれてるようで、それをエクセルでも再現して欲しいといわれました。

マクロを起動すると
強制的にB7にカーソルが移動します。そこからデータ入力が開始になりまして
B7~L7まで入力が終わると、そこに入力されたデータが消えて
B14~L14に入力されます。次にデータを入れるとB15~L15といった感じです。
B列は通し番号で10000から始まり10ずつ増えていきます。
マクロを起動するとB7に次に入れる番号が勝手に入...続きを読む

Aベストアンサー

例えば以下のマクロを入力シートの「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けて、シートに戻ると「ある程度希望に沿う」動作はすると思います。

でも実際の使われ方も分からないので「希望どおり」とはいかないでしょう。ましてや、
>そこで例えば 補助* といれると
などは実際のシートと動きを見なければ作りようがありません。
ですからご自身でマクロを書くときの「参考」程度として見てください

Private Sub Worksheet_Activate()
Dim wkMax As Long
 On Error GoTo end0
 Application.EnableEvents = False
 wkMax = Application.Max(Range("B14:B65536"))
 If wkMax = 0 Then
  Range("B7").Value = 10000
 Else
  Range("B7").Value = wkMax + 10
 End If
 Range("C7").Select
end0:
 Application.EnableEvents = True
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim wkMax As Long
 On Error GoTo end0
 If Not Intersect(Target, Range("B7:K7")) Is Nothing Then
  Target.Offset(0, 1).Select
 End If
 Application.EnableEvents = False
 If Target.Address = "$L$7" Then
  wkMax = Application.Max(Range("B14:B65536"))
  If wkMax = 0 Then
   Range("B7:L7").Copy Destination:=Range("B14")
  Else
   Range("B7:L7").Copy Destination:=Range("B65536").End(xlUp).Offset(1, 0)
  End If
  Range("B7").Value = Range("B7").Value + 10
  Range("C7:L7").ClearContents
  Range("C7").Select
 End If
end0:
 Application.EnableEvents = True
End Sub

例えば以下のマクロを入力シートの「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けて、シートに戻ると「ある程度希望に沿う」動作はすると思います。

でも実際の使われ方も分からないので「希望どおり」とはいかないでしょう。ましてや、
>そこで例えば 補助* といれると
などは実際のシートと動きを見なければ作りようがありません。
ですからご自身でマクロを書くときの「参考」程度として見てください

Private Sub Worksheet_Activate()
Dim wkMax As Long
 On Error GoTo en...続きを読む


人気Q&Aランキング

おすすめ情報