2017-03-16 5 views
2

私はファイルを選択できるようにするVBAスクリプトを持っていて、そのファイルから範囲をコピーし、それをターゲットワークシートに貼り付けました。しかし、私がこれを行うたびに、ソースファイルを開き、クリップボードに情報を保存するかどうかを尋ねるメッセージが表示されます。クリップボードに情報を保存するためのプロンプトを削除するにはどうすればよいですか?

ソースエクセルを開かずにデータをコピーする方が良いかどうか分かりません。

Option Explicit 

Sub DCDatabaseCopy() 
Dim vFile As Variant 
Dim wbCopyTo As Workbook 
Dim wsCopyTo As Worksheet 
Dim wbCopyFrom As Workbook 
Dim wsCopyFrom As Worksheet 
Dim DCRowCount As Integer 

Set wbCopyTo = ActiveWorkbook 
Set wsCopyTo = ActiveSheet 

    '------------------------------------------------------------- 
    'Open file with data to be copied 

    vFile = Application.GetOpenFilename("Excel Files (*.*)," & "*.*", 1, "Select Excel File", "Open", False) 

    'If Cancel then Exit 
    If TypeName(vFile) = "Boolean" Then 
     Exit Sub 
    Else 
    Set wbCopyFrom = Workbooks.Open(vFile) 
    Set wsCopyFrom = wbCopyFrom.Worksheets(1) 
    End If 

    '-------------------------------------------------------------- 
    'Copy Range 
    DCRowCount = wsCopyFrom.Range("A1", wsCopyFrom.Range("A1").End(xlDown)).Rows.Count 

    wsCopyFrom.Range("A1:G" & DCRowCount).Copy 
    wsCopyTo.Range("A2").PasteSpecial Paste:=xlPasteValues, _ 
      Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

    'Close file that was opened 
    wbCopyFrom.Close SaveChanges:=False 
End Sub 

答えて

2

閉じる前にブックの実行:

wbCopyFrom.Application.CutCopyMode = False 

これでクリップボードがクリアされます。

-1

使用前と後のコードのこれらの2行、それは

Application.DiplayAlerts = FALSE 
Application.DiplayAlerts = TRUE 

プロンプトクリップボードをバイパスするか、またはそれはあなたがこれを使用する必要があることが考えられます。もちろん、もし

ActiveWindow.Close savechanges:=FALSE 

をそのファイルはActiveWindowにはありません。その部分をコードに置き換えてください。

+0

最初は、**すべての**プロンプトだけでなく、クリップボードのプロンプトをバイパスします。二番目は彼が最後の行ですでにしていることです。閉じる前にCutCopyModeを終了するだけです。 –

関連する問題