Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21511

VBAを組んでみた。新しいbookに保存するの巻

$
0
0

VBAを組んでみた。

やってみたこと

作製したデータをコピーと貼り付けで新しいbookに保存をする

事前準備

Cドライブ直下に[testフォルダ]を作成する

この中に作成したファイルが入ります
testフォルダの作成.png

VBAを行うシートの名前を「見本」に変更する

別のシート名で編集を行っている方は
VBAコード上にある「見本」を指定したシート名に置き換えて考えてください

VBAの標準モジュールを開く

標準モジュールとは?
VBAを書くシートのようなものことをVBEといいます
標準モジュールとは通常時に使用するVBEです 詳細はまた後日...

VBEの開き方

知っている方はスルーしてください
まずExcelのメインタブに[開発]があるかを確認します
メインタブに開発があるか.png
無い場合はExcelのオプションから開くことができます
始めにメインタブの[ファイル]を選択します
次に[オプション]を開くと下図の[Excelのオプション]が開かれます
[リボンのユーザー設定]の[開発]の欄にチェックを入れOKを押します
Excelのオプションから開発を選択する.png
Excelのメインタブの[開発]から[Vlsual Basic]を開きます
次に、[挿入]のタブから標準モジュールを選択します
標準モジュールを開く.png
これで開くことができました
これからVBAを書いていきます
VBAの標準モジュールの画面.png

  

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の部分を下記の表のように変更します

意味備考
1String文字列ファイルパスを作成するとき等に利用する
2Integer整数条件付き書式を利用した時に利用
3Currecy通貨数値だけほしいときに利用
4date日付西暦1900年1月1日以降を入れられる
5variant全てのデータ何を使用するか迷ったときに利用する

Copy コピー

ThisWorkbook.Worksheets("見本").Range("A:F").Copy
この場合「このWorkbookのシート名見本のAからF列を選択しコピーをする」
ことができます

Selection.PasteSpecial 貼り付け

Selection.PasteSpecial Paste:=xlPasteAll
Pasteは省略が可能です
ただ、Pasteの部分を変更するとどのように張り付けるのかを指定できます
pasteの他にoperation,skipBlanksなどがあります
今回はpasteの一部をご紹介します

Paste意味
1xlPasteAll全てを貼り付け
2xlPasteFormats書式を保持して張り付け
3xlPasteAllExceptBorders罫線以外の全てを張り付け
4xlPasteValues値貼り付け
5xlPasteFormulas数式を張り付け
6xlPasteAllUsingSourceTheme元の書式を含めて全て貼り付け

まとめ

書式設定は残して数式は消して保存するという手間が煩わしくてこのVBAを組んでみました
まずは可変的な部分は少なめに遠回りなコードでも思い描いた通りに動くコードを作成できればと思います

参考

エクセルの神髄
何の関数をどのように使用すれば思うように動くのかとてもわかりやすく参考にさせていただきました

ありがとうございました


Viewing all articles
Browse latest Browse all 21511

Latest Images

Trending Articles