よく使うEXCELファイルを開くといつも「開こうとしているドキュメントにはマクロが含まれています。」と言うメッセージが出ます。マクロを使った覚えは無いのですが・・・。マクロの一覧を見ても何も登録されていませんので削除する方法が分かりません。たぶん使い回しているうちに変なことをしてしまったのだと思いますが[セキュリティ レベル] を下げるのも怖い気がしてできません。何とかこのメッセージが出ないようにする方法を教えてください。バージョンはEXCEL2000、OSはWIN2000です。宜しくお願い致します。

A 回答 (2件)

EXCELに何らかのマクロが取込まれた(?)様ですね。


一番原始的な方法ですが、全シートで次の操作をすれば、
出なくなると思います。

1.新しいBOOKを作成。
2.元EXCELファイルのシートを全選択(左上の角をクリック)する。
  (こうすると、レイアウトまでそっくりコピーできます。)
3.Ctrl+Cでコピーする。
4.「1.」で作成したBOOKに「2.」の並び順にCtrl+Vで貼り付ける。
5.「1.」のシートの名前を「2.」の名前に直す。
  (シートの名前をダブルクリックすると変更が出来ます。)
以上の事を「2.」のシート分繰り返す。

これでマクロは引継がれないと思います。
    • good
    • 0

こんにちは



 VBEでプロジェクトエクスプローラ(通常、左側にあります)でModule1などと表示されているものの上で右クリック-Moduleの解放(Excel97の場合にはModuleの削除)、としてみてください。その際、エクスポートしますか?と聞いてきますが、[いいえ]をクリックします。

 また、ThisWorkbookやSheet1などのコードウィンドウを開いて、なにかコードが残っていたら、これも削除します。

 VBEはAlt+F11 (またはメニュー[ツール]-[マクロ]-[VBE])で開けます。

 また、名前定義が原因である場合もあります。
 以下のページをご覧ください。

[XL97] 特定の名前が定義されているとマクロダイアログが表示される
http://www.microsoft.com/JAPAN/support/kb/articl …

 それから、

> マクロを使った覚えは無い

ということでしたら、ウィルスチェックをされた方が良いと思います。

参考URL:http://www2.odn.ne.jp/excel/

この回答への補足

回答ありがとうございます。

> VBEでプロジェクトエクスプローラ(通常、左側にあります)でModule1などと表示されているものの上で右クリック-Moduleの解放

との事でしたが、VBEでプロジェクトエクスプローラを見たのですが「Module1他」を見つけることが出来ませんでした。

>ThisWorkbookやSheet1などのコードウィンドウを開いて、なにかコードが残っていたら、これも削除します。

ここは有りましたが、コードなどは見当たりませんでした。

>[XL97] 特定の名前が定義されているとマクロダイアログが表示される

これも該当する名称ではありませんでした。
ウィルスチェックはやってみます。m(__)mショボン

補足日時:2001/02/01 19:39
    • good
    • 0

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

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

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

Qexcelのマクロでrangeの選択がうまくいきません。

excelのマクロでrangeの選択がうまくいきません。
以下のマクロをsheet2に書きました。testcopyは動きますが、testcopy2は動きません。なぜなのでしょうか。どうすればいいのでしょうか。それ以外のマクロの部分との関係から、cellsを使い、数字を使ってrangeの処理をしたいのです。よろしくお願いします。

Sub testcopy()
Worksheets("sheet1").Range("B3:C10").Copy
Worksheets("sheet2").Range("e5").Select
ActiveSheet.Paste
End Sub

Sub testcopy2()
Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy
Worksheets("sheet2").Range("e5").Select
ActiveSheet.Paste
End Sub

Aベストアンサー

>testcopyは動きますが、testcopy2は動きません

testcopyは「動作したり、しなかったりする」が正しい表現です。
  要するに今回testcopyが動いたのは▼たまたま▼ということです。

testcopy2 は当然ながらエラーになります。
何れにしろ、両方ともに問題があるということです。
その問題点は2つあります。

(1)アクティブでないシートのセルはSelect(Activate)できない
(2)複数のシートを扱うときのセルの参照は
   そのセルがどのシートのセルなのか明示する必要がある


これを踏まえて、、、、
---------------
●testcopy●

これが動作するのは
Sheet【2】がアクティブな状態で実行する場合です

Sheet【1】がアクティブな状態で実行すると
  Worksheets("sheet2").Range("e5").Select
ここで、問題点(1)の理由によりエラー。
で、先ずシートを選択、次にセルを選択と2段階にしないといけません。

  Worksheets("sheet2").Select
  ActiveSheet.Range("E5").Select

