前提・実現したいこと
VBAで転換マクロツールを創っています。
いま、抽出元のシートから数値を抽出して、
1,2,3,・・・31(日)と"日にち"が抽出先のシートにyyyymmdd表記でCSVで出力されるようになってます。
このCSVを別のソフトウェアに読み込ませる為に"20200301","20200302"といった風に"8桁のyyyymmddの年月日表記"まで変換したくおもっております。
この"8桁のyyyymmddの年月日表記"をする為に、別のシート(1)のA7とC7のセルに打った"2020(年)"と"03(月)"という"年月セル"をVBA側で合算する仕様を考えております。
この手法を調べているのですが、例えば上記合算の方法だと、"8桁のyyyymmddの年月日表記"を組む為に1つのセル当たり5行も使うようなVBAのコードばかりヒットして悩んでいます。
もしもっと簡易なVBAでの表現方法があれば教えてください。
発生している問題・エラーメッセージ
---
該当のソースコード
VBA
1Public Sub FileUpload() 'ファイル選択ダイアログモジュール 2 3 Dim fType As Variant 4 Dim fPath As Variant 5 6'※選択できるファイルの種類はエクセルファイルのみ 7 fType = "Microsoft Excelブック,*.xls?" '※ 8 9'ファイル参照ダイアログの表示 10 fPath = Application.GetOpenFilename(fType, , "") 'fType = fPath。 11 Debug.Print fPath 12 If fPath = False Then 13'ダイアログでキャンセルボタンが押された場合は処理を終了します 14 Exit Sub 'Endで強制終了はよろしくない 15 End If 16 17 Dim Target As Workbook 'コンバートモジュール 18 Set Target = Workbooks.Open(fPath) 19 20 'これをセル抜き出しから数値抜出に変更⇔循環小数エラーの解決。 21 Target.Sheets(1).Range("G2").Copy ThisWorkbook.Sheets(2).Range("A2") 22 Target.Sheets(1).Range("H2").Copy ThisWorkbook.Sheets(2).Range("A3") 23 24 25 ThisWorkbook.Sheets(2).Range("A2:A3").Value = ThisWorkbook.Sheets(2).Range("A2:A3").Value '数式→数値変換 26 ThisWorkbook.Sheets(2).Range("A2:A3").NumberFormatLocal = "yyyymmdd" 27 28 'ここにsheet1のA7とC7から月日を抽出し、それにA2,A3の数値を足してyyyymmddにする記述。 29 'yyyymmdd変換、そして半早のスケジュール登録すれば完成。 30 31 Target.Close '※開いたブックは閉じておく 32 Set Target = Nothing '念のため、変数開放 33 34Dim sh As Worksheet 'csv保存モジュール 35Set sh = Worksheets(2) 36sh.SaveAs Filename:="C:\Work\出力先\test.csv", FileFormat:=xlCSV 37 38End Sub 39 40 41Sub Sample_036()`coco_bauerさん用の情報追加。VBA5行を使いyyyymmdd"20200301"表記するコード例 42 Dim myDate As Date 43 44 myDate = DateSerial(Range(“A2″), Range(“B2″), Range(“C2″)) 45 MsgBox myDate 46End Sub 47 48
試したこと
上記合算の手法を調べ、1,2,3といった"日にち"表示から別セルの2020、03といった"年"、"月"表示をセルごとに合算させるやり方を検索しても、1つのセルに20200301と"yyyymmddで8桁表記"するために1つのセル当たりVBA5行も使うようなのコードばかりヒットして悩んでいます。
もしもっと簡易なVBAでの表現方法があれば教えてください。
補足情報(FW/ツールのバージョンなど)
Excle2016
回答2件
あなたの回答
tips
プレビュー