LIVERVA

LIVERVA

生活を豊かに、自由に、便利に

コピペ+ちょこっと編集で使えるマクロコード集

コピペしてセル指定を変えるだけで使えるマクロのリストです。
「月次の決算資料」や「トレード分析」など、
ルーチンワーク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タグなどが使用可能

HOME  /  プライバシーポリシー・免責事項  /  お問い合わせ