[[20190626080918]] 『作業中のワークシートのみをデスクトップに名前を』(ふう) ページの最後に飛ぶ

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

 

『作業中のワークシートのみをデスクトップに名前を付けて保存』(ふう)

複数のワークシートがあるファイルで作業し、作業修了後に
そのワークシートのみをデスクトップに保存したい。
ワークシートには数式が入っているので保存は数式ではなく値として
保存したいのですが、よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 ものすごくテキトーに書きますけど、
 だいたい↓こんな感じの流れで出来るかと思います。

    Worksheets(そのワークシート).Copy
    With ActiveSheet
        .Cells.Copy
        .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        .SaveAs Environ("userprofile") & "\Desktop\" & ファイル名
        .Parent.Close
    End With

 数式を値に変換するくだりは、
 元シートの状況によっては↑ではマズい場合もあろうかとは思います。

(白茶) 2019/06/26(水) 09:10


どこまで作っているのか分からないですけど、デスクトップのパスを取得する部分は↓が参考になりそうです。
http://officetanaka.net/excel/vba/tips/tips107.htm
 ※白茶さんの方法もアリ

あとは、

 (1)シートをまるごと【新規ブック】へコピー
 (2)(Activeになっている)【新規ブック】の1番目のシート全体を一旦コピーして、そのままその範囲に値のみ貼付
 (3)デスクトップに【新規ブック】を名前をつけて保存
 (4)【新規ブック】を閉じる

といった作業を「マクロの記録」やネット検索で命令を調べつつ、整理すればとりあえずの完成はするとおもいます。
そして、もうちょっと慣れてくると(2)の作業は、↓みたいにもできるな〜って思うようになるとおもいます。

 .Worksheets(1).UsedRange.Value = .Worksheets(1).UsedRange.Value

おまけで研究用に以下のコードを提供しますので、ご自身で整理したものと見比べてみてください。
大体おなじになるとおもいます。

    Sub さんぷる()
        Stop

        'シートのコピー
        Worksheets("Sheet1").Copy

        With ActiveWorkbook            

            '数式を含め全体を値に変換
            .Worksheets(1).UsedRange.Value = .Worksheets(1).UsedRange.Value

            'ブックの保存
            .SaveAs _
                Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & _
                          "さんぷる" & Format(Now(), "YYYYMMDD_hhmm_ss")

            'ブックをとじる
            .Close
        End With
    End Sub

(もこな2) 2019/06/26(水) 12:37


コメント返信:

[ 一覧(最新更新順) ]


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