VBAを組んでみた。
やってみたこと
作製したデータをコピーと貼り付けで新しいbookに保存をする
事前準備
Cドライブ直下に[testフォルダ]を作成する
VBAを行うシートの名前を「見本」に変更する
別のシート名で編集を行っている方は
VBAコード上にある「見本」を指定したシート名に置き換えて考えてください
VBAの標準モジュールを開く
標準モジュールとは?
VBAを書くシートのようなものことをVBEといいます
標準モジュールとは通常時に使用するVBEです 詳細はまた後日...
VBEの開き方
知っている方はスルーしてください
まずExcelのメインタブに[開発]があるかを確認します
無い場合はExcelのオプションから開くことができます
始めにメインタブの[ファイル]を選択します
次に[オプション]を開くと下図の[Excelのオプション]が開かれます
[リボンのユーザー設定]の[開発]の欄にチェックを入れOKを押します
Excelのメインタブの[開発]から[Vlsual Basic]を開きます
次に、[挿入]のタブから標準モジュールを選択します
これで開くことができました
これからVBAを書いていきます
VBAのコード
先ほど開いた標準モジュールにコードを書いていきます
Subtest1()'①作成したデータをコピーして新しいworkbookにすべての形式を含めて張り付ける。ThisWorkbook.Worksheets("見本").Range("A:F").CopyWorkbooks.Add'sheetを追加するSelection.PasteSpecialPaste:=xlPasteAllUsingSourceTheme'②さら同じものをコピーして値貼り付けをするActiveSheet.Range("A1:F70").CopySelection.PasteSpecialPaste:=xlPasteValues'③新しいworkbookのSheet名を変更するDimsheetnameAsStringsheetname=Year(Now)&"年"&Month(Now)&"月分"ActiveWorkbook.Sheets("Sheet1").Name=nam'Sheetの名前を変更する'④新しいworkbookを保存するDimfilnameAsStringfilname=Year(Now)&"年分"DimpassAsStringpass="C:\ test"&filname&".xlsx"ActiveWorkbook.SaveAsFilename:=passActiveWorkbook.Closesavechanges:=True'⑤保存したことを通知するMsgBox"保存しました。"EndSub
使用した関数
今回は Dim、copy、Selection.PasteSpecial の3つに絞ってご紹介します
Dim 変数を入れる
`Dim *** As String
*** =
***には自分で入れたい変数の名前を入れます
上記Stringの部分を下記の表のように変更します
意味 | 備考 | ||
---|---|---|---|
1 | String | 文字列 | ファイルパスを作成するとき等に利用する |
2 | Integer | 整数 | 条件付き書式を利用した時に利用 |
3 | Currecy | 通貨 | 数値だけほしいときに利用 |
4 | date | 日付 | 西暦1900年1月1日以降を入れられる |
5 | variant | 全てのデータ | 何を使用するか迷ったときに利用する |
Copy コピー
ThisWorkbook.Worksheets("見本").Range("A:F").Copy
この場合「このWorkbookのシート名見本のAからF列を選択しコピーをする」
ことができます
Selection.PasteSpecial 貼り付け
Selection.PasteSpecial Paste:=xlPasteAll
Pasteは省略が可能です
ただ、Pasteの部分を変更するとどのように張り付けるのかを指定できます
pasteの他にoperation,skipBlanksなどがあります
今回はpasteの一部をご紹介します
Paste | 意味 | |
---|---|---|
1 | xlPasteAll | 全てを貼り付け |
2 | xlPasteFormats | 書式を保持して張り付け |
3 | xlPasteAllExceptBorders | 罫線以外の全てを張り付け |
4 | xlPasteValues | 値貼り付け |
5 | xlPasteFormulas | 数式を張り付け |
6 | xlPasteAllUsingSourceTheme | 元の書式を含めて全て貼り付け |
まとめ
書式設定は残して数式は消して保存するという手間が煩わしくてこのVBAを組んでみました
まずは可変的な部分は少なめに遠回りなコードでも思い描いた通りに動くコードを作成できればと思います
参考
エクセルの神髄
何の関数をどのように使用すれば思うように動くのかとてもわかりやすく参考にさせていただきました
ありがとうございました