[[20180921105124]] 『自動的に名前をつける方法を教えてください』(しゅう) ページの最後に飛ぶ

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

 

『自動的に名前をつける方法を教えてください』(しゅう)

ボタンを押下すると自動的にファイル名がつけられてデスクトップに保存するようにしたいです。

どのようなコードになるか教えていただけるでしょうか。

エクセル2010です

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


 ファイル名は何から求めるのだろうか?
(ねむねむ) 2018/09/21(金) 10:55

どんなファイル名なのでしょう? また、マクロを利用するのだし、保存するファイルは .xlsm 形式で良いでしょうか?
とりあえず、年月日時分秒をファイル名として保存する例なぞ。 シートにActiveXのボタンを貼り、以下を実行してみてください。
 Private Sub CommandButton1_Click()
    Dim cPath As String
    Dim cFile As String

    cPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    cFile = Format(Now(), "YYYYMMDDHHNNSS") & ".xlsm"
    SaveAs cPath & "\" & cFile, FileFormat:=xlOpenXMLWorkbookMacroEnabled
 End Sub
(???) 2018/09/21(金) 11:04

かぶったけどそのまま

なげやりな回答になるけど、特にこだわりがないなら
Format(Now, "yyyymmdd_HHMMSS") っていうファイル名にして保存したらいいんじゃないですか?
ミリ秒単位まで必要ですかね?

(もこな2) 2018/09/21(金) 11:06


皆さまありがとうございます。
誤解答無視するわけじゃないのですが、理解できる範囲で理解したいので下記に改めます。

それぞれのセル入力を抜き出して名前にしたいです。
下記ではダメでした。
ご教示よろしくお願い致します。

FName = ActiveWorkbook.FullName

 A = Range("N3").Value
 B = Range("A3").Value
 C = Range("E4").Value
 D = Range("G4").Value
 E = Range("I4").Value
 ActiveWorkbook.SaveAs Filename:=【" & A & "】" & B & "日記 " & C & " 年 " & D & " 月 " & E & " 日 " & ".xlsm"

(しゅう) 2018/09/21(金) 14:23


 頭の"がないが?
 ActiveWorkbook.SaveAs Filename:="【" & A & "】" & B & "日記 " & C & " 年 " & D & " 月 " & E & " 日 .xlsm" 
(ねむねむ) 2018/09/21(金) 14:29

 あと拡張子をxlsmで保存するのであれば???さんの回答にあるようにFileFormatの指定が必要。
(ねむねむ) 2018/09/21(金) 14:35

早速ありがとうございます。
下記でデバックとなってしまいました。
???さんの指定がないからでしょうか?

Sub ネーム()

FName = ActiveWorkbook.FullName

 A = Range("B7").Value
 B = Range("C18").Value

ActiveWorkbook.SaveAs Filename:="【" & A & "】" & B & " .xlsm"

End Sub

(しゅう) 2018/09/21(金) 16:47


" .xlsm" だと、拡張子の前に余分なスペース文字が入ってますよ? まぁ、それでも動作しそうですが、デスクトップの指定は要らないのですか? 私のコードで cPath という変数に入れていたものです。
(???) 2018/09/21(金) 17:05

はい。
遅くなりすみません。
下記の通りしてみましたがディバックとなってしまいました。

Sub ネーム()

FName = ActiveWorkbook.FullName

 A = Range("B7").Value
 B = Range("C18").Value
ActiveWorkbook.SaveAs Filename:="【" & A & "】" & B & ".xlsm"

cPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")

End Sub

(しゅう) 2018/09/22(土) 20:56


 >あと拡張子をxlsmで保存するのであれば???さんの回答にあるようにFileFormatの指定が必要。
 >(ねむねむ) 2018/09/21(金) 14:35

 ちゃんと読んでる????
 それと、コード意味考えないで、単にあちこち移動させているだけじゃない?

(BJ) 2018/09/23(日) 03:01


とりあえず、ただの書き間違いだとおもいますが
 >下記でデバックとなってしまいました。
 >下記の通りしてみましたがディバックとなってしまいました。 

     ↓

 実行時エラーが発生してデバックするか確認のメッセージがでてきました。

ですよね。
また、

    Sub ネーム()
        Dim fname, A, B

        fname = ActiveWorkbook.FullName
        A = Range("B7").Value
        B = Range("C18").Value
        ActiveWorkbook.SaveAs Filename:="【" & A & "】" & B & ".xlsm"
    End Sub

みたいに、 Filenameにフルパスでなく、ファイル名だけ渡すのなら"カレントフォルダ"に保存するように動くと思うので実行時エラーにはならないように思います。

