Excel 打开工作簿时运行宏

Excel 打开工作簿时运行宏,excel,vba,Excel,Vba,我已经查过了。最相关的建议是打开工作簿的宏名称 但我仍然必须手动调用该模块。这是我的代码。欢迎任何其他建议,因为这是我73岁时的第一个vba脚本 Sub Workbook_Open() Dim lastRow As Long 'last row with data Dim thisDate As Double 'start timestamp thisDate = Now() With Sheets("Pressure Log") lastR

我已经查过了。最相关的建议是打开工作簿的宏名称 但我仍然必须手动调用该模块。这是我的代码。欢迎任何其他建议,因为这是我73岁时的第一个vba脚本

Sub Workbook_Open()  
  Dim lastRow As Long     'last row with data  
  Dim thisDate As Double  'start timestamp  
  thisDate = Now()  
  With Sheets("Pressure Log")  
    lastRow = .Range("B" & .Rows.Count).End(xlUp).Row 'populate next row with date/time  
    Range("B" & lastRow).Offset(1) = Format(thisDate, "dddd")  
    Range("B" & lastRow).Offset(1, 1) = Format(thisDate, "mm/dd/yyyy")  
    Range("B" & lastRow).Offset(1, 2) = Format(thisDate, "hh:mm AM/PM")  
    Range("B" & lastRow).Offset(1, 3).Select 'position for user data  
  End With  
End Sub  

在Visual Basic编辑器VBE中,调出项目资源管理器Ctrl+R,然后双击ThisWorkbook模块或右键单击该模块并选择“查看代码”:

这将使ThisWorkbook模块的代码落后。此工作簿表示承载VBA项目的工作簿;它是一种特殊类型的模块,继承Excel.Workbook类的所有成员,该类可以表示任何Excel工作簿

在“代码”窗格的顶部,您将注意到两个下拉列表:

从左侧下拉列表中选择工作簿;VBE会自动为打开的事件生成事件处理程序过程:

请注意右边的下拉列表现在显示为“打开”-如果单击该下拉列表,您会发现它列出了工作簿可以处理的每个事件;选择一个将自动生成具有正确签名/原型的方法

现在,将您的代码放入事件处理程序过程中,保存-设置完毕!下次在启用宏的情况下打开工作簿时,将调用该事件处理程序,并运行宏


玩得开心!学习永远不嫌晚

除了Mathieu的答案之外,还有一种在打开工作簿时运行代码的方法:您可以在标准模块中创建自动打开过程。警告此功能可以在Office的下一个版本中删除,但它仍然有效!您需要将其放入工作簿的代码中。此工作簿是默认值。您好,欢迎使用堆栈溢出。你能澄清你看到的是什么问题吗?文件打开时宏是否不执行?感谢您的及时反馈-Eliot K。是的,问题是打开工作簿时宏不执行。共产国际:我不明白代码隐藏的意思。对不起。我应该在哪里查找此工作簿?我在开发者选项卡中。到目前为止,我使用的两个选项是VisualBasic,它将上面的代码显示为“Module1”和宏,其中列出了“Workbook\u Open”,并为我提供了运行、编辑等选项。谢谢这似乎是我应该具备的基本素养。你有没有进一步阅读的建议?@grNadpa各种博客就是其中之一,也是一个相当受欢迎的资源。我也有,但它更高级,面向对象的东西虽然可以帮助定位一些代码问题,但是有一些bug和一些检查误报可能会让你失望。我个人的建议是探索一切,点击所有按钮,看看一切都是什么——你不能真的破坏任何东西-好你可以破坏东西,但你必须非常努力才能让它被无可挽回地破坏。一个术语背后的代码是为另一种语言借用的吗?跨语言使用的松散术语?是更常见的术语代码窗格吗+