[[20230225154937]] 『xlsmをxlsxで保存したい』(テイルフィールド) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『xlsmをxlsxで保存したい』(テイルフィールド)

xlsm形式で一旦保存したマクロ有効ファイルをxlsxに変換したいのです。
初心者のため色々、ネット検索してこのサイトで以下を見つけました。
これをどこに張り付けすれば良いのでしょうか。

Dim fname As String
Application.DisplayAlerts = False
fname = "aaa.xlsx" '
Sheets.Copy
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & fname
ActiveWorkbook.Close
Application.DisplayAlerts = True

よろしくお願いします。

< 使用 Excel:Excel2016、使用 OS:Windows8 >


 参考過去ログです。

[[20190726084457]] 『xlsmをxlsxで保存』(かえで)
(MK) 2023/02/25(土) 16:05:01


 こちらも参考にしてください。

https://learn.microsoft.com/ja-jp/office/vba/api/excel.xlfileformat
(MK) 2023/02/25(土) 16:06:31


 >これをどこに張り付けすれば良いのでしょうか。

 「どこに」の意味が分かりません。

 VBEのこと?
 あるいは標準モジュールやワークシートモジュールなどの「どこに」ということ?

 どういうタイミングで行いたいか?にもよると思います。
(MK) 2023/02/25(土) 16:18:40

 2019/07/26(金) 09:12のカリーニンさんのレスをよく読んでくださいね。
(MK) 2023/02/25(土) 16:21:52

一つ忘れてました。
マクロ有りブックをマクロ無しブック
として保存する場合は、拡張子、保存形式を
変えただけではだめです。

シートをコピーしブックとして保存するか、

 Application.DisplayAlerts = False
 ’ブックを保存
 Application.DisplayAlerts = True

 としないと警告メッセージが出ます。

(MK) 2023/02/25(土) 16:49:10


 警告が出るというのはガセネタでした。
 私が試したコードのFileFormatが間違ってました。

 形式を
 xlOpenXMLWorkbook
 にすると問題なく保存できました。

 間違って
 xlWorkbookDefault
 で試してました。
(MK) 2023/02/25(土) 17:49:47

何度も返信ありがとうございます。
職場で使用しているエクセルファイルが共有フォルダにあり、各部署でショートカットを作成して使用しています。
このファイルにマクロを追加した為、拡張子をxlsmにして保存しなければならなくなりました。
できれば、使用部署にファイル名の変更を伝えずに済ませたいので、同じ名前のままにしたいです。
この為、「xlsmをxlsxで保存」したいのです。
わかりにくく申し訳ありません。本日は職場から離れた為、また月曜日にファイルを見て連絡します。
(テイルフィールド) 2023/02/25(土) 19:38:05

 残念ながら、それはできない相談です。
 人間だったら、「顔つきはxlsxだけどマクロが入ってるんだね、あそう、事情があるんだね」とか
 忖度する人がいるかもしれないが、機械はそんな融通ききません。

 マクロが入ったxlsxブックなどという例外は認められません。
 「使用部署に連絡したらいいんじゃないですか?それが嫌なら、マクロを消してください」が
 Excel側の答えです。 
(abc) 2023/02/26(日) 07:49:09

上にも書いてありますが
xlsmだろうが、マクロを消していまえば(モジュールがあれば、モジュールごと)、ただのマクロが使えるだけのxlsxと変わらないと思うのだけれど。
拡張子を変えれば、拡張子通りのファイルになると思っているところがアホだと思います。
手作業でやればアラートが出ると思いますが。
マクロ付きブックを形式を変えて保存すれば、アラートが出ると思いますよ。
その辺もう少し勉強された方がいいと思います。
(ウインドウズの拡張子に対しても、話が通じなさそうなので)

 尚
 >初心者のため色々、ネット検索してこのサイトで以下を見つけました。 
 なんの初心者だか解りませんが、これは同じファイル形式の物だと思います。

(無知) 2023/02/26(日) 15:01:10


アホですいません。
人に勉強しろと言う前に、言葉使いの勉強をして下さい。
こんな人がいるサイト、2度と来ません。
MKさんありがとうございました,
(テイルフィールド) 2023/02/26(日) 17:01:51

どのようなマクロを当該xlsxファイルに追加されたのか分かりませんので何とも言えませんが。

Changeイベントを用いたものだと難しいかもしれませんが、
別のマクロブックから当該xlsxを開いて、
適用することが出来るような類のマクロなら、当該xlsxはそのままで良いのでは。
(そんな使い方は状況によっては不便だと思うし、
 そもそも各部署のショートカットを作り直してもらうほうが良いと思うが)
(すいとん) 2023/02/26(日) 17:57:58


 問題の説明が不十分だったことが行き違いの原因です。

 あなたの本来の質問は、
 「マクロコードが入ったブックを、マクロ有効のままxlsxで保存したい、どうしたらよいか」という
 ことのようですが、最初の説明ではそういう風には読み取れません。
 議論されたのは、xlsmブックのなかのシートだけをコピーして、xlsxとして保存する方法でした。

 正確な目的が説明されたのは、(テイルフィールド) 2023/02/25(土) 19:38:05においてでした。
 最初からそう説明されていれば、MKさんもきっと私と同じ(より適切な?)回答をされていたはずです。
 残念ながら、その時点までの質疑のやりとりは、本来の質問に関するものではありませんでした。

 私は、そういうことはExcelの仕様上できない、とコメントしたのですが、
 まったく理解されなかったのは残念でした。
 私の回答で伝わると思っていましたが、そうではなかったようなので、改めて詳細説明しておきます。

 1. Sheets.Copy はシートをコピーするだけですから、標準モジュールにあるマクロコードは
    コピーされません。
    それを xlsxで保存することはできますが、それで今回追加したマクロが動作する訳はありません。
    (なお、シートモジュールにマクロがある場合は、そのシートモジュールのマクロも同時にコピーはされます。
    しかし、xlsxで保存はできません。)

 2.「xlsxブックにマクロコードを含める」ということは、どんな偉いさんのユーザーでも実現できません。
    これは手作業でやっても当然できませんし、マクロ操作すればできるといった種類のことでもありません。

 3. 二つの拡張子(xlsx,xlsm)の使い分けを導入したのは、
    マクロを使ったウイルスからユーザーを保護することも大きな理由のひとつだったでしょう。
    つまり、マイクロソフト社は、拡張子を分けることで「xlsxはマクロがないブックである」と
    いうことを明確にしたかったのです。ですから、一切の例外は認められないのです。
    仮にそこに例外を設けて、穴をあけてしまったら、マクロウイルスの作者は大喜びになります。
    (無論、そのほかのマクロウイルス対応策もありますから、単純化して申し上げています)

 4. そのブックにマクロを組み込むことが必須だとすると、xlsm形式にすることは避けられません。
    ですから、その連絡をしなければなりません。

 そういうことですので、よく理解してください。

 # ちなみに、こうした質問掲示板にはいろんな人(質問者、回答者)が出入りしますので、
 # 一人の人の言動に余り熱くならないことも処世術です。
 # 思うところはありますが、管理人さんのお仕事でしょう。
(abc) 2023/02/27(月) 08:29:03

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.