2016-04-27 21 views
0

請有人改進我當前的代碼 - 打開一個框供用戶選擇一個文件,當選擇正確的文件時,它會將數據粘貼到正確的選項卡上。但是,我不知道如何改進它如下:如何改善我現有的GetOpenfile函數代碼

1)我可以在代碼中指定目標文件的名稱(成本),因此它只能在該文件上工作嗎?目前用戶可以選擇任何文件,它會查找表單名稱「SAP」,如果它找不到它不起作用 - 進入調試模式 - 我希望它給出消息「宏將立即結束因爲你沒有選擇正確的文件「。

2)與上面的1相同,但是現在的消息是「現在宏將結束,因爲文件中沒有SAP表單」。選擇正確的文件後會出現此消息,但沒有SAP表格。

2)刪除目標中的現有的數據「SAP」片在給定的範圍(我一定的時刻的正確碼?)

3)當用戶點擊取消(因爲不想要繼續)出現一條消息,子結束 - 「宏將結束,因爲您沒有選擇文件」

謝謝!

'Set source workbook 
Set wb = ActiveWorkbook 
'Open the target workbook 
vFile = Application.GetOpenFilename("Excel-files,*.xlsm", 1, "Please select file", , False) 
Set wb2 = ActiveWorkbook 
'clear existing values form target book 
wb2.Worksheets("SAP").Range("A:N").ClearContents 
'Copy/paste the visible data to the new workbook 
wb.Worksheets("sheet1").Cells.SpecialCells(xlCellTypeVisible).Copy 
wb2.Worksheets("SAP").Range("A1").PasteSpecial Paste:=xlPasteValues 
ActiveSheet.Range("A1").Select 
Application.CutCopyMode = False 
Windows("Format MCP6 Final.xlsm").Close 

回答

1

我想你可以通過搜索特定的問題來解決大部分問題,但我會盡力幫助你。

1如果您知道文件的名稱,爲什麼讓用戶選擇它? 反正你可以檢查與「workbook.name」和任何你想要的

2,很容易通過這個做測試名稱:

If (Worksheets("SAP").Name = "") Then 
     MsgBox "Macro will end now because there is no SAP sheet in the file" 
     Exit Sub 
    End If 

2.2?取決於您嘗試刪除的內容。 ClearContents不會刪除任何格式。

3你必須定義vFile變體和檢查它的錯誤:

vFile = Application.GetOpenFilename("Excel-files,*.xlsm", 1, "Please select file", , False) 

if vFile = false then 
    MsgBox "The macro will end now because you did not select the file" 
    Exit Sub 
End If 

但對於未來,在4個帖子分裂4問題,並嘗試做說明你已經嘗試過的東西,在那裏你有問題。問題如下:「我所做的是否正確?」不適合SO。試試看,如果你有問題,問爲什麼會出現這些問題。

+0

非常感謝,非常感謝! – Zakky