-PR-
解決
済み

エクセルVBA 他のファイルからデータをコピー

  • 困ってます
  • 質問No.3853201
  • 閲覧数5312
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

エクセルVBAについて質問があります。お詳しい方、ご教授頂ければ幸いです。
A,B2つのエクセルのファイルがあります。例えばファイルAのセル「A10」から下を、(ファイルBを開かずに)ファイルBのセル「A10」から下のデータに置き換えたいのですが、どのようにすれば良いでしょうか。
また、ファイルAから「ファイルを開く」ダイアローグを表示させてファイルBを指定したいのですが、この場合の方法もよろしければ教えて頂けませんでしょうか。
よろしくお願いいたします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル14

ベストアンサー率 48% (1930/4007)

#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
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.4
レベル14

ベストアンサー率 48% (1930/4007)

#3です。 昨日は眠かったのか、今見直すと不備な点が散見されました。 書き直します。 Sub test03() Dim fn As String Dim wb As Workbook fn = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls") With ThisWorkbook.Sheets("S ...続きを読む
#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
お礼コメント
noname#91219

大変お礼が遅くなり申し訳ありません。
皆様のおかげで、大変勉強になりました。本当にありがとうございます。
投稿日時 - 2008-05-01 22:22:23

  • 回答No.1
レベル13

ベストアンサー率 30% (306/1002)

後者の回答です。 FileFoOpen = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls")
後者の回答です。

FileFoOpen = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls")
  • 回答No.2
レベル14

ベストアンサー率 48% (1930/4007)

ファイルAから「ファイルを開く」ダイアローグを表示させてファイルBを指定し、ファイルAのセル「A10」から下をファイルBのセル「A10」から下のデータに置き換えるサンプルです。 ファイルBを開かずとのリクエストですが、開いているところを見せないようにはしています。 Sheet名に言及がなかったのでABともにSheet1としています。 Sub test01() Dim fn As Str ...続きを読む
ファイル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
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