Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11786 / 13644 ツリー ←次へ | 前へ→

【14019】マクロを削除して保存したのに・・・ WAKO 04/5/18(火) 16:45 質問[未読]
【14021】Re:マクロを削除して保存したのに・・・ IROC 04/5/18(火) 16:51 回答[未読]
【14024】Re:マクロを削除して保存したのに・・・ Jaka 04/5/18(火) 17:08 回答[未読]
【14045】Re:マクロを削除して保存したのに・・・ WAKO 04/5/19(水) 9:04 質問[未読]
【14047】Re:マクロを削除して保存したのに・・・ Jaka 04/5/19(水) 9:53 回答[未読]
【14048】Re:マクロを削除して保存したのに・・・ WAKO 04/5/19(水) 10:03 質問[未読]
【14050】Re:マクロを削除して保存したのに・・・ Jaka 04/5/19(水) 10:55 回答[未読]
【14051】なんとなくですが...。 Jaka 04/5/19(水) 11:13 発言[未読]
【14052】Re:マクロを削除して保存したのに・・・ WAKO 04/5/19(水) 12:30 質問[未読]
【14061】Re:マクロを削除して保存したのに・・・ Jaka 04/5/19(水) 16:21 回答[未読]
【14064】Re:マクロを削除して保存したのに・・・ ichinose 04/5/19(水) 17:29 発言[未読]
【14065】Re:マクロを削除して保存したのに・・・ ichinose 04/5/19(水) 17:41 発言[未読]
【14072】Re:マクロを削除して保存したのに・・・ Jaka 04/5/20(木) 9:45 お礼[未読]
【14074】追伸 Jaka 04/5/20(木) 10:12 発言[未読]
【14075】Re:追伸 IROC 04/5/20(木) 11:03 回答[未読]
【14165】Re:マクロを削除して保存したのに・・・ WAKO 04/5/22(土) 13:12 お礼[未読]

【14019】マクロを削除して保存したのに・・・
質問  WAKO  - 04/5/18(火) 16:45 -

引用なし
パスワード
   こんにちは、
別のbookにマクロを以下のように削除して
保存したのですけど、open時に"マクロを有効にしますか"
というメッセージがでます。
中をあけても、マクロが書かれている形跡は全くありません。
誰か分かる方いらっしゃいますか


'画面のボタン削除
      Workbooks(wsFileA & "temp" & wsKakutyo).Worksheets(1).OLEObjects("CommandButton1").Delete
      Workbooks(wsFileA & "temp" & wsKakutyo).Worksheets(1).OLEObjects("CommandButton2").Delete
      Workbooks(wsFileA & "temp" & wsKakutyo).Worksheets(1).OLEObjects("CommandButton3").Delete
      Workbooks(wsFileA & "temp" & wsKakutyo).Worksheets(1).OLEObjects("CommandButton4").Delete
  
      'マクロは削除して保存
      With Workbooks(wsFileA & "temp" & wsKakutyo).VBProject
        For Each VBC In .VBComponents
         Select Case VBC.Type
           Case 1, 2, 3
            .VBComponents.Remove VBC
           Case 100
            With VBC.CodeModule
              .Deletelines 1, .Countoflines
            End With
         End Select
        Next
      End With
      

【14021】Re:マクロを削除して保存したのに・・・
回答  IROC  - 04/5/18(火) 16:51 -

引用なし
パスワード
   標準モジュールが残っていたり、
どこかのモジュールに記述が残っているのでは?


  他の質問はどうなったの・・?

【14024】Re:マクロを削除して保存したのに・・・
回答  Jaka  - 04/5/18(火) 17:08 -

引用なし
パスワード
   こんにちは。
ActiveX デザイナとか使っていませんか?
通常ならあれで全部消せるはずなんですが...。
もう少し雑にして、

With Workbooks(wsFileA & "temp" & wsKakutyo).VBProject
   For Each VBC In .VBComponents
     Select Case VBC.Type
      Case 100
        With VBC.CodeModule
          .Deletelines 1, .Countoflines
        End With
      Case Else
          .VBComponents.Remove VBC
     End Select
   Next
