如果通过按钮调用,则VBA Excel代码有效,但如果通过函数调用,则无效

时间:2018-09-13 10:21:49

标签: excel vba function

我正在尝试使用功能打开文件。如果我通过按钮调用相同的代码,则该代码也有效。该文件将打开,我可以对其进行修改,也可以不保存将其关闭。但是,如果我使用该函数调用的相同代码,则该文件将不会打开。为什么?遵循按钮和功能使用的代码。有人可以帮我吗?这仅仅是我所需要的开始。详细说明,使用此功能,我需要打开一个CSV文件,修复CSV文件,使用Dlookup提取数据并将此数据写入我调用该函数的单元格中。如果我通过按钮调用我的代码,但是如果我使用单元格中的函数调用它,则无法使用

Sub Button1_Click()

Dim path As String
Dim xl As Excel.Application
Dim wk As Excel.Workbook

path = ActiveWorkbook.path & "\Book1.xlsm"

Set xl = Excel.Application
Set wk = xl.Workbooks.Open(path)
    xl.Visible = True
    wk.Activate
    xl.DisplayAlerts = False

Range("B2").Select
Range("B2").Value = "hello world"

wk.Saved = False
wk.Close    
  Set wk = Nothing
End sub

Public Function aprifile()
Dim path As String
Dim xl As Excel.Application
Dim wk As Excel.Workbook

path = ActiveWorkbook.path & "\Book1.xlsm"

Set xl = Excel.Application
Set wk = xl.Workbooks.Open(path)
    xl.Visible = True
    wk.Activate
    xl.DisplayAlerts = False

Range("B2").Select
Range("B2").Value = "hello world"

wk.Saved = False
wk.Close    
  Set wk = Nothing
End Function

1 个答案:

答案 0 :(得分:-1)

这里有两件事。

首先,我将事物设置为Sub而不是Function,因为您未返回任何内容。

显式选项

公共Sub aprifile()

作为字符串的昏暗路径   Dim xl作为应用程序   昏暗的工作簿

path = ActiveWorkbook.path和“ \ Book1.xlsm”   如果Len(Dir $(path))> 0然后

Set xl = Excel.Application
Set wk = xl.Workbooks.Open(path)
xl.Visible = True
wk.Activate
xl.DisplayAlerts = False

wk.ActiveSheet.Range("B2").Select
wk.ActiveSheet.Range("B2").Value = "hello world"

wk.Saved = False
wk.Close
Set wk = Nothing

如果结束 结束

第二件事是我放置了“ wk.ActiveSheet”以确保我写的是正确的工作表。没有这些,我发现我正在写错工作簿。

您所做的另一件事是,我检查了文件是否存在。我发现我的第一次跑步并没有,因此可能会为您提供线索。

但是,我可以向您保证此代码有效,因为我刚刚在这里完成了此操作。

希望这会有所帮助   马尔克