-PR-

解決済みの質問

質問No.3853201
困ってます
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数4
閲覧数4424
エクセルVBA 他のファイルからデータをコピー
エクセルVBAについて質問があります。お詳しい方、ご教授頂ければ幸いです。
A,B2つのエクセルのファイルがあります。例えばファイルAのセル「A10」から下を、(ファイルBを開かずに)ファイルBのセル「A10」から下のデータに置き換えたいのですが、どのようにすれば良いでしょうか。
また、ファイルAから「ファイルを開く」ダイアローグを表示させてファイルBを指定したいのですが、この場合の方法もよろしければ教えて頂けませんでしょうか。
よろしくお願いいたします。
投稿日時 - 2008-03-11 15:46:13

質問者が選んだベストアンサー

回答No.3
#2です。少し修正します。

Sub test02()
Dim fn As String
Dim wb As Workbook
fn = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls")
With ThisWorkbook.Sheets("Sheet1")
.Range(Range("A10"), Range("A10").End(xlDown)).ClearContents
End With
If fn = "False" Then
MsgBox "キャンセルしました。"
Exit Sub
End If
Application.ScreenUpdating = False
Set wb = Workbooks.Open(Filename:=fn)
With wb.Sheets("Sheet1")
.Range(Range("A10"), Range("A10").End(xlDown)).Copy
ThisWorkbook.Sheets("Sheet1").Range("A10").PasteSpecial
Application.CutCopyMode = False
End With
wb.Close (False)
Set wb = Nothing
Application.ScreenUpdating = True
End Sub
投稿日時 - 2008-03-11 21:49:43
この回答を支持する
(現在0人が支持しています)

ベストアンサー以外の回答 (3)

回答No.4
#3です。
昨日は眠かったのか、今見直すと不備な点が散見されました。
書き直します。

Sub test03()
Dim fn As String
Dim wb As Workbook
fn = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls")
With ThisWorkbook.Sheets("Sheet1") 'このBOOKのSheet1において
.Range(.Range("A10"), .Range("A10").End(xlDown)).ClearContents 'A10以下の連続したデータを消去
End With
If fn = "False" Then
MsgBox "キャンセルしました。"
Exit Sub
End If
Application.ScreenUpdating = False '画面更新を止める
Application.EnableEvents = False '自動マクロを止める
Set wb = Workbooks.Open(Filename:=fn, UpdateLinks:=1) '警告を出さずリンクを更新して開きwbとする
'(UpdateLinks:=0 にすると、リンクを更新せずに開きます。)
With wb.Sheets("Sheet1") 'wbのSheet1において
.Range(.Range("A10"), .Range("A10").End(xlDown)).Copy 'A10以下の連続したデータをCopy
ThisWorkbook.Sheets("Sheet1").Range("A10").PasteSpecial 'このBOOKのA10以下に貼り付け
Application.CutCopyMode = False 'コピーモード終了
End With
wb.Close (False) '警告を出さず保存しないでwbを終了
Application.EnableEvents = True '自動マクロを有効へ
Set wb = Nothing
Application.ScreenUpdating = True '画面更新
End Sub
投稿日時 - 2008-03-12 09:39:49
この回答を支持する
(現在0人が支持しています)
お礼
大変お礼が遅くなり申し訳ありません。
皆様のおかげで、大変勉強になりました。本当にありがとうございます。
投稿日時 - 2008-05-01 22:22:23
回答No.2
ファイルAから「ファイルを開く」ダイアローグを表示させてファイルBを指定し、ファイルAのセル「A10」から下をファイルBのセル「A10」から下のデータに置き換えるサンプルです。
ファイルBを開かずとのリクエストですが、開いているところを見せないようにはしています。
Sheet名に言及がなかったのでABともにSheet1としています。

Sub test01()
Dim fn As String
Dim wb As Workbook
fn = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls")
With ThisWorkbook.Sheets("Sheet1")
.Range(Range("A10"), Range("A10").End(xlDown)).ClearContents
End With
If fn = "False" Then
MsgBox "キャンセルしました。"
Exit Sub
End If
Application.ScreenUpdating = False
Set wb = Workbooks.Open(Filename:=fn)
With wb.Sheets("Sheet1")
.Range(Range("A10"), Range("A10").End(xlDown)).Copy
ThisWorkbook.Sheets("Sheet1").Range("A10").PasteSpecial
End With
wb.Close
Set wb = Nothing
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
投稿日時 - 2008-03-11 21:38:40
この回答を支持する
(現在0人が支持しています)
回答No.1
後者の回答です。

FileFoOpen = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls")
投稿日時 - 2008-03-11 16:07:42
この回答を支持する
(現在0人が支持しています)
この質問は役に立ちましたか?
2人が「このQ&Aが役に立った」と投票しています
もっと聞いてみる

関連するQ&A

この他の関連するQ&Aをキーワードで探す

同じカテゴリの人気Q&Aランキング

-PR-

-PR-

特集

正しい方法で健康的な綺麗を手に入れよう!

お城、ボート、ツリーハウス、ユニークな物件満載!

患者さんやご家族、それぞれに合ったゴールと道筋を。

同じカテゴリの人気Q&Aランキング

-PR-

ピックアップ

-PR-