我现在用Google搜索了近一天,无法找到我想要的东西!
我在Excel工作表上创建了一个按钮。我希望此按钮从浏览器对话框中打开.xls文件。我已经设法找到下面的程序代码,但它在一个新工作簿中打开我的.xls。
我希望.xls文件在与按钮相同的工作表中的特定单元格中打开。例如,我的按钮放在我的sheet1中的单元格B8中。我想在它下面打开.xls文件 - 在同一个sheet1的单元格B9中
还有一件事,当我按下按钮并按“取消”时,我不希望它打印“FALSE”。
以下是我找到的代码:
Sub Knapp1_Klicka()
objFile = Application.GetOpenFilename(fileFilter:="All Files (* . *) , * . * ")
Set curSheet = ActiveSheet
Set mWorkbook = Workbooks.Open(objFile)
curSheet.Activate
Call someFunction(curSheet, mWorkbook)
End Sub
Sub someFunction(targetSheet, srcWorkbook)
numSheets = srcWorkbook.Sheets.Count
For i = 1 To numSheets
targetSheet.Cells(i, 1) = srcWorkbook.Sheets(i).Name
Next i
End Sub
答案 0 :(得分:0)
要处理取消事件,您需要检查Application.GetOpenFileName
的结果是否是有效文件名。您可以使用Dir
函数执行此操作。
总是声明变量也很有帮助。
Sub TryMe()
Dim objFile as String
Dim curSheet as Worksheet
Dim mWorkbook as Workbook
objFile = Application.GetOpenFilename(fileFilter:="All Files (* . *) , * . * ")
If Len(Dir(objFile)) = 0 Then Exit Sub 'handles the "Cancel" event
Set curSheet = ActiveSheet
Set mWorkbook = Workbooks.Open(objFile)
'Copy the values from the activesheet in this workbook:
ActiveSheet.UsedRange.Copy Destination:=curSheet.Range("B9")
End Sub
请注意,如果您在工作簿中使用非常大的范围,则此方法可能会失败,因为它无法复制整个工作表并粘贴到范围B9
,但这种情况发生的可能性似乎很低(基本上如果mWorkbook
工作表在所有列和行中完全充满了数据,就会发生这种情况。