----------------
●testcopy2●

▼Sheet【1】がアクティブな状態で実行
  testcopyと同じ場所、同じ理由でエラー

▼Sheet【2】がアクティブな状態で実行
  Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy
  ここで、問題点(2)により、エラー。
 
 Cellsの前にシートオブジェクトがないので
 Cells(3, 2), Cells(10, 3)はアクティブなSheet【2】のセルとみなされ
 (★実際はちょと違う場合もありますが今回はそう★)

 Worksheets("sheet1").Range(  ← Sheet【1】
 Cells(3, 2), Cells(10, 3))   ← Sheet【2】

このようにSheet【1】【2】が混在していることになり、エラー
で、Cellsの前にシートを付加してセルがどのシートのセルか明示してやる

Worksheets("sheet1").Range(Worksheets("sheet1").Cells(3, 2), Worksheets("sheet1").Cells(10, 3)).Copy
  
---------------------------------
で、質問者のコードを修正すると
'-------------
Sub testcopy()
 Worksheets("sheet1").Range("B3:C10").Copy
 With Worksheets("sheet2")
   .Select
   .Range("E5").Select
   .Paste
 End With
End Sub
'-------------

Sub testcopy2()
 With Worksheets("sheet1")
   .Range(.Cells(3, 2), .Cells(10, 3)).Copy
 End With
 With Worksheets("sheet2")
   .Select
   .Range("E5").Select
   .Paste
 End With
End Sub
'--------------

●ただ今回のような単純なコピーの場合は
 既出の回答にあるようにSelectなしで書くのがふうつです。
'-----------
Sub testcopy111()
 Worksheets("sheet1")
   .Range("B3:C10").Copy Worksheets("sheet2").Range("E5")
 End With
End Sub
'-----------
Sub testcopy222()
 Worksheets("sheet1")
  .Range(.Cells(3, 2), .Cells(10, 3)).Copy Worksheets("sheet2").Range("E5")
 End With
End Sub
'-----------

今回の件は重要事柄ですので覚えておきましょう。
以上です。
 

>testcopyは動きますが、testcopy2は動きません

testcopyは「動作したり、しなかったりする」が正しい表現です。
  要するに今回testcopyが動いたのは▼たまたま▼ということです。

testcopy2 は当然ながらエラーになります。
何れにしろ、両方ともに問題があるということです。
その問題点は2つあります。

(1)アクティブでないシートのセルはSelect(Activate)できない
(2)複数のシートを扱うときのセルの参照は
   そのセルがどのシートのセルなのか明示する必要がある


これを踏まえて、、、、
-...続きを読む

QExcel 2000 のマクロで漢字の含まれているセルを検索する方法

Excel 2000 のマクロを使用して、漢字の含まれているセルを検索
したいのですが、方法がよくわかりません。どうすればよいのでしょうか?

Aベストアンサー

こんにちは。maruru01です。

漢字かどうかの判断は文字コードでします。
その場合、文字コードの何番から何番までが漢字かを自分で指定しないといけません。
漢字に限らず、ひらがなでもカタカナでも記号でも、該当する文字コード範囲を自分で指定しないといけません。
漢字コードについての参考URLを紹介しておきます。
http://hp.vector.co.jp/authors/VA017832/hide_chimarl/chimarl09_03.html

実際のコードはこんな感じになります。
(とりあえず、1つのセルの文字について調べます。引数にセルの文字を入れて下さい。)

Private Function CheckKanji(Str As String) As Boolean

  Dim tempChr As String '調べる文字
  Dim tempCode As Integer '調べる文字のコード
  Dim i As Long 'ループカウンタ
  Dim StartCode As Integer '最初の漢字のコード
  Dim EndCode As Integer '最後の漢字のコード

  Const StartChr As String = "亜" '最初の漢字
  Const EndChr As String = "黑" '最後の漢字

  CheckKanji = False

  '漢字をコードに変換
  StartCode = Asc(StartChr)
  EndCode = Asc(EndChr)

  For i = 1 To Len(Str)
    tempStr = Mid(Str, i, 1)
    tempCode = Asc(tempStr)
    '判定
    Select Case tempCode
      Case StartCode To EndCode '漢字
        CheckKanji = True
        Exit Function
      Case Else '漢字ではない
        '何もしない
    End Select
  Next i

End Function

あとは、検索対象のセルをループで回して下さい。

参考URL:http://hp.vector.co.jp/authors/VA017832/hide_chimarl/chimarl09_03.html

こんにちは。maruru01です。

