2017-03-16 88 views
2

我有一個VBA腳本,它允許我選擇一個文件,然後從該文件複製一個範圍並將其粘貼到目標工作表中。但是,每次我這樣做都會打開源文件,然後關閉哪些提示我,如果我想將信息保存在剪貼板上。如何刪除提示以將信息保存到剪貼板?

我不知道如果不打開源代碼excel就複製數據會更好。

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

使用這些兩行代碼之前和之後,它會繞過剪貼板提示

Application.DiplayAlerts = FALSE 
Application.DiplayAlerts = TRUE 

或者,它可能是你需要使用此:

ActiveWindow.Close savechanges:=FALSE 

顯然,如果該文件不在ActiveWindow中,然後用wherver替換那部分代碼它是

+0

首先會繞過**所有**不僅提示剪貼板提示。其次是他在最後一行已經做了什麼。您只需在關閉前退出CutCopyMode。 –

相關問題