となると、B7やC18にファイル名として使用できない文字("/"など)が入力されているのでは?
(入力が"2018年9月23日"でも、Valueプロパティを参照した取得した場合、"2018/9/23"となることもあるから、それが原因なんじゃないのかなぁ・・・

↓を実行したらイミディエイトにどのように出力されますか?

    Sub テスト()
        Dim A, B

        A = Range("B7").Value
        B = Range("C18").Value
        Debug.Print "【" & A & "】" & B & ".xlsm"
    End Sub

このほか、提示のコードだと

 fname = ActiveWorkbook.FullName

ここの意味がありませんが、何をしたいのでしょうか?
(たぶん、Filename:=fname & "【" & A & "】" & B & ".xlsm" としたかったのだと思いますが・・)

(もこな2) 2018/09/23(日) 14:22


もなこ2さん 遅くなりスミマセン。

Sub テスト()

        Dim A, B

        A = Range("B7").Value
        B = Range("C18").Value
        Debug.Print "【" & A & "】" & B & ".xlsm"
    End Sub

  ↑実行してもなにも起こりませんでした。

(しゅう) 2018/09/25(火) 22:27


>↑実行してもなにも起こりませんでした。
本当に何も起こらなかったんでしょうか?
単純に、「イミディエイト」を表示させてなくて気づかなかっただけでは?
https://www.239-programing.com/excel-vba/basic/basic024.html
https://tonari-it.com/excel-vba-debug-print/
https://uxmilk.jp/49385

(もこな2) 2018/09/26(水) 04:14


皆さま回答ありがとうございます。
もなこ2様 イミディイトの意味が理解出来ずませんでした。

下記のように改めて組みました。
しかし、「Sub ネーム()」の部分が黄色くなり、
「ActiveWorkbook.SaveAs Filename:="C保存\S保存\報告書\"【" & A & "】" & ".xls"」部分が赤字になり、
起動しません。再びご教示よろしくお願い致します。

Sub ネーム()

FName = ActiveWorkbook.FullName

A = Range("B7").Value

ActiveWorkbook.SaveAs Filename:="C保存\S保存\報告書\"【" & A & "】" & ".xls"

End Sub

(しゅう) 2018/10/03(水) 10:36


ダブルクォーテーションで括られた間が、文字列として認識されます。 この原則をしゅうさんの書いたファイル名に当てはめてみると、以下のようになります。

	"C保存\S保存\報告書\"	という文字列
	【			というVBAの命令(そんなものは無い!)
	" & A & "		という文字列(あれ、Aって変数のはずでは?)
	】			というVBAの命令(そんなものは無い!)
	" & "			という文字列(& は、文字列連結の命令でしょう?)
	.xls			という命令(文字列にしたいんですよね?)
	"			(対になるダブルクォーテーションが無い!)

以下のようにしたかったのでは?
"C保存\S保存\報告書\【" & A & "】.xls"

これでもドライブ指定が無かったり、デスクトップと関係なくなっていたり、相変わらず拡張子と保存形式が意味不明だったりしますが、文字列の連結ミスくらいは、ご自分でデバッグしましょうね。(知識なんて不要な、単なる間違い探しです)

(???) 2018/10/03(水) 13:12


fname という変数に代入しているのに、使っていませんね?
ということは、以下のようにしたかったのでしょうか?
ActiveWorkbook.SaveAs Filename:=fname & "\【" & A & "】.xls"

これなら動くでしょうけど、xlsなのに中身はマクロの付いていないxlsxだったりするので、正常に開けないブックになってしまうかと思いますよ。
(???) 2018/10/03(水) 13:18


>もなこ2様 イミディイトの意味が理解出来ずませんでした。
たぶん私へのレスだとおもうので、コメントすると、
”今も”イミディエイトの意味はわかりませんか?
(紹介したリンク先を読んでも理解できませんでしたか?)

もし解らないのであれば、イミディエイトはすっぱり忘れて、以下を試して
なんと表示されるのか正確に教えてください。

    Sub 実験()
        MsgBox "B7 セルは「" & Range("B7").Value & "」" & vbCrLf & _
               "C18セルは「" & Range("C18").Value & "」"
    End Sub

>〜部分が赤字になり、起動しません。
起動云々というより、記述自体が間違っている(構文エラー)とExcel君に怒られてますね。
(どのように間違っているかは、???さんが説明済み)

fname という変数については、私も指摘をしたかとおもいますが無反応なので
解っているのか(指摘が理解できているのか)よく解りません。
理解できていないのであれば、そう言ってもらわないと答えようがないです。

ちなみに、???さんが心配されている拡張子のところについて、正攻法かどうか解りませんが、
私なら拡張子は付けずにExcel君にお任せします。

(もこな2) 2018/10/03(水) 23:28


書き忘れ。

やり取りを拝見していると、"自動的に名前をつける"という部分も然ることながら、マクロでブックに名前をつけて保存する方法の咀嚼が出来ないのでは?とおもいます。

なので、マクロの記録を使って、"名前をつけて保存"するには、どのような命令をどのように記述すればよいのか調べてみてはどうでしょうか?

(もこな2) 2018/10/04(木) 08:48


皆さまありがとうございます。
下記で解決しました。

Sub ネーム()

FName = ActiveWorkbook.FullName

A = Range("B7").Value

ActiveWorkbook.SaveAs Filename:="S\C\保存\K\報告書\【" & A & "】" & ".xls"

End Sub

毎度、大変お騒がせして申し訳ありません。

(しゅう) 2018/10/09(火) 12:10


コメント返信:

[ 一覧(最新更新順) ]


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