
セル入力された日付データから年月のみを取り出してファイル名につけたい、のですが・・・
下記のようなイメージです。
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 & ファイル名
宜しくお願い致します!
No.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
No.3
- 回答日時:
#2です
失礼、#2は間違いです
寝ぼけてました、すいません
ThisWorkbookは実行したマクロのあるBookなので
空白にはなりません(新規Bookにマクロを設定し、保存せずに実行した場合は別ですが)
お詫びに
エラーの原因ですがファイル名に"/"が含まれているためです
詳しい説明は割愛しますが"/"は"\"と同じ意味を持つためです
例として
Cドライブのtestフォルダに2009/10/10.xlsを保存しようとすると
c:\test\2009/10/10.xls
とはなりません
c:\test\2009\10\10.xls
と変換されるためフォルダが無いとエラーが出ます
お騒がせしました
No.2
- 回答日時:
こんな感じ?
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")
を使用します
以上、参考まで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
日付を入力したセルをファイル名にして保存するには
Excel(エクセル)
-
マクロボタンを押すと、ファイル名を“日付(年月日)_文字.xlsx”にして指定ファイルに保存したいの
Excel(エクセル)
-
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
-
-
4
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
5
EXCEL 年月表示をするVBAを教えてください。
Excel(エクセル)
-
6
VBAで先月、先々月を求める方法
Visual Basic(VBA)
-
7
フォームテキストボックスの表示設定
Excel(エクセル)
-
8
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
9
VBAでのフィルタについて(空白行の削除)
Excel(エクセル)
-
10
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
11
エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA Workbook変数に変...
-
ExcelVBAで今開いているユーザ...
-
フォルダ内の全ブックのシート...
-
VB2010でExcelの行をコピーして...
-
【Excel VBA】ブックを複数開い...
-
フォルダ内の全ブックのシート...
-
【ExcelVBA】指定の書式で、マ...
-
VBA セル入力された日付データ...
-
VBAでEXCELのワークシートを削...
-
[Excel VBA] フォルダ内の複数...
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
VBAを一度起動するとずっと出て...
-
どのドキュメントは暗号化され...
-
Excelが勝手にシート移動してし...
-
複数のCSVファイルを横に並べて...
-
VBA マクロ実行時エラー’1004Ra...
-
別のパソコンでエクセルのマク...
-
Excelマクロ ファイル名が変わ...
-
excelファイルに使われているVB...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAで今開いているユーザ...
-
フォルダ内の全ブックのシート...
-
エクセルVBA Workbook変数に変...
-
VB2010でExcelの行をコピーして...
-
【ExcelVBA】指定の書式で、マ...
-
【Excel VBA】ブックを複数開い...
-
フォルダ内の全ブックのシート...
-
VBAでEXCELのワークシートを削...
-
EXCELマクロでxlsとxlsxを開く方法
-
すでに開いているブックのマク...
-
フォルダ内の全てのBookに同じ...
-
他のBookのユーザー定義関数を使う
-
EXCEL VBA起動時の処理
-
excelマクロ、任意セルの値で名...
-
excelでハイパーリンク 別ブッ...
-
エクセルのブックを保存すると...
-
エクセルマクロで、他ブックの...
-
同じ名前で拡張子が違うファイル
-
エクセルのマクロでこんな風に...
-
エクセル マクロ WEBエクセル...
おすすめ情報