• ベストアンサー

エクセル マクロ

cj_moverの回答

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 > フィルタ機能を実行中(行が歯抜けになっている状態)では > ファイルの上書き保存が出来ない仕様にできないでしょうか? マクロが有効な場合に限る、という条件でしたらば、可能です。 > その場合メッセージボックスの表示が欲しいです 一応、 「フィルター抽出状態のワークシートが1つ以上見つかった場合は」 「フィルター抽出状態を解除しておくことが求められます。」というメッセージを表示して ●[OK]を選んだ場合   「すべてのワークシートに対してフィルター抽出状態を解除」してから   ■上書き保存する■ ●[キャンセル]を選んだ場合   ■上書き保存しない■ という風に強制的なものを書いてみました。 但し、Excelに慣れた人であれば、 [デザインモード]に切り替えることで、一時的にマクロを無効にしてから、 手動での上書き保存が可能であることに気が付く人もいるかも知れません。 周囲の状況を見て、この方法の採否について検討してください。 「わざわざマクロを無効にするような人はいない」とか 「内規としてデザインモードを禁止することが可能」とか 職場の環境に期待して構わないと判断されたなら、 十分に有効な方法であると考えます。 逆に、デザインを含めた全権的な編集権限を持つユーザー(この場合は質問者さん)は、 [デザインモード]に切り替えることで、 フィルター抽出状態のままでも上書き保存が可能になります。 > 対象シートは全部(Thisworkbook)です 「フィルター抽出状態であるか確認するべき対象は、Thisworkbookのすべてのシートです」 とか、読み下して解釈しています。 ' ' ******************** ThisWorkbook モジュール Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)   Dim oWsh As Worksheet ' ' すべてのワークシートに対してフィルター抽出状態を確認   For Each oWsh In ThisWorkbook.Worksheets     If oWsh.FilterMode Then Exit For   Next ' ' フィルター抽出状態のワークシートが1つ以上見つかった場合は   If Not oWsh Is Nothing Then       ' ' ●[OK][キャンセル]を選ぶメッセージボックス     If MsgBox("フィルター抽出状態のシートがあります。" & _       vbLf & vbLf & "このブックを上書き保存するには、" & _       vbLf & "フィルター抽出状態を解除しておくことが求められます。" & _       vbLf & vbLf & "フィルター抽出状態をすべて解除するマクロを実行した後、" & _       vbLf & "上書き保存しますか?" & _       vbLf & vbLf & "(キャンセルを選ぶと上書き保存は実行されません。)", _       vbOKCancel Or vbInformation, ThisWorkbook.Name & ":上書き保存時の注意") _         = vbOK Then       ' ' ●[OK]を選んだ場合       ' ' すべてのワークシートに対してフィルター抽出状態を解除       For Each oWsh In ThisWorkbook.Worksheets         If oWsh.FilterMode Then oWsh.ShowAllData       Next       ' ' ■上書き保存する■     Else ' ' ●[キャンセル]を選んだ場合       ' ' ■上書き保存しない■       Cancel = True       Set oWsh = Nothing  '  後始末     End If   Else ' ' フィルター抽出状態のワークシートが見つからなかった場合     ' ' 必要な処理があれば、ココに   End If End Sub ' ' ********************

noname#225437
質問者

お礼

希望通りのものでした。 ご回答ありがとうございました。

