2016-04-27 23 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