请有人改进我当前的代码 - 打开一个框供用户选择文件,当选择正确的文件时,它会将数据粘贴到正确的选项卡。但是,我不知道如何改进它如下:
1)我可以在代码中指定目标文件的名称(成本核算),以便它只适用于该文件吗?目前,用户可以选择任何文件,并查找工作表名称" SAP"并且如果它发现它不起作用 - 进入调试模式 - 我希望它给出消息"宏将立即结束,因为你没有选择正确的文件"。
2)与上面的1相同,但现在的消息是" Macro现在将结束,因为文件中没有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
答案 0 :(得分: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定义为Variant并将其检查为false:
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。试试看,如果你有问题,请问为什么会出现这些问题。