• 締切済み

エクセルVBAのファイル保存(日付のスラッシュ)

ユーザーフォームのコンボボックス(年月を選択)の値をセルC2に入力し、 そのC2セルの入力内容を元にファイル名を付けて特定の場所に保存するマクロを考えています。 ※↓コンボボックスの値を元にC2セルに年月を入力する。 With Worksheets("sample_list") .Cells(2, 3).Value = UserForm1.ComboBox1.Text & "年" & UserForm1.ComboBox2.Text & "月" .Cells(2, 3).Font.Size = 16 .Cells(2, 3).Font.Bold = True 上記マクロにより C2セルには2021年11月 と表示されます。 実際の値は2021/11/1になっているようです。 ※↓ファイルの保存 その後 ネットワーク上のNASの共有フォルダに、 SavePath = "\\192.168.11.252\Share\マクロ生成データフォルダ" Nengetsu = Range("C2").Value Application.DisplayAlerts = False ActiveWorkbook.SaveAs _ Filename:=SavePath & "\データ_" & Nengetsu, _ FileFormat:=xlOpenXMLWorkbook Application.DisplayAlerts = True ActiveWorkbook.Close として保存しようとすると、 C2の値に 「2021/11/1」 の 「/」が入ってしまうために うまく保存することができませんでした。 そこで 文字列として入力したいので、 下記の様に変更してみましたがダメでした。 .Cells(2, 3).Text = UserForm1.ComboBox1.Text & "年" & UserForm1.ComboBox2.Text & "月" 2021年11月とセルに入力すると、日付として取り扱われるため うまくいかないと推測しましたが、 どのようにすれば、 日付として扱われないで、 保存することができますか? よろしくお願いします。

みんなの回答

回答No.4

Nengetsu = Range("C2").Value を Nengetsu = Format(Range("C2").Value, "yyyy年mm月") に変更して下さい。 >どのようにすれば、 >日付として扱われないで、 上記修正では「日付を、文字列ではなく日付データとして保存」した上で「Format関数を用いて、日付データから文字列に変換して、目的の文字列を得る」という事をしています。 これで「セルに、文字列として保存する」という、面倒な事を回避しています。

  • dell_OK
  • ベストアンサー率13% (766/5721)
回答No.3

もうひとつ。 「-」はファイル名に使えるので、 「/」を「-」に置換する方法のはどうでしょうか。 C2セルは「/」編集に戻していただいて、 Nengetsu = Replace(Cells(2, 3).Value, "/", "-")

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

.Cells(2, 3).NumberFormatLocal = "@" .Cells(2, 3).Value = UserForm1.ComboBox1.Text & "年" & UserForm1.ComboBox2.Text & "月" としてセルの書式を文字列にしてから代入してください。

  • dell_OK
  • ベストアンサー率13% (766/5721)
回答No.1

Nengetsu = Range("C2").Value ここを、 Nengetsu = UserForm1.ComboBox1.Text & "年" & UserForm1.ComboBox2.Text & "月" こうしてみたらどうでしょうか。

関連するQ&A