End With

97だったらこれなど他、多数原因があります。

概要
この資料は、 Excel 97 でマクロが含まれていないのに警告ダイアログが表示される現象について説明しています。

現象
Excel 97 で、特定の文字列で名前を定義したファイルを開くと、マクロが入っていないにもかかわらず以下の警告メッセージが表示される場合があります。

【14045】Re:マクロを削除して保存したのに・・・
質問  WAKO  - 04/5/19(水) 9:04 -

引用なし
パスワード
   ▼Jaka さん:
こんにちは、やっぱりメッセージがでました。
全て中身を確認しましたが、何も入っていなかったです。
ただ、やり方は、シート1にマクロが入っているのですが、
新規でエクセルを立上げ、マクロが入っているエクセルのシート1を
コピーして、新規エクセルに貼り付けて、それのマクロを削除しています。
その方法だと、メッセージがでます。
ただし、マクロエクセルそのものを、下記のやり方でマクロを取り除いて
場合は、メッセージはでません。
この違いは分かりますか。
Excel2000を使用しています。


▼Jaka さん:
>こんにちは。
>ActiveX デザイナとか使っていませんか?
>通常ならあれで全部消せるはずなんですが...。
>もう少し雑にして、
>
>With Workbooks(wsFileA & "temp" & wsKakutyo).VBProject
>   For Each VBC In .VBComponents
>     Select Case VBC.Type
>      Case 100
>        With VBC.CodeModule
>          .Deletelines 1, .Countoflines
>        End With
>      Case Else
>          .VBComponents.Remove VBC
>     End Select
>   Next
>End With
>
>97だったらこれなど他、多数原因があります。
>
>概要
>この資料は、 Excel 97 でマクロが含まれていないのに警告ダイアログが表示される現象について説明しています。
>
>現象
>Excel 97 で、特定の文字列で名前を定義したファイルを開くと、マクロが入っていないにもかかわらず以下の警告メッセージが表示される場合があります。

【14047】Re:マクロを削除して保存したのに・・・
回答  Jaka  - 04/5/19(水) 9:53 -

引用なし
パスワード
   おはようございます。
すみません、今一行っている作業の手順がよくわかりません。

>マクロが入っているエクセルのシート1を
>コピーして、新規エクセルに貼り付けて、
ここなどが、??の部類のひとつになりますが、シートの複製コピーのことですよね?
仮にコピー元ブックのシート1を、新規に作成したブックにシート1を複製コピーして、マクロ実行後に新規に作成したブックを保存終了後に開くと、マクロ有効無効のメッセージが出ると言うことなのでしょうか?

だとすると、マクロが消えていないと言うか、消していない可能性があります。

>With Workbooks(wsFileA & "temp" & wsKakutyo).VBProject
このブック名は合っていますか?

【14048】Re:マクロを削除して保存したのに・・・
質問  WAKO  - 04/5/19(水) 10:03 -

引用なし
パスワード
   ▼Jaka さん:
内容は以下の通りです。
マクロエクセルのシート1には、コマンドボタンもあります。
新規bookは名前を付けて保存し、
マクロ終了後開けますと、コマンドボタンも消えていますし、
vbaの中身も消えています。
何か目にみえないものが残っているのでしょうか。
分かりましたら教えて下さい


▼Jaka さん:
>おはようございます。
>すみません、今一行っている作業の手順がよくわかりません。
>
>>マクロが入っているエクセルのシート1を
>>コピーして、新規エクセルに貼り付けて、
>ここなどが、??の部類のひとつになりますが、シートの複製コピーのことですよね?
>仮にコピー元ブックのシート1を、新規に作成したブックにシート1を複製コピーして、マクロ実行後に新規に作成したブックを保存終了後に開くと、マクロ有効無効のメッセージが出ると言うことなのでしょうか?
>
>だとすると、マクロが消えていないと言うか、消していない可能性があります。
>
>>With Workbooks(wsFileA & "temp" & wsKakutyo).VBProject
>このブック名は合っていますか?

