アプリ版:「スタンプのみでお礼する」機能のリリースについて

Win8 Excel2010です。
以下のEXCEL VBA の文章を教えて下さいm--m




すべてのエクセルウィンドウを、最小化した状態で(見えなければ良い)、UserForm2.Showしながら、上書き保存してを閉じる。
その際、閉じる前に以下のマクロを実行する。
With ActiveWindow

'''罫線を表示
.DisplayGridlines = True

'''行列番号を表示
.DisplayHeadings = True

'''アウトライン記号を表示
.DisplayOutline = True

'''シート見出しを表示
.DisplayWorkbookTabs = True

'''メニューを表示
Application.CommandBars("Worksheet Menu Bar").Enabled = True

'''ツールバーを非表示
For Each cb In Application.CommandBars
cb.Enabled = True

'''数式バーの非表示
Application.DisplayFormulaBar = True

'''ステータスバーの非表示
Application.DisplayStatusBar = True

Next
End With



宜しくお願いします。

A 回答 (1件)

こんばんは。



もしかしたら思ったようにいかない可能性があります。
単純に考える人もいますが、長くやってみないと見えてこない部分もあるはずです。
私自身、こういうものは、知っているだけに気後れがしてしまいます。
簡単なことを難しく考えているようには見えますが、意外に、この種のものは、むつかしいです。
これを土台に、いろいろ試してみてください。

以下は、ユーザーフォームのコマンドボタンにつけるものです。

>すべてのエクセルウィンドウを、最小化した状態で(見えなければ良い)、

この部分は、どうするかお任せになります。
なせなら、それは、今回の質問内容とは別の問題のように思うからです。

以下は、おかしな部分があるような疑念がわくはずですが、以前、同様のものを何度も繰り返して、Excel 2007以上では、Excel のアプリケーションが終わらない現象があります。それで、このようなコードになりました。(別の掲示板では、この内容を間違いだと決めつけた人がいますが、Quit と Saveが逆にするのは、古くからの手法です)

また、名前を付けていないブックは、名前を付けて保存するか、捨ててしまうか、どちらかになります。
ThisWorkbookを最後にしないと、このような場合は、UserFormを立ち上げたままですと、途中で終了させると、ハングやクラッシュする可能性があります。

'//
Private Sub CommandButton1_Click()
 Dim wb As Workbook
 Dim fn As Variant
 For Each wb In Application.Workbooks
  If wb.Name Like "Book#*" Then
   fn = Application.Dialogs(xlDialogSaveAs).Show
   If Not VarType(fn) = vbBoolean Then
    wb.SaveAs fn
    wb.Close False
   Else
    wb.Close False
   End If
  ElseIf Not (wb.Name = ThisWorkbook.Name Or wb.Name Like "PERONAL.*") Then
   If wb.Saved = False Then
    wb.Save
   End If
   wb.Close False
  End If
 Next
 Call SettingBack(ThisWorkbook.Windows(1))
 If ThisWorkbook.Saved = False Then
  Application.Quit
  ThisWorkbook.Close True 'ここは、逆で可能なのです。
 Else
  Application.Quit
  ThisWorkbook.Close
 End If
 Application.Quit 'これでも閉じなければ、下のコードも活かしてください。
 'Application.Quit '予備
End Sub
Sub SettingBack(wb As Window)
  Dim cb As Object
  On Error Resume Next
  With wb.Windows(1)
    .DisplayGridlines = True '罫線を表示
    .DisplayHeadings = True '行列番号を表示
    .DisplayOutline = True 'アウトライン記号を表示
    .DisplayWorkbookTabs = True 'シート見出しを表示
    Application.CommandBars("Worksheet Menu Bar").Enabled = True 'メニューを表示
    For Each cb In Application.CommandBars 'ツールバー
      cb.Enabled = True
    Next
    Application.DisplayFormulaBar = True '数式バーの非表示
    Application.DisplayStatusBar = True 'ステータスバー
  End With
  On Error GoTo 0
End Sub
'//
    • good
    • 0
この回答へのお礼

教えていただいたものではうまく行かず、別の方法で解決しました。ありがとうございます。

お礼日時:2015/03/19 19:18

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