dポイントプレゼントキャンペーン実施中!

VBAのコピー

Dim xls As New Excel.Application
Dim wbk As New Excel.Workbook

Dim sh3 As Worksheet


Set sh3 = Worksheets("全")

sh3.Activate


sh3.Range("A1:Z65536").Select
Selection.Clear

Set wbk = xls.Workbooks.Open("\\***.***.*.***\管理\全データ抽出.xls")


wbk.Worksheets("全").Activate 'ワークシートをアクティブにする

wbk.Worksheets("全").Range("A1:Z65536").Copy 'コピーする

'ActiveSheet.Paste Destination:=Worksheets("全").Range("A1") '貼り付ける

Worksheets("全").Range("A1").PasteSpecial Paste:=xlPasteValues



wbk.Close SaveChanges:=False


'Worksheets("メイン").Cells(1, 1).Select

を実行すると 『wbk.Close SaveChanges:=False』のところで

クリップボードに大きな情報があります。・・・・

と言うメッセージがでて必ずとまってしまうのですが

メッセージをでないようにしたいのですが

教えてください。お願いします。

A 回答 (2件)

ExcelVBAでの話という認識でいいですか?


『クリップボードに大きな情報があります...』というメッセージそのまま、
コピーモードが解除されていないわけですから
Application.CutCopyMode = False
wbk.Close SaveChanges:=False
とすれば良いです。
Excelのマクロ記録を活用すると、コピー時によく記録される記述です。

また
>Worksheets("全").Range("A1").PasteSpecial Paste:=xlPasteValues
これはActiveWorkbookのWorksheets("全")に対する処理になってしまいますから
目的の処理とは違うのでは?
変数sh3を使いましょう。

Dim wbk As Workbook
Dim sh3 As Worksheet

Set sh3 = ThisWorkbook.Worksheets("全") 'or ActiveWorkbook.Worksheets("全")
sh3.UsedRange.Clear
Set wbk = Workbooks.Open(Filename:="\\***.***.*.***\管理\全データ抽出.xls", ReadOnly:=True)
wbk.Worksheets("全").UsedRange.Copy
sh3.Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
wbk.Close SaveChanges:=False

Set sh3 = Nothing
Set wbk = Nothing

画面のちらつきが気になるようであれば
Application.ScreenUpdating
で制御できます。(ヘルプ参照のこと)
    • good
    • 0
この回答へのお礼

すごい完璧な答えありがとうございます。

勉強になります。

お礼日時:2010/03/24 12:36

この程度ならヘルプに出てきます。

VBAのエディターで、ヘルプを起動し、”SaveChanges”や”close”などのページに関連項目として下記のようにでています。

.Application.DisplayAlerts = False

ヘルプをもっと活用しましょう。私はヘルプだけで、100%作っています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!