2017-05-11 11 views
0

「SaveAs」、「閉じる」(.xlsm)ファイル、および同じ「New」シートを再度開くようにユーザに促すモジュール/ボタンに入力する適切なコードは何ですか?保存したブック(.xlsm)を「閉じる」しないコードには何がありますか?

「&保存」というボタンが付いたExcel対応のマイクロ対応ファイル.xlsmを作成したいとします。モジュール/ボタンはSaveAsを実行し、現在のファイルを閉じて同じファイルを再度開きます。たとえば、監査を記入して.xlsmシートを使用しているときに、SaveAsに「Save & New」ボタンをクリックして閉じ、同じファイルを再度開くが、保存したファイルは開きません。それにはテンプレートがあります。私はボタンをSaveAsにし、ファイルを閉じて、 "新しい"新鮮なファイルを自動的に開くだけです。

私は、と呼ばれるボタンを作成したことがわかり、この画像で

は「&新規保存」:ここでは

は、私がこれまで持っているものです。

私は "&新規保存"、それ意志 "名前を付けて保存" .xlsmシートをクリックすると、[1]

[ここに画像の説明を入力します]。

私は助けを必要とする場所です[2]

[ここに画像の説明を入力します]。シートを保存した後、ワークブックにファイルを「閉じる」ようにします。

enter image description here

そして「新」監査ワークブック形式(.xlsm)上で動作する前に、同じシートを開きます。

Sub Button7_Click() 
    Application.Dialogs(xlDialogSaveAs).Show 
    Dim oWB As Excel.Workbook 
    For Each oWB In Application.Workbooks 
     If oWB.Name = "_temp.xls" Then 
      oWB.Close 
      Exit For 
     End If 
    Next 
    Set oWB = Nothing 
    Workbooks.Open ("Communications Subdivisions System Audit.xlsm") 
    ActiveWorkbooks.Close 
End Sub 
:(保存されたシートが、それを変更する前に、開いているシートはありません)

enter image description here

は、これは私が、「保存&新」と呼ばれるモジュール/ボタンの内側に持っているコードです。

コードは現在 "SaveAs"で、保存する前に使用されたものと同じ "New"シートが開きます。問題は、以前に保存されたブックを閉じないが、「新規」シートを開くことです。 具体的には、私の質問は次のとおりです。

ブックを保存した後に「閉じる」ことなく、「新しい」シートを開いているコードには何がありますか?

+0

ではなく、あなたがActiveWorkbooks.Closeをすることができます使用して( "YourFile")を使用します。閉じる –

+0

Application.Dialogs(xlDialogSaveAs).Showはファイルを保存しません。これは、ユーザーが選択するパス/ファイル名である文字列を返します。まだWorkbook.SaveAsを実行する必要があります –

+0

Excelオブジェクトモデルで 'ActiveWorkbooks'と呼ばれるものについてはわかりません。一度に1つのブックしかアクティブ*にすることはできません。おそらくあなたは 'ActiveWorkbook'を使うつもりでしたか?提案: 'Workbooks.Open'によって返されたオブジェクト参照を取得し、アクティベーションの振る舞いに頼るのではなく、オブジェクトリファレンスを使用します。ちょうど...なぜあなたは文字通り*ちょうど開かれたワークブックを閉じますか? –

答えて

0

マクロに関わっていない限り、Excelに既に組み込まれている「テンプレート」機能を使用してこれを完全に達成し、多大な労力と手間を省くことができます。

"新しい"ファイルを必要な方法で入手し、 "名前を付けて保存"を選択し、ファイルタイプセクションで "Excel Template (*.xltx)"を選択します。選択した保存フォルダが変更されるので、実際にファイルを保存したい場所に保存ダイアログを戻して保存してください。

このファイルを開くたびに新しいコピーが作成され、通常の保存を行うと元のファイルに変更は加えられません。

+0

これは私の最初の初期設計でしたが、モジュールを作成し、 "名前を付けて保存"を実装し、ファイルを完全に "閉じる"ように指示し、 "新しい"シートを再度開きます。 – rm132

0

_がリテラル文字列ではなくワイルドカードとして比較されているようです。

私は、ワイルドカードのエスケープキーが動作しません使用して周り、いくつかの理由のために遊んだあなたが好き代わりに=

と比較しない限り、これは動作するはずです:

Dim oWB As Excel.Workbook 
For Each oWB In Application.Workbooks 
    If oWB.Name Like "[_]temp.xlsm" Then 
     oWB.Close 
     Exit For 
    End If 
Next 
+0

まだ保存されたファイルは閉じません。私は、ボタンをクリックして「新しい」シートを開くたびに、保存されたファイルを閉じるわけではありません。 – rm132

関連する問題