0
1

More than 1 year has passed since last update.

実務で使えるVBA

Last updated at Posted at 2022-01-25

<<データを他ブックからコピー>>

'ファイル参照ダイアログの表示
filePath = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls*")

'ファイル参照先をこのブックと同じ場所に設定する場合
'<<filePath = ThisWorkbook.Path & "\" & "test">>

Dim wbMoto, wbSaki As Workbook

'集計ツールをオブジェクトにセット
Set wbMoto = ActiveWorkbook

'追加リストブックを読み取り専用で開く
Set wbSaki = Workbooks.Open(filePath, UpdateLinks:=0, ReadOnly:=True, IgnoreReadOnlyRecommended:=True)


'参照先の1~5番目までのシート上のデータをコピーする。
For i = 1 To 5

    'アクティブブックの最後尾を取得
    Row1 = wbMoto.Worksheets(1).Range("A100000").End(xlUp).Row

    '参照先データをアクティブブックに移す
    wbSaki.Worksheets(1).Range("A2:C1000").Copy
    wbMoto.Worksheets(1).Cells(Row1 + 1, 1).PasteSpecial xlPasteFormulasAndNumberFormats
    Application.CutCopyMode = False

Next i

'参照先ワークブックを閉じる
 wbSaki.Close

<<データを他ブックに丸ごと移す>>

Dim newBookName As String
Dim newBookPath As String
Dim newBook As Workbook

Dim today As Variant

'日付の表示を取得
today = Format(Date, "yyyymmdd")

'新しいファイルの名前を指定
newBookName = "test" & today

'新しいファイルのフルパスを設定
newBookPath = ThisWorkbook.Path & "\" & newBookName

'指定したパスにファイルが作成済でないかを確認。
If Dir(newBookPath) = "" Then
    '新しいファイルを作成
    Set newBook = Workbooks.Add

    '新しいファイルをVBAを実行したファイルと同じフォルダ保存
    newBook.SaveAs newBookPath

Else
    '既に同名のファイルが存在する場合はメッセージを表示
    MsgBox "既に" & newBookName & "というファイルは存在します。"

End If

'---------------------------------------------------以下、コピー&ペースト処理-------------------------------------------------------

Dim SetFile As String
Dim wbMoto, wbSaki As Workbook

'コピー元のファイルをセット
Set wbMoto = ThisWorkbook

Application.DisplayAlerts = False

'コピー先のパス
SetFile = ThisWorkbook.Path & "\" & newBookName

'コピー先のファイルをセット
Set wbSaki = Workbooks.Open(SetFile)

'コピー元の集計表をコピー
wbMoto.Worksheets("test").Range("A1:E171").Copy

'コピー先にペースト
wbSaki.Worksheets("sheet1").Range("A1").PasteSpecial xlPasteFormats
wbSaki.Worksheets("sheet1").Range("A1").PasteSpecial xlPasteValues

'コピー先のシート名を変更
wbSaki.Sheets("Sheet1").name = "test"

'コピーの切り取り解除
Application.CutCopyMode = False

'コピー先の列幅を調整
Worksheets("test").Columns(1).ColumnWidth = 23
Worksheets("test").Range("B:E").Columns.AutoFit

'コピー先を保存
wbSaki.Save

'コピー先のファイルを閉じる
wbSaki.Close

Application.DisplayAlerts = True
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1