[[20130629111050]] 『VBA 保存時に同じ名前があった場合に、連番にすax(ぼん) ページの最後に飛ぶ

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

 

『VBA 保存時に同じ名前があった場合に、連番にする』(ぼん)
EXCEL2010

Sub 見積書()

Dim Wb As Workbook
'Sheets("Sheet4").Select
Sheets("Sheet4").Copy

Set Wb = ActiveWorkbook
Wb.SaveAs ThisWorkbook.Path & "\" & "見積書" & _
Format(Date, "Long Date")

Wb.Close False

End Sub

一日 一件の場合は、上記でなんとか
なるのですが…
5,6件になると手間がかかりまして、さらに 連番を付けて保存できないものかと
WEBで探して試したりしましたが…
エラー エラーの嵐
本見て探したけど 
どうしても ダイアログ(同じ名前があります。上書きしますか?)出て デバックです。

見積書6月23日と名前出ますが、さらに その後ろに連番をつけたいのです。
できれば 2ケタ表示で 00、01、02、03とのようにしたいのです。

どうぞ よろしくお願いいたします。


 こんな感じで...

 Sub 見積書()
    Dim Wb As Workbook, fn As String, i As Long, temp
    temp = ThisWorkbook.Path & "\見積書" & Format(Date, "Long Date")
    fn = Dir(temp & ".xlsx")
    If fn = "" Then
        fn = temp & ".xlsx"
    Else
        Do While fn <> ""
            i = i + 1
            fn = Dir(temp & "_" & Format(i, "00") & ".xlsx")
        Loop
        fn = temp & "_" & Format(i, "00") & ".xlsx"
    End If
    Sheets("Sheet4").Copy
    Set Wb = ActiveWorkbook
    Wb.SaveAs fn
    Wb.Close False
End Sub
(seiya)

 衝突

 たとえば 以下のGetNameといったプロシジャを用意しておき、それを使う。
 なお、ファイル拡張子は省略せず、明記すべき。(以下のコードは省略形では使えない)

 Sub 見積書()
    Dim Wb As Workbook
    Sheets("Sheet4").Copy

    Set Wb = ActiveWorkbook
    Wb.SaveAs GetName(ThisWorkbook.path & "\" & "見積書" & _
                                        Format(Date, "Long Date") & ".xlsx")
    Wb.Close False

 End Sub

 Function GetName(fpath As String) As String
    Dim num As Long
    Dim w As Variant
    Dim ckname As String
    Dim path As String
    Dim fname As String
    Dim bName As String
    Dim ext As String

    w = Split(fpath, "\")
    fname = w(UBound(w))
    ReDim Preserve w(LBound(w) To UBound(w) - 1)
    path = Join(w, "\") & "\"
    w = Split(fname, ".")
    bName = w(0)
    ext = w(1)

    Do
        ckname = bName & Format(num, "00") & "." & ext
        If Len(Dir(path & ckname)) = 0 Then Exit Do
        num = num + 1
    Loop

    GetName = path & ckname

 End Function

 (ぶらっと)

ありがとうございます。

できました。

最初にファイルのチェックして、終わり
それから コピー保存

私は、まるっきり 逆でやってました。
いえ、逆というより 
コピーして 保存するときに ファイルをチェックして
あったら 数字入れてというように
丸ごとで考えてました。
いろいろな 連番見て試してたけど、
こんなに 簡潔で 綺麗なのに感動してます。(seiya)
プロシジャを用意 聞いたことありますが、実際 どういう時使うのだろうぐらいでした。後でそれが あれば 使い回しできますね。拡張子明記するとですね…保存時に「見積書6月23日.xlsx.xlsx」という…困ったことに!!!拡張子が2個並んでしまうので消しちゃいましたのです。なんででしょう?というか 不思議な現象で…なぜなんでしょう?(ぶらっと)
ありがとう ございました。
ノートに書き写して 勉強します。(ぼん)


 >拡張子が2個並んでしまうので消しちゃいましたのです。なんででしょう?
 >というか 不思議な現象で…なぜなんでしょう?

 ん??そんなことはないでしょ?
 アップしたコードには、すでに拡張子を(コードとして)明記 してあるんだけど、さらに、それに xlsx をプラスしてない?

 (ぶらっと)

再度 記入なおして、保存してやってみたら きちんとできました。

何回も何回も試したり 消したりしていたため
重なっていたのか?エラーなのか?
わかりませんが、ほんと 拡張子二つになったのです。

現在 何回やっても 拡張子は、2つにならない…なんだったのでしょうか

拡張子は、記入するというアドバイスありがとうございます。

また よろしく お願いいたします。
(ぼん) 


コメント返信:

[ 一覧(最新更新順) ]


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