请有人可以改善我当前的代码-打开一个框供用户选择文件,然后选择正确的文件,它将数据粘贴到正确的标签中。但是,我不确定如何进行如下改进:
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如果知道文件名,为什么要让用户选择它?无论如何,您可以使用“ 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。尝试一下,如果您有问题,请问为什么会出现这些问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句