コピペ+ちょこっと編集で使えるマクロコード集
コピペしてセル指定を変えるだけで使えるマクロのリストです。
「月次の決算資料」や「トレード分析」など、
ルーチンワークをEXCELで行うことが多いと思います。
EXCELでの繰り返し業務はVBAで自動化しましょう。
コピペ関連
コピーペーストをする(A1セルからB1セルへ)
Range("A1").Copy Range("B1")
コピーペーストをする 範囲Ver
A1からD10の範囲のデータをF1を起点に貼り付ける
Range("A1:D10").Copy Range("F1")
数式のセルを数値として貼り付ける
Range("A1").Copy Range("F1").pastespecial paste:=xlpasteValues
別シート(Sheet1→Sheet2)へコピペ
Worksheets("sheet1").Range("A1").copy Worksheets("sheet2").Range("B1")
別のEXCELファイルにコピペする
Workbooks("Wb1").Sheets("Sh1").Range("A1").Copy _ Workbooks("Wb2").Sheets("Sh2").Range("B1")
※改行する場合、末尾に _ を入れると1文として実行可能
別ブックの別シートへコピペ(複数箇所の場合のコツ)
Workbooks("Wb1").Sheets("Sh1").Range("A1").Copy _ Workbooks("Wb2").Sheets("Sh2").Range("A1") Workbooks("Wb1").Sheets("Sh1").Range("B2").Copy _ Workbooks("Wb2").Sheets("Sh2").Range("B2") Workbooks("Wb1").Sheets("Sh1").Range("C3").Copy _ Workbooks("Wb2").Sheets("Sh2").Range("C3") Workbooks("Wb1").Sheets("Sh1").Range("D4").Copy _ Workbooks("Wb2").Sheets("Sh2").Range("D4")
ex. シートそのもののコピー
Book1の"リスト"のシートを、Book2のSheet1の後ろへコピー
Workbooks("Book1").sheets("リスト").Copy _ After:=Workbooks("book2").sheets("Sheet1")
別のブックを開く
Dドライブの「EXCELデータ」というフォルダ内のbook1を開く場合
Workbooks.Open Filename:= "D:\EXCELデータ\book1.xlsx"
または
Workbooks.Open ("D:\EXCELデータ\book1.xlsx")
変数を使う
シートを変数にセットして複数箇所をコピペ
Dim ws as worksheet 'シートをwsという変数でセット set ws1 = Workbooks("Wb1").Sheets("Sh1") set ws2 = Workbooks("Wb2").Sheets("Sh2") ws1.Range("A1").Copy ws2.Range("A1") ws1.Range("B2").Copy ws2.Range("B2")
変数を使って開く場合
Dim path, book ' as ~~は書かず省略 = Variant型になる path = "D:\EXCELデータ\" book = "book1.xlsx" Workbooks.Open (path & book)
(A1セルの入力を使う → A1[ D:\EXCELデータ\ ] )
path = Thisworkbook.Sheets("sheet1").range("A1").value
ワイルドカードを使って開く場合
「*」の場合(book1やbook20210408がすべて該当する)
Dim path, book 'variant path = "D:\EXCELデータ\" book = Dir(path & "book*.xlsx") Workbooks.Open (path & book)
「?」の場合(同じ文字数のものが該当する)
Dim path, book 'variant path = "D:\EXCELデータ\" book = Dir(path & "book????????.xlsx") '?が8つなので8桁のみ Workbooks.Open (path & book)
開く場合のオプション追加
①読み取り専用で開く
Workbooks.Open Filename:= "D:\EXCELデータ\book1.xlsx", ReadOnly:=True
②パスワード付きのファイルを開く(パスワード=1234)
Workbooks.Open Filename:= "D:\EXCELデータ\Lockbook1.xlsx", Password="1234"
特定の曜日だけマクロを実行する(月曜日に処理1を実行する場合)
If Weekday(Now()) = vbMonday Then '~処理1~ End if
outlookでメールを送信する
※ツール > 参照設定 >「Microsoft Outlook ??.? Object Library」を有効化する
Dim oApp As New Outlook.Application Dim mail As Outlook.MailItem Set mail = oApp.CreateItem(olMailItem) 'メールを作成 mail.To = "sampleTo@mail.co.jp" '宛先 mail.CC = "sampleCC@mail.co.jp" 'CCを指定 mail.BCC = "sampleBCC@mail.co.jp" 'BCCを指定 mail.Subject = "こんにちは" '件名を指定 mail.HTMLBody = "お元気ですか" '本文の指定 mail.attachments.Add "D:\EXCELデータ\book1.xlsx" 'ファイルを添付 mail.Display '作成したメールを表示 mail.Send '作成したメールを送信
メールを複数送る例
For文を使い、Excelシート1行1通ずつでメールを作成し送信
Dim oApp As New Outlook.Application Dim mail As Outlook.MailItem Set mail = oApp.CreateItem(olMailItem) 'メールを作成 maxrow = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To maxrow mail.To = Cells(i, 1).Value '宛先 mail.CC = Cells(i, 2).Value 'CCを指定 mail.BCC = Cells(i, 3).Value 'BCCを指定 mail.Subject = Cells(i, 4).Value '件名を指定 mail.HTMLBody = "<span style=""font-size:11pt;"" >" & Cells(i, 5).Value & "</span>" '本文の指定 mail.attachments.Add Cells(i, 6).Value 'ファイルを添付 mail.Display '作成したメールを表示 'mail.Send '作成したメールを送信 Next
※本文の中身は、HTML形式のためbr,pタグなどが使用可能