【14050】Re:マクロを削除して保存したのに・・・
回答  Jaka  - 04/5/19(水) 10:55 -

引用なし
パスワード
   今の所、原因が何なのか解りませんが、下記コードを新規ブックに貼り付けて、
問題のブックをアクティブにして実行してみてください。
その結果を教えてください。

Sub シートのマクロ有無()
Dim MCode As String, SCode As String, Flg As Boolean
With ActiveWorkbook.VBProject
   For Each VBC In .VBComponents
     MCode = Empty
     Select Case VBC.Type
      Case 100
        ss = VBC.Name
        With VBC.CodeModule
          On Error Resume Next
          MCode = .Lines(1, .Countoflines)
          If Err = 0 Then
            SCode = SCode & vbCrLf & VBC.Name & vbCrLf & MCode
          End If
          Err.Clear
          On Error GoTo 0
        End With
      Case Else
        MsgBox VBC.Name & "が、残っています。"
        Flg = True
     End Select
   Next
End With
If SCode <> Empty Then
  MsgBox "マクロのコードあり" & vbCrLf & SCode
  Flg = True
End If
If Flg = False Then
  MsgBox "マクロはありませんでした。"
End If
End Sub

【14051】なんとなくですが...。
発言  Jaka  - 04/5/19(水) 11:13 -

引用なし
パスワード
   複製コピーしたシートって、エクセル4.0のマクロシートじゃないですよね?

【14052】Re:マクロを削除して保存したのに・・・
質問  WAKO  - 04/5/19(水) 12:30 -

引用なし
パスワード
   ▼Jaka さん:
親切にありがとうございます。
実行しましたら、マクロはありませんでした。
との答えがでました。
なぜでしょうね。


▼Jaka さん:
>今の所、原因が何なのか解りませんが、下記コードを新規ブックに貼り付けて、
>問題のブックをアクティブにして実行してみてください。
>その結果を教えてください。
>
>Sub シートのマクロ有無()
>Dim MCode As String, SCode As String, Flg As Boolean
>With ActiveWorkbook.VBProject
>   For Each VBC In .VBComponents
>     MCode = Empty
>     Select Case VBC.Type
>      Case 100
>        ss = VBC.Name
>        With VBC.CodeModule
>          On Error Resume Next
>          MCode = .Lines(1, .Countoflines)
>          If Err = 0 Then
>            SCode = SCode & vbCrLf & VBC.Name & vbCrLf & MCode
>          End If
>          Err.Clear
>          On Error GoTo 0
>        End With
>      Case Else
>        MsgBox VBC.Name & "が、残っています。"
>        Flg = True
>     End Select
>   Next
>End With
>If SCode <> Empty Then
>  MsgBox "マクロのコードあり" & vbCrLf & SCode
>  Flg = True
>End If
>If Flg = False Then
>  MsgBox "マクロはありませんでした。"
>End If
>End Sub

【14061】Re:マクロを削除して保存したのに・・・
回答  Jaka  - 04/5/19(水) 16:21 -

引用なし
パスワード
   ▼WAKO さん:
>実行しましたら、マクロはありませんでした。
>との答えがでました。
>なぜでしょうね。

状況がよく見えません。
今のところ状況や原因さっぱりわかりません。
取りあえず、作成したブックのコピーしたと言うシートを削除して、別名で保存後、そのブックをエクセルが起動していない状態で、Wクリックして開いてみてください。
それでもマクロうんぬんのアラーとが出ますか?

また、エクセルアプリケーションだけをただ立ち上げただけでも出るのかも確認してみてください。

モジュールをマクロで作成挿入をしているみたいですが、そのあたりも関係しているかもしれませんね。
マクロで挿入したばかりのモジュール等は、エクセルにうまく認識されていないこともあるみたいですので、続けて挿入削除などを繰り返していると、ブック自体がおかしくなることもあるみたいです。1回ごとにエクセル自体を終了させないと、エクセルに想定していない情報が残っていることもあるみたいです。
みたいというより、マクロで挿入されたモジュール等は、作成されたばかりの状態だと、うまく認識されていないのか、手動で削除後、今一度マクロで挿入するとエラーになります。バージョンによっても違うのでしょうが...。
XP以降は、全くできなくなりました。