関連するQ&A

  • エクセル マクロ 関数

    フィルタ機能を実行中(行が歯抜けになっている状態)は ファイルを閉じる事が出来ない仕様にできないでしょうか? もしくは メッセージボックスにて注意喚起が出来ればありがたいです。

  • エクセルのマクロ(検索)

    お世話になります。 エクセルのマクロで以下の処理をしたいのですがアドバイスください。 Excel2002です。 以下は実際の作業を簡略化したものです。 F列が●●という文字列で、かつE列が空白以外の行を検索した結果、 →対象行がない場合、【対象行はありません】というメッセージボックスを出し、OKをクリックしてマクロを終了させる →ある場合、1行目にオートフィルタを設定し、F列が●●という文字列で、かつE列が空白以外の行を表示させる(オートフィルタの機能で)ここでマクロの動作を一時停止させ、【続行】or【終了】が選択できるメッセージボックスを表示させる。 ここで【終了】をクリックすればマクロを終了させる。 【続行】をクリックすれば、いまオートフィルタで表示されている行のD列を値をすべて-1に変更する。次にオートフィルタを解除し、F列にある●●というセルをすべてクリア(空白)しマクロを終了させる。 アドバイスお願いします。

  • エクセルで閉じるときのマクロ

    あるエクセルファイルがあり、 その一枚のシートにはオートフィルタ (A~Z列まで)を使用しています。 【質問1】 ファイルを保存して閉じる際、 オートフィルタで抽出したものを 「すべて」に戻す、 つまりなにも抽出されていない(=左端の行番号が黒字) に戻すマクロはどこにどのように書けばよいでしょうか? オートフィルタを戻すマクロは、 'オートフィルタのあるシートを選択 Sheets("買取リスト").Select 'T列のオートフィルタを「すべて」にする Selection.AutoFilter Field:=22 というところまでは理解できました。 【質問2】 上記のマクロを Sheets("顧客リスト") から、Sheets("商品リスト")へ移動した際、 ボタン等を使用せずに、 (ただ、下のタブをクリックするだけで) 実行させることは可能でしょうか? 可能であれば、どこにどのように記述すれば よいでしょうか??  よろしくお願いします。

  • エクセル:マクロ:保存時に連番をつける

    3シートついたエクセルファイル(雛形)をいつも使うのですが、2シート目のみをデスクトップにある「新しいフィオルダ」に保存したいのですが、マクロで「2シートに行って移動、名前をつけて保存」という過程を記憶させたのですが、いつも同じ名前でしか保存を記憶してないため、「上書きしますか」と出てきてしまいます。自動的に連番かなにかがついて上書きしないで全部ためときたいのですがどうしたらいいでしょうか。 よろしくお願いします。

  • エクセルマクロでご教示ください

    エクセルで作られたデータファイルに対し、ある操作を施して上書き保存するというマクロを作りました。 そのマクロを走らせるとファイル名を聞いてきまして、そこでファイル名を入力してやれば、ある操作を施したあと 自動的に上書き保存までしてくれるのですが、対象ファイルが複数個あると、ひとつ実行したあとまたひとつ ファイル名を入れて、またそれが終ったら次のファイル名を・・・というように、ひとつひとつ実行しなければならない というのが現状です。 これを次のように改良したいのですが、どうすればいいのでしょうか? 1.マクロを立ち上げる。 2.処理する複数のファイルが入っている「フォルダ」を選ぶ。  (一覧表示のウィンドウが出てきて、その中で「フォルダ」を選ぶ) 3.そのフォルダの中に入っているエクセルファイル全てに対し、既に作成済みのマクロを順次実行する。 というものです。 よろしくお願いします。

  • エクセルで特定のセルを選択したい(マクロ)

    以下のようなマクロを組もうとしていますが、出来ません。 sheet1において 1)マクロを実行すると、メッセージボックスが出る。 2)メッセージボックスに入力した文字と同じ文字が入力されているセルを選択する。 3)2)のセルの1行下のセルを選択する。 2)で必ずエラーが出てしまいます。どのような方法が良いのか教えていただけるとありがたいです。よろしくお願いします。

  • Excel マクロについて

    Excelで作成したシートを次の手順で保存できるようなマクロを作成したいのですがどうしたらいいでしょうか?  1)あらかじめ所定のフォーマットを用意しユーザーが入力できるようにする。  2)ユーザがボタンを押すとそのシートの上2行(1行、2行)と左1列(A列)が削除され、    (タイトル行なのでCSVにする際に不要な為。)  3)「名前を付けて保存」のダイアログボックスが表示し  4)保存先のフォルダが「X:\DATA\」となるようにし  5)ファイル名がその日付(yyyymmdd.csv)、CSV形式 (例:20031125.csv)となるようにし、    (ユーザーにても変更の可能性もあるので固定にはしない)  6)ユーザーが保存先、ファイル名等を確認語保存する。  7)保存後は元のEXCELシート(CSV形式でない)で開いた状態で終了とする。 自分でも作成したのですが、本当にこれでいいのかも疑問でご意見を教えて下さい。 特に、7)のところがうまくいかず、6)での保存後どうしても開いているファイルの状態が CSV状態になります。 以上、ご存知の方教えて下さい。  

  • エクセルのマクロ

    エクセルで"123"と"234"というファイルがあるとします。 123を開いていない状態の時に、何かエクセルのファイルを名前を付けて保存→"234"に上書きすると、"123"の"A"というマクロが実行される様にできますか?

  • エクセル2007で、「マクロ」形式保存かつ「暗号化」状態で、マクロが実行できない

    エクセル2007を最近導入しました エクセル2003で作成したファイルを、2007形式に順次変換して、保存・使用しています そんなファイルの中に、「読み取りパスワード」をかけていて、 かつ、簡単なマクロ(自動記録機能を元に作成)を含むファイルがあります マクロの保存先は「作業中のブック」です このような種類のファイル(パスワード保護+マクロ実行)を2007に変換・保存しようとすると 「マクロ有効ブック形式」(*.xlsm)で保存するようにメッセージが出ます メッセージにしたがい、保存・終了し、改めて開こうとすると 「マクロを実行するためには…暗号化を解除する」ようにメッセージが表示されます (なお、ファイルにアクセス制限は設定していません) つまり、2007では、「パスワード保護+マクロ実行」というのは、混在できないようなのです 私の操作方法の誤りでしょうか? それとも、このような仕様になっていて、何か、回避する方法があるのでしょうか? 教えてください。お願いします。

  • Excelのマクロで

    Office2000を2003にヴァージョンアップにしました。 マクロを使用しているExcelのファイルが開くのですが、 編集した後、上書き保存しようとすると、“保存出来ません”という メッセージが出て、保存出来ません。 どういう理由で保存できないかメッセージが出てくれたら 良いのですが・・。 こういう状況になった方、教えてください(^人^)