[[20210623143216]] 『VBAのコピーについて』(健太) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAのコピーについて』(健太)

二つ教えて下さい。
?@VBAのコピーで*.xlsxを選んでB3:L244をActiveSheetにコピーする事が出来ましたが、いつもB3からL244まで入力されていないので、
B3からLの入力されているとこまで、コピーしてActiveSheetに貼り付け仕方を教えて下さい。

?Aコピーのたびに続きから貼り付けできるやり方も教えて欲しいです。
例えば:1回目で244までコピーしたら2回目は245から貼り付けたいです。

Private Sub CommandButton1_Click()

    Dim RC As Integer
    Dim OpenFileName, fileName, Path, SetFile As String
    Dim wbMoto, wbSaki As Workbook

    Set wbMoto = ActiveWorkbook  'マスターデータ取り込み元をセット

    Application.DisplayAlerts = False

    RC = MsgBox("マスターデータ取込みますか?", vbYesNo + vbQuestion, "確認")

    If RC = vbYes Then

            OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")
            'ダイアログボックスを表示して、マスターデータファイルを指定します。

            If OpenFileName <> "False" Then
                 SetFile = OpenFileName
            Else
                MsgBox "キャンセルされました"
                Exit Sub  'マスターデータの取り込みをキャンセル
            End If

            Workbooks.Open fileName:=SetFile, ReadOnly:=True, UpdateLinks:=0
            'ダイアログボックスで指定したマスターデータファイルを開きます。

            Set wbSaki = Workbooks.Open(Path & SetFile)

                'ワークブック間のシート「項目」をコピーします。
                wbSaki.Worksheets("Sheet1").Range("B3:L244").Copy
                wbMoto.ActiveSheet.Range("B2").PasteSpecial xlPasteValuesAndNumberFormats

                Application.CutCopyMode = False  'コピー切り取りを解除
                wbSaki.Close False  'マスターデータ取り込み先のファイルを閉じる

        Else

        MsgBox "処理を中断します"

    End If

    Application.DisplayAlerts = True
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


■1
質問とは関係ないですが、↓の修正を推奨
 Dim wbMoto, wbSaki As Workboo

 Workbooks.Open fileName:=SetFile, ReadOnly:=True, UpdateLinks:=0k
 Set wbSaki = Workbooks.Open(Path & SetFile)

 ※同じ人なのかはわかりませんが、既に↓で指摘済みです
[[20210301134135]] 『実行時エラー1004の原因』(sugar)
[[20210122143920]] 『データの最終行までコピー』(Help)
[[20210403111842]] 『指定した値を検索し、別エクセルに転記したい』(SS)
[[20210531191339]] 『別シートのマクロ実行』(すにゃ)

■2
>B3からLの入力されているとこまで
ならば、(原則的には)L列の最終行を求め↓のようにすればよいです

 Range("B3:L" & 最終行).Copy

>コピーのたびに続きから貼り付け
ならば、(原則的には)↓をB2セルに固定するのではなく、B列最終行の1行下のセルを求めてから、そこに貼り付けすればよいです

 wbMoto.ActiveSheet.Range("B2").PasteSpecial xlPasteValuesAndNumberFormats

いずれも、最終行(セル)を求めることになります。
「VBA 最終行」というキーワードで検索してみてください。

 ↓のようなサイトがたくさん見つかるはずです
https://excel-ubara.com/excelvba1/EXCELVBA318.html
http://www.niji.or.jp/home/toru/notes/8.html
https://www.sejuku.net/blog/28929

(もこな2) 2021/06/23(水) 15:47


もこな2さん 親切なご対応ありがとうございます。

勉強してみます。また結果ご連絡致します。
(健太) 2021/06/23(水) 22:04


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.