2017-12-20 13 views
1

を開かずに、私は、メッセージ行の下保存は、エクセルVBA経由でファイルを.xlsx形式の保存したファイル

の見通しメッセージを作成し、ファイル自体(のxlsx)をエクセル添付エクセルVBAコードを作ってるんです。

ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Date & " " & "Position Report Ver.2.xlsx", FileFormat:=51 

このコードは、xlsxファイルを特定のフォルダに保存します。

コピーしたxlsxファイルを保存します。

私のコードでは、保存直後に自動的に保存ファイル(xlsxファイル)が開きます。元のファイルは閉じられています。

マクロは、xlsxファイルを生成した後であっても、vbaマクロによるOutlookメッセージに添付する必要があるため、実行する必要があります。

保存した直後にxlsxファイルが開かれているため、保存後にvbaコードを実行できません。

xlsmからxlsxを開くことなくどのように保存できますか?

stackoverflowを検索しましたが、解決策が見つかりませんでした。コードは動作しませんか(単にXLSMコピー)XLSXし保存することはできません...私は完璧な答えを見つけることができませんでした...

をチェックすることを忘れないでください...これを試してみて

答えて

1

してくださいファイル名から無効な文字を削除するために、Format関数を使用していました。

ThisWorkbook.Sheets.Copy 
Application.DisplayAlerts = False 
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Date, "mm.dd.yyyy") & " " & "Position Report Ver.2.xlsx", FileFormat:=51 
ActiveWorkbook.Close 
+0

素晴らしい!それはうまくいった。 –

+0

しかし...どのように動作するのですか? このコードは単にシートをコピーしたもので、xlsmファイルを再オープンするコードは含まれていません。 xlsmファイルはこのコードで自動的に開きます。 –

+0

'ThisWorkbook.Sheets.Copy'行は、マクロブックからすべてのシートを含む新しいブックを追加し、SaveAsコマンドは新しいブックを.xlsx拡張子で保存して閉じます。最終的には、マクロブックが再び表示されます。私はそれがあなたが達成しようとしていたものだと思います。それがあなたの元の質問を処理するならば、答えを受け入れるためにあなたの質問に「解決済み」と記入してください。 – sktneer

0

@sktneerこのワークブックでは、データを含むシートはコピーされませんでしたが、空のワークブックのみが開きました。しかし、ActiveWorkbookがその仕事をしました。

ActiveWorkbook.Sheets.Copy 
Application.DisplayAlerts = False 
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Date, "mm.dd.yyyy") & " 
" & "Position Report Ver.2.xlsx", FileFormat:=51 
ActiveWorkbook.Close 
+1

上の方がうまくいきました。でも、ありがとう! –

+0

@ Umairあなたは何か変な話をしています。 :) – sktneer

関連する問題