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

こんなのが実現できるなら是非教えていただきたいのですが、

集計.xlsm というマクロブックがあるのですが、
行数が多いのと各シートに数式が設定されているせいでファイルサイズが大きくて、
配布に適していません。

配布した先では閲覧のみなので、マクロは要らないし数式も不要です。
そこで全シートのセルを値にして、集計(配布用).xlsx で別名保存すれば良いと思いました。

シート数やシート名が不明ですので、
具体的には、
すべてのシートを順番に、シート全選択(Alt+A以外にある?)して、
コピーして、値で上書きして、別名保存というロジックになるかと思うのですが、
複雑でないなら教えていただけないでしょうか?
よろしくお願いいたします。

A 回答 (4件)

「開発」メニュー →「マクロの記録」


からざっくり作ってみました。

Sub Macro1()
'全シート選択
Worksheets.Select
'全セル選択
Cells.Select
'コピー
Selection.Copy
'値貼り付け
Selection.PasteSpecial Paste:=xlPasteValues
'おまけ(全シート、全セル選択状態で終わるのが気持ち悪いので解除)
Cells(1, 1).Select
ActiveSheet.Select
End Sub
    • good
    • 2
この回答へのお礼

ありがとうございます。
試してみたら一つ問題が発生しました。
ピボットテーブルのシートがあったのですが、そこまで値になってしまいました。
除外するシート名だけ分かるようにすれば回避できないでしょうか。

お礼日時:2020/01/31 10:42

名前をつけて保存でファイルの種類をCSV(.csv)かテキスト(.prn)にすると、値のみテキスト形式で保存されます。

    • good
    • 0

値貼り付けを"除外"するシート名の頭に「★」を付けておく。



①シート名1文字目が「★」以外のシートを選択
②全セルコピー → 値貼り付け
③全セル選択解除、複数シート選択解除
④「.xlsx」で保存

こんな感じにしてみました。

Sub Macro1()
'シート1番目を選択(シート名1文字目が「★」から始まっていないと想定)
Sheets(1).Select
'シート名1文字目が「★」以外のシートを選択
For Each i In ThisWorkbook.Sheets
If Not i.Name Like "★*" Then
i.Select Replace:=False
End If
Next i
'全セル選択
Cells.Select
'コピー
Selection.Copy
'値貼り付け
Selection.PasteSpecial Paste:=xlPasteValues
'おまけ(複数シート、全セル選択状態で終わるのが気持ち悪いので解除)
Cells(1, 1).Select
Sheets(1).Select
'「.xlsx」で保存
Application.DisplayAlerts = Fals
ActiveWorkbook.SaveAs Filename:=Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1), _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub
    • good
    • 1
この回答へのお礼

なるほど!さすがのアイデアですね。★以外にもできますね。
まだ確定ではないのですが試してみます!

お礼日時:2020/01/31 13:53

質問者さんの意図と反して、PDFで出力した物を配布すれば良いと思うのは自分だけでしょうか。

    • good
    • 0
この回答へのお礼

フィルタで条件を絞り込んだりするためPDFではダメなのです。

お礼日時:2020/01/31 13:54

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A