[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの最終行までコピー』(Help)
以下の最終行で、C列の最終行までコピーしたいのですが
どうしてもC1のみしかコピーされません。
初歩的な質問で申し訳ないのですが、教えていただけると助かります。
既に数時間格闘しています…
Sub update()
Dim SetFile As String Dim wbMoto, wbSaki As Workbook
'マスターデータ取り込み元をブック名をセット(取り込み元) Set wbMoto = ActiveWorkbook Application.DisplayAlerts = False 'マスターデータファイルの取り込み場所をセット(取り込み先) SetFile = "●●●●.xls" 'マスターデータファイルを読み取り専用で開く Workbooks.Open Filename:=SetFile, ReadOnly:=True, UpdateLinks:=0 '開いたマスターブック名をセット(取り込み先) Set wbSaki = Workbooks.Open(SetFile)
'取り込み先のシート名の「Sheet1」のC列をコピー wbSaki.Worksheets("Sheet1").Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row).Copy
< 使用 Excel:Excel2019、使用 OS:Windows10 >
>wbSaki.Worksheets("Sheet1").Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row).Copy
↑を、↓でどうでしょうか?外してたらすみません(^^;
wbSaki.Worksheets("Sheet1").Range("C1:C" & wbSaki.Worksheets("Sheet1").Cells(Rows.Count, "C").End(xlUp).Row).Copy
(虎) 2021/01/22(金) 15:05
アプリケーション定義またはオブジェクト定義のエラーと出てしまいました。
検証がしにくい質問で大変恐縮です。
(Help) 2021/01/22(金) 15:09
いえいえ、こちらこそ、あてずっぽうで回答してしまってすみません…。 少し考えてみますが、その間にどなたかから適切な回答がつくと思われます(^^) (虎) 2021/01/22(金) 15:15
Sub 実験用() Dim wbMoto As Workbook, wbSaki As Workbook '←修正しました Dim tmpRNG As Range
Set wbMoto = ActiveWorkbook Set wbSaki = Workbooks.Open(Filename:="●●●●.xls", ReadOnly:=True, UpdateLinks:=0)
With wbSaki.Worksheets("Sheet1") Set tmpRNG = .Range("C1", .Cells(.Rows.Count, "C").End(xlUp)) End With
Debug.Print tmpRNG.Address(External:=True) End Sub
(もこな2) 2021/01/22(金) 15:28
イミディエイトウィンドウには以下が表示されました
[●●●.XLS]Sheet1!$C$1:$C$179
範囲的には正しいです
(Help) 2021/01/22(金) 15:35
ちなみに貼り付けるほうはどうしてるのですか?
そのまま、貼り付けてよいなら↓みたいな感じになろうかとおもいますが・・・
Sub 実験用02() Dim wbMoto As Workbook, wbSaki As Workbook Dim tmpRNG As Range
Set wbMoto = ActiveWorkbook Set wbSaki = Workbooks.Open(Filename:="●●●●.xls", ReadOnly:=True, UpdateLinks:=0)
With wbSaki.Worksheets("Sheet1") .Range("C1", .Cells(.Rows.Count, "C").End(xlUp)).Copy wbMoto.Worksheets(1).Range("A1") End With End Sub
元と先が逆のような気がしますが、そこはあっているんですよね?
(もこな2) 2021/01/22(金) 15:48
また、ご提示いただいたコードで無事求めていた動作ができました。
その他細かい部分も学ぶところが多くあったので本当に良かったです。
ありがとうございました!
また相談させてくださいm(__)m
(Help) 2021/01/22(金) 15:58
■1
直しちゃいましたが、↓のように書くと、型指定は最後のものしか対象になりません。(他はVariant型になります)
Dim wbMoto, wbSaki As Workbook
なので、↓のようにそれぞれで型を指定したほうがよいです
Dim wbMoto As Workbook, wbSaki As Workbook
■2
Workbooks.Open Filename:=SetFile, ReadOnly:=True, UpdateLinks:=0 Set wbSaki = Workbooks.Open(SetFile)
↑だと同じブック2回開いちゃってます。
(もこな2) 2021/01/22(金) 16:26
標準モジュールでシートを省略した場合、↓のように解釈されるので
ActiveSheet.Cells(ActiveSheet.Rows.Count, "C").End(xlUp).Row
もしかしたら、↓みたいになっていたのではないでしょうか?
wbSaki.Worksheets("Sheet1").Range("C1:C" & 1).Copy
(もこな2) 2021/01/22(金) 16:34
色々とありがとうございます。
完全に独学なので、アドバイスをいただけてうれしいです!
本当に勉強になりました!
原因についてですが、開くブックはSheet1しか存在しないです。
ただ、C1しかコピーされていなかったので、恐らく原因は近しい所にあるのかなと思います。
自分も考えてみます。
今回は本当にありがとうございました!
(Help) 2021/01/22(金) 17:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.