[[20250703101808]] 『ブックのセルの一部をコピーしたい』(素浪人) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『ブックのセルの一部をコピーしたい』(素浪人)

ブックのコピーをしたい
処理の流れは

1.ブックAを開く
2.ブックBを開く
3.ブックAのシートの一部をブックBにコピーする
4.ブックAを閉じる
5.ブックBを保存
6.ブックBを閉じる

この時ブックAとブックBが同じファイル名の時以下の
wbd.close でエラーが発生します。

Dim file As String, wbs As Workbook, wbd As Workbook
file = "C:\旧\データ.xlsm"
Set wbs = Application.Workbooks.Open(file)
file = "C:\新\データ.xlsm"
Set wbd = Application.Workbooks.Open(file)

' ここに wbs のシートの一部を wbd のシートにコピーする処理を入れる予定。

wbs.Close
wbd.Close

こういう場合にどうするのがいいのでしょうか?
以下のようにいくつか考えたのですが
いずれも処理時間が増えそうなのと、
いろいろな場合に対するエラー対処など面倒そうで
簡単な方法はないのでしょうか?

・コピー元のファイルを別名でコピーしてから開く
・コピー元を開いて、ブックを追加して
 コピー元から、追加したブックにシートをコピーしてから
 コピー元を閉じて、追加したブックのシートのデータを
 コピー先にコピーする。
・コピー元を開いて、処理しているブックでシートを作成し、
 コピーしてコピー元を閉じて、コピー先を開いて
 処理ブックのシートからコピー先にコピーする。

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


おはようございます。。。^^;
開くブックが同名。。。というのが致命傷なのでは。。。ま
死にませぬが
多少のご苦労はやむを得ないかと。。。別名にしておけば普通で宜しいのではないでせうか
余計なお世話でしたらお許しをm(__)m
(隠居Z) 2025/07/03(木) 11:05:18

既に指摘があるところですが、Excelの仕様上別フォルダであっても、同時に同名のブックは開けません。
なので、既に発想されているようですが
 1. データ元ブックを開いて全(必要な)シートを新規ブックにコピーする
 2.  データ元ブックを閉じる
 3.  書込み先のブックを開いて、1で作成したブックからコピーする
 4.  ↑を上書き保存して閉じる
 5. 1で作成したブックを保存せず閉じる

のような処理にすればよいと思います。
ただ、処理順をみればわかるように、データ元と書き込み先のブックとは別にマクロブックを用意することが前提になります。

(もこな2 ) 2025/07/03(木) 12:32:35


試してないですが、例えば↓のような感じでよさそうに思います。
    Sub さんぷる()
        Dim dstWB As Workbook

        Stop 'ブレークポイントの代わり
        With Workbooks.Open("C:\旧\データ.xlsm")
            .Worksheets.Copy
            .Close
        End With

        Stop 'ブレークポイントの代わり
        With Workbooks(Workbooks.Count)
            Set dstWB = Workbooks.Open("C:\新\データ.xlsm")

            .Worksheets("hoge").Range("A1:D5").Copy dstWB.Worksheets("hoge").Range("A1")
            dstWB.Save
            dstWB.Close
            .Close False
        End With

    End Sub

(もこな2 ) 2025/07/03(木) 12:52:42


 他の案としては、コピー元のデータ構成がきちんと読み取りできる形であることを前提で

 コピー先ブックを開いて、コピー元ブックからADO接続でデータをインポートするという手方も有ります。
 この方法であればコピー元ブックを開かずに処理できます。
(jindon) 2025/07/03(木) 13:00:20

コメント返信:

[ 一覧(最新更新順) ]


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