モジュールやフォームの作成マクロは、アンチウイルス等に引っかかってしまうこともある事も頭に入れておいたほうがいいと思います。

私は試行錯誤していたファイルを消されました。

グローバル変数を使いたいだけなら、ツールバーを作ってボタン等のキャプションが代用できると思いますが....。

【14064】Re:マクロを削除して保存したのに・・・
発言  ichinose  - 04/5/19(水) 17:29 -

引用なし
パスワード
   ▼Jaka さん、皆さん、こんにちは。
Excel2000(Sp-3)で
現象を確認しました。

再現手順は、
新規ブックの最左端ワークシートに「コントロールツールボックス」のコマンドボタンを
ひとつ貼り付けて下さい。
当該シートのシートモジュールに
上記ボタンのクリックイベントプロシジャーを

'============================================
Private Sub CommandButton1_Click()
  MsgBox "ok"
End Sub


等と記述して下さい。


これでシートの準備はOK・・・。

問題のコードを標準モジュールに
'===========================================================
Sub copytest()
  Set bk = Workbooks.Add
  ThisWorkbook.Worksheets(1).Copy before:=bk.Worksheets(1)
  Call 削除処理(bk)
  bk.SaveAs "D:\My Documents\TESTエリア\vbprotest4.xls"
'         適当な名前で保存する
End Sub
'=====================================================================
Sub 削除処理(bk)
  With bk.VBProject
   bk.Worksheets(1).OLEObjects(bk.Worksheets(1).OLEObjects.Count).Delete
   
   For Each VBC In .VBComponents
     Select Case VBC.Type
      Case 1, 2, 3
       .VBComponents.Remove VBC
      Case 100
       With VBC.CodeModule
         .Deletelines 1, .Countoflines
         End With
      End Select
     Next
   End With
End Sub


このcopytestを実行後、保存したブック「vbprotest4.xls」を一旦とした後、
再度、開くと「マクロを有効うんぬん」のメッセージが出ます。

原因は、謎ですが、調べた限りでは、

bk.Worksheets(1).OLEObjects(bk.Worksheets(1).OLEObjects.Count).Delete

↑のコードをコメントに変えて実行すると、vbprotest4.xlsを開いたときに
メッセージは出ません。

「コントロールツールボックス」のコントロールの削除に原因がありそうですよ!!

これは、私が以前質問させていただいた

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=7011;id=excel

に関係しているのかもしれませんね!!

「コントロールツールボックス」のコントロールは、動的な作成・削除には
向いていないのかもしれません。

「フォーム」のコントロールへの変更を考えた方がよいかもしれませんよ。

【14065】Re:マクロを削除して保存したのに・・・
発言  ichinose  - 04/5/19(水) 17:41 -

引用なし
パスワード
   一応の回避方法です。


>Excel2000(Sp-3)で
>現象を確認しました。
>
>再現手順は、
>新規ブックの最左端ワークシートに「コントロールツールボックス」のコマンドボタンを
>ひとつ貼り付けて下さい。
>当該シートのシートモジュールに
>上記ボタンのクリックイベントプロシジャーを
>
>'============================================
>Private Sub CommandButton1_Click()
>  MsgBox "ok"
>End Sub
>
>
>等と記述して下さい。
>
>
>これでシートの準備はOK・・・。
>
>問題のコードを標準モジュールに
>'===========================================================
>Sub copytest()
>  Set bk = Workbooks.Add
>  ThisWorkbook.Worksheets(1).Copy before:=bk.Worksheets(1)
>  Call 削除処理(bk)
>  bk.SaveAs "D:\My Documents\TESTエリア\vbprotest4.xls"
>'         適当な名前で保存する
>End Sub
>'=====================================================================
>Sub 削除処理(bk)
>  With bk.VBProject
>   
>   For Each VBC In .VBComponents
>     Select Case VBC.Type
>      Case 1, 2, 3
>       .VBComponents.Remove VBC
>      Case 100
>       With VBC.CodeModule
>         .Deletelines 1, .Countoflines
>         End With
>      End Select
>     Next
>   End With
   bk.Worksheets(1).OLEObjects(bk.Worksheets(1).OLEObjects.Count).Delete

