総ありがとう数 累計4,290万(2014年11月1日現在)

毎月4,000万人が利用!Q&Aでみんなで助け合い!

-PR-
noname#91219

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

Aみんなの回答(全4件)

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

  • 2008-03-11 21:49:43
  • 回答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
  • 同意数0(0-0)
  • ありがとう数0

その他の回答 (全3件)

  • 2008-03-12 09:39:49
  • 回答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
お礼コメント
noname#91219

大変お礼が遅くなり申し訳ありません。
皆様のおかげで、大変勉強になりました。本当にありがとうございます。
投稿日時 - 2008-05-01 22:22:23
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2008-03-11 16:07:42
  • 回答No.1
後者の回答です。

FileFoOpen = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls")
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2008-03-11 21:38:40
  • 回答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
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 回答数4
  • 気になる数0
  • ありがとう数2
  • ありがとう
  • なるほど、役に立ったなど
    感じた思いを「ありがとう」で
    伝えてください

関連するQ&A

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

別のキーワードで再検索する

あなたの悩みをみんなに解決してもらいましょう

  • 質問する
  • 知りたいこと、悩んでいることを
    投稿してみましょう
-PR-
-PR-
-PR-

特集

専門医・味村先生からのアドバイスは必見です!

関連するQ&A

-PR-

ピックアップ

  • easy daisy部屋探し・家選びのヒントがいっぱい!

-PR-
ページ先頭へ