如何仅在第一次打开excel文件时运行宏

如何仅在第一次打开excel文件时运行宏,excel,vba,Excel,Vba,我已经为我的excel工作表编写了一些VBA代码。问题是,我希望它只运行一次,即当用户第一次打开它时 如果第二次或多次打开,我希望excel能够正常打开,而不运行VBA代码。如何使用VBA或excel功能执行此操作?简单,为工作表2指定一个特定名称,并将该名称的宏检查作为其第一项任务,如果找到,则结束,如果找不到,则运行其余代码…下面的代码将每天运行一次,创建了另一个工作表来记录事件,就像我在一个名为“事件记录”的工作表中创建了一个时间线一样,然后让我的宏检查该特定日期以下的值。如果值>0,则宏

我已经为我的excel工作表编写了一些VBA代码。问题是,我希望它只运行一次,即当用户第一次打开它时


如果第二次或多次打开,我希望excel能够正常打开,而不运行VBA代码。如何使用VBA或excel功能执行此操作?

简单,为工作表2指定一个特定名称,并将该名称的宏检查作为其第一项任务,如果找到,则结束,如果找不到,则运行其余代码…

下面的代码将每天运行一次,创建了另一个工作表来记录事件,就像我在一个名为“事件记录”的工作表中创建了一个时间线一样,然后让我的宏检查该特定日期以下的值。如果值>0,则宏将不会执行

Private Sub Workbook_Open()
    Dim Sh As Worksheet, i As Long, Cl As Long, Cntr As Long
    Set Sh = ThisWorkbook.Worksheets("Event Recording")

    Cl = Sh.UsedRange.Cells.Find(What:=Date).Column
    Cntr = Sh.Cells(2, Cl)

    If Cntr = 0 Then
        MsgBox "Hi"
    End If

    Sh.Cells(2, Cl) = Cntr + 1
End Sub

将代码存储在XLSM中(这是其中包含代码所必需的)

  • 用户从您的网站下载该代码并将其打开
  • 打开的
    按钮将触发
    
    • 代码执行它当前执行的任何操作
    • 然后,代码将文件保存为XLSX,这将自动删除所有代码,因为代码不能以XLSX格式存储
  • 擦手,工作完成

在excel中的单元格中添加一个标志,每次打开excel时,宏代码都会检查该单元格中的值是否为“1”。如果为“1”,则第一次打开excel,否则更改该单元格的值

代码如下:

Sub Workbook_Open()

Worksheets("your_wsname").Activate

'to check if it the file is being opened for the first time
If Cells(100, 100).Value = "1" Then
'value is blank if opening file for the first time
'if for first time then following happens
Else
    'call your methods here
    'set flag value 1 in one of the methods
End If

End Sub

每天一次还是一次?如果是后者,为什么还要将其作为工作簿打开事件?就一次。你有什么建议?如果你只想运行一次,它听起来不像是工作簿打开事件的作业,因为这里的目的是每次打开书本时都运行它。。。。代码的作用是什么用户从web应用程序下载excel工作表。下载后,工作表1中的数据将被过滤并复制到新创建的工作表2中,工作表1将被隐藏。在此之后,用户只能看到WS2。因此,在这之后,当用户下次打开文件时,他应该能够编辑和保存WS2文件。现在,整个宏再次运行,他无法保存任何新数据,因为筛选过程再次发生。因此,只需在某个位置存储一个标志,并在工作簿打开时检查它。OP需要“每天一次”吗?我知道那只是“一次”。。。