Excel 如何使用VBA刷新单元格?

Excel 如何使用VBA刷新单元格?,excel,vba,Excel,Vba,我正在使用中出现的所有解决方案: 或 或 它们都不能在Excel 2010中工作。当我转到单元格并右键单击“刷新”时,它会工作。如何在VBA中刷新 工作表(“工作表名称”)。范围(“D424”)。刷新 例外438 问题: 如何使脚本支持Excel 2003、2007、2010 如何使用VBA选择要刷新的源文件 编辑: 我想模拟鼠标右键单击,然后在工作表3的菜单中选择“刷新”。这就是整个故事 我处理10年前创建的Excel文件。在Excel 2010中打开时,我可以转到一个单元格,右键单击它并

我正在使用中出现的所有解决方案:

它们都不能在Excel 2010中工作。当我转到单元格并右键单击“刷新”时,它会工作。如何在VBA中刷新

工作表(“工作表名称”)。范围(“D424”)。刷新

例外438

问题:

  • 如何使脚本支持Excel 2003、2007、2010
  • 如何使用VBA选择要刷新的源文件
  • 编辑:

  • 我想模拟鼠标右键单击,然后在
    工作表3
    的菜单中选择“刷新”。这就是整个故事

  • 我处理10年前创建的Excel文件。在Excel 2010中打开时,我可以转到一个单元格,右键单击它并选择“刷新”,然后选择要刷新的.txt文件。我正在尝试在VBA中自动执行此操作


  • 您可以尝试使用

    Application.Calculation = xlCalculationManual
    Application.Calculation = xlCalculationAutomatic
    

    对于单个单元格,您可以使用:

    范围(“D13”)。计算


    我最终使用鼠标事件和按键来完成:

    Sheets("worksheet34").Select
    Range("D15").Select
    Application.WindowState = xlMaximized
    SetCursorPos 200, 600 'set mouse position at 200, 600
    Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0) 'click left mouse
    Application.SendKeys ("R")
    
    只是一个提醒

    使用时要小心

    Application.Calculation = xlCalculationManual
    Application.Calculation = xlCalculationAutomatic
    
    这会将整个excel应用程序设置为自动或手动计算公式。如果你使用

    Application.Calculation = xlCalculationManual
    
    您会注意到自动公式不再有效


    干杯

    应用程序。计算
    对我的函数不起作用。即使后跟
    DoEvents
    也不行

    我发现有效的方法是在单元格中重新输入公式。 获取公式的一种简单方法是开始记录
    ,使用
    F2
    编辑单元格,然后按
    enter
    。宏将生成一个包含所有所需引号的函数文本的伟大副本

    下面是一个例子

    Sheets("Name_of_sheet").Range("D424").FormulaR1C1 = "=now()"
    

    不太管用。。。也许是因为我的第二个问题。如何选择使用VBA刷新源文件?@0x90您可以尝试
    Application.Calculate
    。我不太明白你的第二个问题。细胞现在如何从哪里获取数据?这样它就知道该放什么了?你能发布代码的其他部分吗,或者解释一下你的工作流程吗?你是如何加载电子表格的,以及你是如何尝试从另一个s/s中的代码刷新一个s/s的?请提供更多详细信息,但是否启用了宏?如果您在应用程序级别启用计算,但从原始工作簿打开了一个电子表格,那么您可能计算了错误的工作簿。@SiddharthRout是的:)您需要向我们展示您的代码。你列出的所有方法都有效,所以你做错了其他事情。我今天遇到了这个问题,并尝试了本页上的所有其他答案。然后我看到了这个,它提醒我,我可以在excel中记录宏。man…excel是一个PITA。@这确实是记录宏的一个选项…:)您使用的是什么版本的Excel?
    Sheets("worksheet34").Select
    Range("D15").Select
    Application.WindowState = xlMaximized
    SetCursorPos 200, 600 'set mouse position at 200, 600
    Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0) 'click left mouse
    Application.SendKeys ("R")
    
    Application.Calculation = xlCalculationManual
    Application.Calculation = xlCalculationAutomatic
    
    Application.Calculation = xlCalculationManual
    
    Sheets("Name_of_sheet").Range("D424").FormulaR1C1 = "=now()"