>End Sub

問題のボタンコントロールの削除をVbprojectの処理の後に実行するとOKでした。

【14072】Re:マクロを削除して保存したのに・・・
お礼  Jaka  - 04/5/20(木) 9:45 -

引用なし
パスワード
    ichinose さん こんにちは。

>このcopytestを実行後、保存したブック「vbprotest4.xls」を一旦とした後、
>再度、開くと「マクロを有効うんぬん」のメッセージが出ます。

ほ、ほんまや。
ヘボWin2000 & 97 で、再現しました。

さすが探求の鬼ですね!
全く知りませんでした、結局はMSのバグと言うことなんでしょうけど....。

ありがとうございます。
勉強になりました。
と、ともに拾い物です。
ichinoseさんは探求の鬼で、こういう問題はichinoseさんに振れば安心できる。
今後ともよろしくお願いします。

【14074】追伸
発言  Jaka  - 04/5/20(木) 10:12 -

引用なし
パスワード
   >このcopytestを実行後、保存したブック「vbprotest4.xls」を一旦とした後、
>再度、開くと「マクロを有効うんぬん」のメッセージが出ます。

不思議なことに、これを上書き保存すると次回から出なくなっちゃうんですよね!
変なの。

【14075】Re:追伸
回答  IROC  - 04/5/20(木) 11:03 -

引用なし
パスワード
   シート上にコントロールツールボックスのオブジェクトを配置すると、
TEMPファイルが作成されるので、その影響でしょうか・・・(-_-;)

【14165】Re:マクロを削除して保存したのに・・・
お礼  WAKO  - 04/5/22(土) 13:12 -

引用なし
パスワード
   ▼ichinose さん:
返信が遅れまして申し訳ありません。
ありがとうございます。
解決つきました。
今後ともよろしくお願いします。


▼ichinose さん:
>一応の回避方法です。
>
>
>>Excel2000(Sp-3)で
>>現象を確認しました。
>>
>>再現手順は、
>>新規ブックの最左端ワークシートに「コントロールツールボックス」のコマンドボタンを
>>ひとつ貼り付けて下さい。
>>当該シートのシートモジュールに
>>上記ボタンのクリックイベントプロシジャーを
>>
>>'============================================
>>Private Sub CommandButton1_Click()
>>  MsgBox "ok"
>>End Sub
>>
>>
>>等と記述して下さい。
>>
>>
>>これでシートの準備はOK・・・。
>>
>>問題のコードを標準モジュールに
>>'===========================================================
>>Sub copytest()
>>  Set bk = Workbooks.Add
>>  ThisWorkbook.Worksheets(1).Copy before:=bk.Worksheets(1)
>>  Call 削除処理(bk)
>>  bk.SaveAs "D:\My Documents\TESTエリア\vbprotest4.xls"
>>'         適当な名前で保存する
>>End Sub
>>'=====================================================================
>>Sub 削除処理(bk)
>>  With bk.VBProject
>>   
>>   For Each VBC In .VBComponents
>>     Select Case VBC.Type
>>      Case 1, 2, 3
>>       .VBComponents.Remove VBC
>>      Case 100
>>       With VBC.CodeModule
>>         .Deletelines 1, .Countoflines
>>         End With
>>      End Select
>>     Next
>>   End With
>   bk.Worksheets(1).OLEObjects(bk.Worksheets(1).OLEObjects.Count).Delete
>
>>End Sub
>
>問題のボタンコントロールの削除をVbprojectの処理の後に実行するとOKでした。

11786 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free