[[20180510164454]] 『AX2のセル上にある文字を保存するときの名前にしax(ああ) ページの最後に飛ぶ

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

 

『AX2のセル上にある文字を保存するときの名前にしたい』(ああ)

現在下のマクロを使いAX3からAY1000の範囲をxlsファイルで出力するということをしています。ここにAX2のセル上にある文字を保存するときの名前にするというマクロを追加したいときこのマクロをどう変えればいいか教えてください。

Sub xlsdasu1()
Dim myRng As Range, myFileName As String

 Set myRng = Range("AX3:AY1000")
 myFileName = Application.GetSaveAsFilename(FileFilter:="XLSファイル (*.xls,*.xls")
 If myFileName = "False" Then Exit Sub
 Application.ScreenUpdating = False
 With Worksheets.Add
 myRng.Copy .Cells(1, 1)
 .Move
 End With
 With ActiveWorkbook
 .SaveAs Filename:=myFileName, FileFormat:=xlExcel8
 .Close False
 End With
 Application.ScreenUpdating = True
 Set myRng = Nothing
 End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


こんばんは ^^

 myFileName = Application.GetSaveAsFilename(FileFilter:="XLSファイル (*.xls,*.xls")

 myFileName = Application.GetSaveAsFilename(InitialFileName:=Range("AX2"), FileFilter:="XLSファイル (*.xls,*.xls")

 という事でしょうか。
若しくは上記は取り止め
myFileName = ThisWorkbook.Path & "\" & Range("AX2") & ".xls"
とするとか、ではどうでしょうか
外してましたらご容赦を。
(隠居じーさん) 2018/05/10(木) 17:35

質問に対する回答は隠居じーさんさんが答えていらっしゃるので割愛しますが、それ以外で気になるところがあったので、投稿します。
(要らぬお節介であれば無視してください)

(1)
インデントない方が読みやすいという方もいらっしゃるようなので無理強いはしませんが、ご自身で見てみづらいなと思うようであれば、適宜インデントを入れるようにするとコードの可読性があがり、メンテナンス等がしやすくなると思います。

(2)
好みの問題ですが「myRng」について、実質的に1回しか出てこないので、私ならわざわざ変数に格納しないです。

(3)
「Application.ScreenUpdating = False」これの意味をわかって入れてるのであればいいんですが、テスト時に想定外の動きをしているのを見落とすことになりかねないので、私なら完成するまで(安定動作が確認されるまで)入れません。

(4)
賛否両論あるとおもいますけど、「ActiveWorkbook」ってなっている部分について、私ならActive〇〇に対する操作という記述を避けたいので、新規シートを追加してそのシートを「Move」したときに作成されたブックじゃなくて、新規ブックの1番目のシートって書きます。

ということを踏まえ、私ならこんな感じで書きます。
(新規ブック作成時のシート数を一時的に1にしてるせいで、ごちゃごちゃしてしまうので、コピー先ブックのシート数にこだわりがないならその部分を削った方がいいとは思いますが・・・)

    Sub Sample1()
        Dim myFileName As String
        Dim i As Long

        myFileName = Application.GetSaveAsFilename(FileFilter:="XLSファイル (*.xls,*.xls")
        If myFileName = "False" Then Exit Sub

        i = Application.SheetsInNewWorkbook
        Application.SheetsInNewWorkbook = 1

        With Workbooks.Add
            Application.SheetsInNewWorkbook = i

            ThisWorkbook.Worksheets(1).Range("AX3:AY1000").Copy .Worksheets(1).Cells(1, 1)

            .SaveAs Filename:=myFileName, FileFormat:=xlExcel8
            .Close
        End With
    End Sub

(もこな2) 2018/05/11(金) 11:26


コメント返信:

[ 一覧(最新更新順) ]


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