Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8238 / 13644 ツリー ←次へ | 前へ→

【34466】もし同じ名前でセーブされていたら別名で保存するには ヤマ 06/2/3(金) 10:44 質問[未読]
【34468】Re:もし同じ名前でセーブされていたら別名... G-Luck 06/2/3(金) 11:48 回答[未読]
【34473】Re:もし同じ名前でセーブされていたら別名... ヤマ 06/2/3(金) 13:00 お礼[未読]

【34466】もし同じ名前でセーブされていたら別名で...
質問  ヤマ E-MAIL  - 06/2/3(金) 10:44 -

引用なし
パスワード
   If ActiveWorkbook.ActiveSheet.Range("B1") = "New" Then
ActiveWorkbook.SaveAs "S:\GFM\Equity_Finance\Blotter\" & Format(MYDAY, "MMMYY") & "\TRADE_BLOTTER" & Format(MYDAY, "DD_MM") & " " & ActiveWorkbook.ActiveSheet.Range("C5") & "_NEW.XLS"
ElseIf ActiveWorkbook.ActiveSheet.Range("B10") = "Substituition" Then
ActiveWorkbook.SaveAs "S:\GFM\Equity_Finance\Blotter\" & Format(MYDAY, "MMMYY") & "\TRADE_BLOTTER" & Format(MYDAY, "DD_MM") & " " & ActiveWorkbook.ActiveSheet.Range("C13") & "_SUB.XLS"
End If
という風にしていますが、もしS:\GFM\Equity_Finance\Blotter\" & Format(MYDAY, "MMMYY") & "\TRADE_BLOTTER" & Format(MYDAY, "DD_MM") & " " & ActiveWorkbook.ActiveSheet.Range("C5") & "_NEW(SUB).XLSという名前で指定したパスにブックが保存されている場合にはお尻に1とか2とかつけて保存するというようにしたいのですが、どのように書いたらよろしいでしょうか?

【34468】Re:もし同じ名前でセーブされていたら別...
回答  G-Luck  - 06/2/3(金) 11:48 -

引用なし
パスワード
   ▼ヤマ さん: こんにちわ

こんなんでどうでしょう?

MYDAYには適切な値を入力してください。
ファイルの末尾の番号は、無限ループが怖いので3000に制限しています。

Private Sub test()
  Dim DirName As String
  Dim FileName As String
  Dim SaveName As String
  Dim i As Integer
  Dim MYDAY As Date
  
  MYDAY = 1 '適切な値を入力してください。
  
  DirName = "S:\GFM\Equity_Finance\Blotter\" & _
    Format(MYDAY, "MMMYY") & "\"

  With ActiveWorkbook.ActiveSheet
    If .Range("B1") = "New" Then
      FileName = DirName & "TRADE_BLOTTER" & _
       Format(MYDAY, "DD_MM") & " " & .Range("C5") & "_NEW.XLS"
    ElseIf .Range("B10") = "Substituition" Then
      FileName = DirName & "TRADE_BLOTTER" & _
       Format(MYDAY, "DD_MM") & " " & .Range("C13") & "_SUB.XLS"
    End If
  End With
  
  SaveName = FileName
  
  For i = 1 To 3000
    If Dir(SaveName) = "" Then Exit For
    SaveName = Mid(FileName, 1, InStrRev(FileName, ".XLS") - 1) & _
          i & ".XLS"
  Next i
  
  ActiveWorkbook.SaveAs SaveName

End Sub

【34473】Re:もし同じ名前でセーブされていたら別...
お礼  ヤマ E-MAIL  - 06/2/3(金) 13:00 -

引用なし
パスワード
   G-Luckさん、
動きました!どうもありがとうございます!

▼G-Luck さん:
>▼ヤマ さん: こんにちわ
>
>こんなんでどうでしょう?
>
>MYDAYには適切な値を入力してください。
>ファイルの末尾の番号は、無限ループが怖いので3000に制限しています。
>
>Private Sub test()
>  Dim DirName As String
>  Dim FileName As String
>  Dim SaveName As String
>  Dim i As Integer
>  Dim MYDAY As Date
>  
>  MYDAY = 1 '適切な値を入力してください。
>  
>  DirName = "S:\GFM\Equity_Finance\Blotter\" & _
>    Format(MYDAY, "MMMYY") & "\"
>
>  With ActiveWorkbook.ActiveSheet
>    If .Range("B1") = "New" Then
>      FileName = DirName & "TRADE_BLOTTER" & _
>       Format(MYDAY, "DD_MM") & " " & .Range("C5") & "_NEW.XLS"
>    ElseIf .Range("B10") = "Substituition" Then
>      FileName = DirName & "TRADE_BLOTTER" & _
>       Format(MYDAY, "DD_MM") & " " & .Range("C13") & "_SUB.XLS"
>    End If
>  End With
>  
>  SaveName = FileName
>  
>  For i = 1 To 3000
>    If Dir(SaveName) = "" Then Exit For
>    SaveName = Mid(FileName, 1, InStrRev(FileName, ".XLS") - 1) & _
>          i & ".XLS"
>  Next i
>  
>  ActiveWorkbook.SaveAs SaveName
>
>End Sub

8238 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free