2016-07-10 12 views
0

私は、Excelワークブックで行った注文書の保存手順の自動化に取り組んでいます。ユーザーが正しいディレクトリにテンプレートをコピーし、日付とともにシーケンスの次の正しい注文番号で名前を変更する必要はありません(たとえば、前の注文は2016年7月7日にファイル名を付けて注文番号SJ-K1880でしたKO_SJ-K1880_070716、次の注文番号はKO_SJ-K1881_110716というファイル名で2016年7月11日にSJ-K1881になります)、ユーザーは[保存]ボタンをクリックするだけで、右側の正しいディレクトリにブックが保存されますファイル名はシーケンスに自動的に従います。ディレクトリ内の最後のフォルダのフォルダ名を取得する

C:\Users\User\Desktop\Kyocera Order Doc\ 
Kyocera Orders\Orders 2016\07 July 2016\ 
KO SJ-K1880 070716\KO_SJ-K1880_070716.xlsm 

それが存在しない場合は、それを07 July 2016まで、ディレクトリの存在を確認し、作成するために、私が管理している現在の日付を使用する:ここではそのようなファイルの完全なディレクトリの例です。私の問題は、そのディレクトリ(この例ではKO SJ-K1880 070716)から最後のフォルダを見つけ出し、それを使って次の注文番号を決定します。

答えて

1

これはあなたの望むものを与えると思われますが、昇順のフォルダ名に依存しています。

Option Explicit 

Sub main() 
    Dim fldr As String 

    fldr = Environ("USERPROFILE") & _ 
     "\Desktop\Kyocera Order Doc\Kyocera Orders\Orders 2016\07 July 2016" 

    Debug.Print mostRecentFolderNdx(fldr) 
End Sub 

Function mostRecentFolderNdx(base As String) 
    Dim f As String, lstndx As String 

    f = Dir(base & "\*", vbDirectory) 
    Do While CBool(Len(f)) 
     If Not CBool(InStr(1, f, Chr(46))) Then 
      lstndx = Split(f, Chr(32))(UBound(Split(f, Chr(32)))) 
     End If 
     f = Dir 
    Loop 

    mostRecentFolderNdx = lstndx 
End Function 

あなたは昇順ソート順に依存しようとしている場合、あなたのフォルダが\20160707\いうより\07 July 2016\のような命名規則を使用していた方が良いです。

+0

私はおそらく、07年の07年7月7日はそのディレクトリ内のフォルダが月に従ってソートできるように、月の番号を参照していると述べています。私。そのディレクトリ内の他のフォルダは「2016年1月1日」、2016年2月2日」などです。 ... "2016年7月7日"これは何か変わるでしょうか? –

+0

はい、信頼できる昇順の名前のソート順を維持するのに十分なはずです。 – Jeeped

+0

ありがとうございました。多分あなたのコードを説明するコメントを追加してもよろしいですか? –

関連する問題