漢字かどうかの判断は文字コードでします。
その場合、文字コードの何番から何番までが漢字かを自分で指定しないといけません。
漢字に限らず、ひらがなでもカタカナでも記号でも、該当する文字コード範囲を自分で指定しないといけません。
漢字コードについての参考URLを紹介しておきます。
http://hp.vector.co.jp/authors/VA017832/hide_chimarl/chimarl09_03.html

実際のコードはこんな感じになります。
(とりあえず、1つのセルの文字について調べます。引数にセルの...続きを読む

QRange("K" & TR).Formula = で、セルにマクロで式を書きたいのですが

よろしくお願いします。いつもgooの皆さんには大変お世話になっています
エクセルは2013です

わけあって、セルにマクロで式を書いています
例えば TRは行を表す変数ですが
Range("K" & TR).Formula = "=IFERROR(AY" & TR & ","""")" と書いたマクロの結果は
=IFERROR(AY43,"") という式がRange("K" & TR) に書かれます

それでは、いま、マクロで下記のように書いているコード(TRは行を表す変数です)
Range("Z" & i) = Range("Z" & i - 1) - Range("AG" & TR) * 10000 は
Range("Z" & i).Formula = 
で書く場合、=の右側をどう書いたら良いでしょうか

色々とやってみたのですが狙った式になりません

この場合 変数 i を使っているので、もしかしたら、そもそも無理なことでしょうか

うまく説明できていませんがよろしくお願いします

Aベストアンサー

No.1です。申し訳ありません大ボケな回答をしていましました。

要するに↓ってことですよね? また勘違いしていたらスミマセン。

Range("Z" & i).Formula = "=Z" & i - 1 & "-AG" & TR & " * 10000"

QExcel 2000を開こうとするとエラーメッセージが出るんです

Win95にOffice 2000をカスタムインストールしたら、Word 2000を開いたときや文書を書いているとき急に強制終了になるので教えて!gooで調べてOfficeツールの文書構成ツールをカスタムインストールしました。

すると今度は、ExcelやWordで作られたものがRETファイルになったのでOffice 2000のExcel・Word・AccessカスタムインストールてSR-1・SP-2をオンラインでインストールしました。

すると今度はOffice 2000のCDを入れる画面が出て『'C:\Program Files\Microsoft Office\Office\Library\Solver\SOLVERXLA'が見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください。』というエラーが出てからExcelが開きます。

どうしたらいいか、教えてください

Aベストアンサー

2つ目の問題を読み間違えたのかもしれませんが、拡張子がRTFではなくてRETなのでしょうか。既に作られているファイルxlsなどのファイルがRETに表現されたということでしょうか。

メモリー不足の問題はリソースが足りなくなっていると考えられます。リソースメータをインストールして確認し、リソースの確保を考えてください。

QVBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗

マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。

マクロの内容は、任意の範囲をコピー、新規book追加し、
新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。

いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。
下記にマクロ内容全部記載します。
よろしくお願いします。

*********************************************************
*********************************************************
Sub 日報別ファイルに保存したい1()
Worksheets("日報").Range("A3:AF36").Copy
With Workbooks.Add
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells.Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

ApplicationDisplayAlerts = True '同名FILEが存在する場合'
ActiveWorkbook.SaveAs Filename:= _
"c:\日報\" & ActiveSheet.Range("J2") & "年" & ActiveSheet.Range("l2") & "月" & ActiveSheet.Range("n2") & "日_日報.xls" _
, FileFormat:=xlNormal
.Close file


End With

End Sub

マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。

マクロの内容は、任意の範囲をコピー、新規book追加し、
新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。

いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。
下記にマクロ内容全部記載します。
よろしくお願いします。

***********...続きを読む

Aベストアンサー

こんにちは。

>結果、「ThisWorkbook」上の下記のマクロを削除すると、正常に動きだしました。
それは、Copy 範囲が、消えてしまうことで、PasteSpecial が利かなくなってしまうからです。

まず、シート名の長いコードは、これだけでよいはずです。

Private Sub Workbook_Activate()
 Select Case StrConv(Trim(ActiveSheet.Name), vbNarrow)
 Case "1" To "30", "日報"
  Application.Calculation = xlCalculationManual
 End Select
End Sub


-------------------------------------------
''もし、そのままでダメでしたら、 ' Application.EnableEvents = False 'イベントの介入を阻止する のところのコメント・ブロック('コードの手前のアポストロフィ)を外して、再度試してみてください。

Sub 日報別ファイルに保存したい2()
Dim myRng As Range
Set myRng = Worksheets("日報").Range("A3:AF36")
 ' Application.EnableEvents = False 'イベントの介入を阻止する

With Workbooks.Add
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
  Application.CutCopyMode = False
 
 ApplicationDisplayAlerts = True '**これは、そのままでは必要ないはずです。'
 
 ActiveWorkbook.SaveAs Filename:="c:\日報\" & ActiveSheet.Range("J2") & "年" & _
                 ActiveSheet.Range("l2") & "月" & _
                 ActiveSheet.Range("n2") & "日_日報.xls", _
                 FileFormat:=xlNormal
 .Close file
End With
Set myRng = Nothing
'Application.EnableEvents = True 'イベントマクロの活動を戻す

End Sub

こんにちは。

>結果、「ThisWorkbook」上の下記のマクロを削除すると、正常に動きだしました。
それは、Copy 範囲が、消えてしまうことで、PasteSpecial が利かなくなってしまうからです。

まず、シート名の長いコードは、これだけでよいはずです。

Private Sub Workbook_Activate()
 Select Case StrConv(Trim(ActiveSheet.Name), vbNarrow)
 Case "1" To "30", "日報"
  Application.Calculation = xlCalculationManual
 End Select
End Sub


-----------------------------------------...続きを読む

QExcelでマクロを削除してもファイルを開くと警告メッセージが表示されるのはなぜ?

Excelで記録マクロを作成し、いったん登録されたマクロを削除して上書き保存しても、再度そのファイルを開くとマクロを有効にするか無効にするかという警告メッセージが表示されます。
セキュリティレベルを低にすると表示はされませんが、それ以外にセキュリティレベルが中のままで、マクロを削除したファイルを開いた時に警告メッセージが出ないようにする方法はありますでしょうか?

Aベストアンサー

こんばんは。

以下は、現時点(9/3)では、結果が出ていませんが、試してみてください。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2384977
(http://okwave.jp/kotaeru.php3?q=2384977)

以下は、徹底して探すような書き方になってまいすが、基本的には、標準モジュールが残っていると、マクロがあると言ってきます。また、Excel2003 と Excel2002では、このセキュリティレベルが、若干違います。

QExcelマクロでRange("A1:A5,C1:C5")をCellsで書きたいのですが

マクロ初心者です。
Excelマクロでグラフを作成するときに、元データを指定する所で、
Source:=Range("A1:A5,C1:C5")とするような場合、
「A1」とかアルファベットでの番地指定ではなく、
Cellsを用いて書きたいのです。

Source:=Range("A1:A5")であれば、
Source:=Range(Cells(1, 1), Cells(5, 1))と書けばいいことは分かるのですが、範囲指定を複数にする場合が分からないのです。

よろしくお願いします。

Aベストアンサー

Unionを使用したらできると思います。

Source:=Union(Range(Cells(1, 1), Cells(5, 1)), Range(Cells(1, 3), Cells(5, 3)))

今Excelがインストールされてないパソコンで作業していないので確認はしていないのですが・・・。

よかったら参考にして下さい

QEXCELファイルを開くとき「マクロを含んでいます」というメッセージが出ないようにしたい。

EXCELでマクロを組んだファイルをもう一度開いたときには、「マクロを含んでいます」というメッセージが出て、有効にするか、無効にするかを聞いてきます。
このメッセージを出ないようにするにはどうしたらよいのでしょうか。
教えてください。

Aベストアンサー

マクロ防護のセキュリティレベルは、個々のパソコンのExcelでのみ有効です。また、マクロを削除しただけではメッセージは出ます。モジュールごと削除する必要があります。まれに、モジュールすべて、シートオブジェクトのコードウインドウのマクロコードをすべて削除してもメッセージが出る場合がありますが、そんなときはシート全体をコピーして、新規ブックの新しいシートに貼り付けてリニューアルするといいです。

デジタル署名は一度だけユーザーに認証してもらえるとセキュリティレベルを下げることなく使えるので便利です。私もよく使います。デジタル署名は"SELFCERT.EXE"という実行ファイルで、個人的なものを作成できます。Microsoft Officeフォルダの中で検索してみてください。見つからない場合は、アプリケーションの追加と削除で追加してください。

Qエクセルのマクロ(range)について

マクロの作りと理解の方法について教えてください。

今、日報を作り直しています。
以前作成した方は、このように作っていました。


Worksheets("日報").Select
Range("Q7:Q23").Value = Range("U7:U23").Value
Range("S7:S59").Value = Range("V7:V59").Value
Range("A1").Select
MsgBox " 転写を終了しました。"
End Sub


マクロでは複数の行列を指定していますが、1行だけ表すと、
具体的な表とデータの変化の仕方とするとこのようになっています。

M    O    Q     S       U     V
個数 金額  累計個数 金額金額 (=M+Q) (=O+S)
0、   0、   100、   1000、    100、   1000 
1,初期状態

10、  100、  100、   1000、    110、   1100
2,個数を入力すると、計算式を入力してあるUとVの数が変わる

10、  100、   110、   1100、    120、   1200
3,マクロを実行すると、UとVの数がQとSに入力され、計算式を入力してあるUとVの数がさらに変わる。

0、   0、    110、   1100、   110、    1100
4,MとOの数をゼロ(クリア)にすると、計算式を入力してあるUとVの数が変わる。     


なかなか理解できないのは、Range("Q7:Q23").Value = Range("U7:U23").Valueの部分で、
2,の後にマクロを実行すると、U 110、V 1100がQ 100とS 1000に書き込まれることです。
通常の計算式だと=は対象となったセルをそのまま表示していると思うのですがのですが、
マクロに書いてある式だと3,のところでUとVの数をQとSに書き込んであります。
なぜ=なのにマクロでは一方のセルに数を書き込んでいるのでしょうか。
また、QやSをUやVへ書き込んでいないのでしょうか。

どなたか詳しく教えていただけると幸いです。

マクロの作りと理解の方法について教えてください。

今、日報を作り直しています。
以前作成した方は、このように作っていました。


Worksheets("日報").Select
Range("Q7:Q23").Value = Range("U7:U23").Value
Range("S7:S59").Value = Range("V7:V59").Value
Range("A1").Select
MsgBox " 転写を終了しました。"
End Sub


マクロでは複数の行列を指定していますが、1行だけ表すと、
具体的な表とデータの変化の仕方とするとこのようになっています。

M    O    Q     S...続きを読む

Aベストアンサー

プログラミング言語では、一般的に、
「=」は、右辺から左辺への「代入」
を意味します。

マクロ = Visual Basic = プログラミング言語
なので、Excelにおける「=」とは少し意味合いが違っています。

Qフォルダ内のexcelファイルを順に開いてマクロ有効ブックに別名保存して閉じるマクロを作りたい

マクロは難しい・・・

https://oshiete.goo.ne.jp/qa/2598781.html
上記URLでフォルダ内の全ファイルを開くマクロがありましたので参考にしていたのですが別名で保存の段階で詰まってしまいました。貴重な休日がああ~~
現在仕事の引き継ぎでマクロ非対応のファイルをマクロ有効にしようとしているのですが多いと1フォルダに100個、全部で400以上あるため自動でできたらなあと考えています
やりたい作業は、

1.同じフォルダにあるファイルを開く
2.別名で保存でマクロ有効ブックとして保存(名前は開いたファイルのまま)
3.閉じる
4.次のファイルを開く
5.1~4をフォルダ内のファイル全てに適用するまで繰り返す

というものです
URL先のコードに別名で保存のコードを入れればいいんじゃん!やったぜひとりでできるもん!と思い追加したいマクロを記憶しながらコードを見て作ってみたのですが同じ名前で保存されたり end sub が必要などとエラーが出て上手くいきませんでした(´;ω;`)

Aベストアンサー

失礼しました。パスの指定が不完全でした。これでどうでしょう。

Sub sample()
Dim Fs, Fl, Fn, wb
Set Fs = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files
For Each Fl In Fs
Fn = ThisWorkbook.Path & "\" & Fl.Name
If Right(Fn, 5) = ".xlsx" Then
Set wb = Workbooks.Open(Fn)
Fn = Left(Fn, Len(Fn) - 5) & ".xlsm"
Application.DisplayAlerts = False
wb.SaveAs Filename:=Fn, FileFormat:=xlOpenXMLWorkbookMacroEnabled
wb.Close
Application.DisplayAlerts = True
End If
Next
End Sub

失礼しました。パスの指定が不完全でした。これでどうでしょう。

Sub sample()
Dim Fs, Fl, Fn, wb
Set Fs = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files
For Each Fl In Fs
Fn = ThisWorkbook.Path & "\" & Fl.Name
If Right(Fn, 5) = ".xlsx" Then
Set wb = Workbooks.Open(Fn)
Fn = Left(Fn, Len(Fn) - 5) & ".xlsm"
Application.DisplayAlerts = False
wb.SaveAs Filename:=Fn, FileForma...続きを読む


人気Q&Aランキング

おすすめ情報