セル入力された日付データから年月のみを取り出してファイル名につけたい、のですが・・・
下記のようなイメージです。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 3個のfileのセルデータを1個のfileのセルに貼り付けるVBAコードですが。 1 2023/02/20 09:21
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
日付を入力したセルをファイル名にして保存するには
Excel(エクセル)
-
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
-
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
-
4
エクセル マクロ 名前を付けて保存 PDF保存先指定 ファイル名任意+日付
Excel(エクセル)
-
5
エクセルVBAでFINDで年月のみを取得したいのですが。
Excel(エクセル)
-
6
ファイル名を今日の日付、時刻で保存する
Visual Basic(VBA)
-
7
EXCEL 年月表示をするVBAを教えてください。
Excel(エクセル)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
エクセル関数>参照ファイル名をセルから呼び出す
Excel(エクセル)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
12
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
13
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
14
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。
その他(プログラミング・Web制作)
-
17
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
18
セルの値を使ってファイルを保存
Excel(エクセル)
-
19
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
20
Excel2003 マクロ 1ページのみ印刷する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAで今開いているユーザ...
-
【Excel VBA】ブックを複数開い...
-
フォルダ内の全ブックのシート...
-
エクセルVBA Workbook変数に変...
-
excelマクロ、任意セルの値で名...
-
EXCELマクロでxlsとxlsxを開く方法
-
VBA、Excelのworkbook.open に...
-
Excel マクロでファイル名を変...
-
personal.xlsの削除方法
-
エクセル2010で2003形式でマク...
-
[Excel VBA] フォルダ内の複数...
-
すでに開いているブックのマク...
-
エクセル終了時の保存確認メッ...
-
コピーしたファイルのマクロを...
-
複数のデータ系列の線の太さを...
-
エクセルマクロにてパワーポイ...
-
エクセルの単票を一覧表に
-
別のパソコンでエクセルのマク...
-
cellsで特定の離れた範囲を選択...
-
excelファイルに使われているVB...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
エクセルVBA Workbook変数に変...
-
ExcelVBAで今開いているユーザ...
-
VBA、Excelのworkbook.open に...
-
【ExcelVBA】指定の書式で、マ...
-
【Excel VBA】ブックを複数開い...
-
VB2010でExcelの行をコピーして...
-
すでに開いているブックのマク...
-
フォルダ内の全てのBookに同じ...
-
VBA セル入力された日付データ...
-
フォルダ内の全ブックのシート...
-
personal.xlsの削除方法
-
EXCELマクロでxlsとxlsxを開く方法
-
EXCELマクロで上書きメッ...
-
[Excel VBA] フォルダ内の複数...
-
EXCEL VBA起動時の処理
-
コマンドボタンでマクロを起動...
-
excelマクロ、任意セルの値で名...
-
【VBA】他のExcelを起動し、呼...
-
他のBookのユーザー定義関数を使う
おすすめ情報