大人になっても苦手な食べ物、ありますか?

セル入力された日付データから年月のみを取り出してファイル名につけたい、のですが・・・

下記のようなイメージです。
 A列    B列
1 日付   商品名  
2 2009/9/1 みかん   
3 2009/9/2 とまと   
4 2009/9/15 きゅうり

という明細データがある場合、
このファイルのファイル名を明細行の1番上(A2セル)に日付の年月だけにして保存したいのですが、可能でしょうか。
(上の例だと200909.xlsになるようしたいのですが)
ちなみに今は↓こんなコードでコピーしたファイルに名前をつけようとしていますが、エラーになってしまいます・・・
Sheets(1).Copy
ファイル名 = "\" & Sheets(1).Range("B13").Value & ".xls"
ActiveWorkbook.Close SaveChanges:=True, _
Filename:=ThisWorkbook.Path & ファイル名

宜しくお願い致します!

A 回答 (4件)

こんにちは



それぞれのデータは、面倒かもしれませんが、メソッドに直接入れないで、一旦、変数などに取ったほうがよいです。

'-------------------------------------------

Sub MacroTest1()
  Dim fName As String
  Dim fPath As String
  '日付データを取る
  fName = Worksheets("Sheet1").Range("A2").Value
 
  If IsDate(fName) Then
    fName = Format$(fName, "yyyyMM")
    fPath = ThisWorkbook.Path & "\"
    'すでに保存している場合は、保存できません。
    If Dir(fPath & fName & ".xls") = "" Then
      Worksheets("Sheet1").Copy
      ActiveWorkbook.SaveAs fPath & fName & ".xls"
      ActiveWorkbook.Close False
    Else
      MsgBox fName & ": 同名ファイルがすでにあります。", vbInformation
    End If
  Else
    MsgBox "日付データがありません。", vbCritical
  End If
End Sub
    • good
    • 0

#2です


失礼、#2は間違いです
寝ぼけてました、すいません
ThisWorkbookは実行したマクロのあるBookなので
空白にはなりません(新規Bookにマクロを設定し、保存せずに実行した場合は別ですが)
お詫びに
エラーの原因ですがファイル名に"/"が含まれているためです
詳しい説明は割愛しますが"/"は"\"と同じ意味を持つためです
例として
Cドライブのtestフォルダに2009/10/10.xlsを保存しようとすると
c:\test\2009/10/10.xls
とはなりません
c:\test\2009\10\10.xls
と変換されるためフォルダが無いとエラーが出ます

お騒がせしました
    • good
    • 0

こんな感じ?



Sub test()
Dim ファイル名 As String
ファイル名 = ThisWorkbook.Path & "\" & Format(Sheets(1).Range("A2").Value, "yyyymm") & ".xls"
Sheets(1).Copy
ActiveWorkbook.Close SaveChanges:=True, _
Filename:=ファイル名
End Sub

Sheetコピーすると新規Bookになる
新規Bookは一度保存しないとPathは空白になっている
そのため
>ActiveWorkbook.Close SaveChanges:=True, _
>Filename:=ThisWorkbook.Path & ファイル名
ThisWorkbook.Path の部分が空白になりエラーとなる
これを避けるため、Sheetコピーする前にPathを取得する必要がある

日付をyyyymmの形式にするには
Format(日付,"yyyymm")
を使用します

以上、参考まで
    • good
    • 0

ファイル名 = "\" & Format(Sheets(1).Range("B13").Value , "yyyymm") & ".xls"


で出来ませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報