PowerPoint(或Excel)VBA捕获鼠标点击坐标

2023-12-07

一些背景:

简单的背景是,我正处于构建 PowerPoint 加载项的研究阶段。我的最终目标是开发 CAD 尺寸标注插件来帮助加快工程演示的创建。我们必须做大量的“PowerPoint 工程”,其中组件的一般尺寸显示在使用 PPT 形状或 CAD 几何本身的屏幕截图创建的所述组件的简化版本上。但一遍又一遍地创建维度是很乏味的。每一条通常由一个箭头、两条线和一个带有尺寸值的文本框组成。

这是我需要帮助的地方。

(如果您知道如何在 Excel 中执行以下操作,那也可以,稍后我将努力找出 PPT 等效项。)

在 PowerPoint 幻灯片中,在设计模式(即非幻灯片放映模式)下,我想要执行以下工作流程:

  1. 在打开的用户窗体中,用户单击名为“START”的按钮
  2. 该代码开始侦听幻灯片本身字段中的鼠标左键单击 (LMC)(它不应该响应实际用户窗体上的 LMC,例如,如果用户需要将用户窗体拖开)
  3. 在 LMC 上,光标的坐标记录为 (x1,y1)
  4. 重复步骤 2 和 3 记录 (x2, y2)
  5. 用这些坐标做一些事情(例如,在两个坐标之间绘制一个尺寸

我相信我可以处理除第 2 步之外的所有编码,这就是我在这里的原因。我很难找到起点。具体来说,我需要帮助如何聆听 LMC。简而言之,设想如下:

While Listening:
  If LMC = TRUE
    Do Stuff
  End If
End While 

但我没有编码的知识While Listening部分。我需要朝正确的方向推动。

我的搜索让我找到了MouseDownMSDN 上的事件处理程序页面,但在我的测试中,我认为这不是我需要的。看起来好像MouseDown旨在当鼠标按下用户窗体中的命令按钮时启动例程。

我还发现了这篇文章,其中唯一的答案似乎暗示如果不竭尽全力这是不可能的,并且代码可能对文件本身有害:如何在Excel VBA中记录鼠标点击?。 (我可以不遗余力地投入工作,但如果生成的代码很可能会造成损害,正如帖子似乎暗示的那样。)(此外,OP 被否决,没有任何解释,也许有人可以告诉我为什么,这样我就不会犯同样的错误。)


您可以通过执行以下操作来完成您想要做的事情(底部部分可能对您最有帮助): 首先,声明以下内容:

Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Public Const MOUSEEVENTF_RIGHTUP As Long = &H10

以下代码片段将允许您单击、双击或右键单击:

Private Sub SingleClick()
  SetCursorPos 100, 100 'x and y position
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Private Sub DoubleClick()
  'Double click as a quick series of two clicks
  SetCursorPos 100, 100 'x and y position
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Private Sub RightClick()
  Right Click
  SetCursorPos 200, 200 'x and y position
  mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
End Sub

您所需要做的就是将光标位置更改为屏幕上的坐标。 为此,我使用以下代码创建了一个新宏,并将其分配给“Ctrl+Y”按钮。这将告诉您当前鼠标位置的坐标。

Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Type POINTAPI
    x As Long
    y As Long
End Type

Sub CurosrXY_Pixels()

    Dim lngStatus As Long
    Dim typWhere As POINTAPI

    lngStatus = GetCursorPos(typWhere)
    MsgBox "x: " & typWhere.x & Chr(13) & "y: " & typWhere.y, vbInformation, "Pixels"

End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerPoint(或Excel)VBA捕获鼠标点击坐标 的相关文章

  • 在 powershell 中打开 Excel 时出错

    我需要用以下命令打开 Excel 文件CorruptLoad来自 powershell 脚本的参数 但是当我尝试做到这一点时 出现错误Exception calling Open with 15 argument s open method
  • 如何修复日期过滤器 VBA,因为它没有拾取我范围内的所有日期

    我正在尝试创建一个过滤器来过滤掉我选择的日期内的所有日期 我选择的日期将始终反映整个月 例如 如果我需要 2019 年 5 月的数据 我将输入开始日期为 01 05 2019 结束日期为 31 05 2019 我的数据过滤器将需要选取经过我
  • Access / Word 2010 VBA 邮件合并尝试打开 [文件夹名称].mdb 而不是 ACCDB 源

    我们正在尝试从 Access 中自动执行邮件合并过程 单击按钮后 VBA 将运行指定当前数据库 accdb 作为数据源并运行 SQL 具体代码如下 Set up Word Dim objWord As Object Set objWord
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • 如何隐藏组合框下拉列表中的列?

    我正在 Excel 用户窗体中构建一个 ComboBox 该用户窗体从 Access 表中获取其行 我想在下拉列表中向用户显示多个文本字段 但从 ComboBox 返回的值应该是与用户选择的行关联的 ID 号 即 ID 列是绑定列 但我不想
  • Excel 的 VBA - 如何检查范围的交集不为空

    我有两个问题 1 如何检查交集或范围是否不为空 例如 如果我想检查它是否为空 我会写 if application intersect r1 r2 is nothing 但有什么东西是否定虚无的吗 例如 并非没有任何事情不起作用 2 如何比
  • 在用户窗体终止/关闭 VBA 时调用数组

    我有一个问题 我想在用户窗体关闭时将用户窗体的内容存储在数组中 我认为我的语法正确 但似乎不会在用户窗体初始化时重新填充 我尝试将数组放入其自己的模块中 但这也不起作用 有人愿意启发我吗 示例代码 Public Sub DPArrayStu
  • 了解从 MsgBox 返回的响应代码

    我对编程很陌生 我刚刚开始学习 VBA 和 Excel 我在这个网站上遇到并做了这里的例子 但我对这段代码有疑问 我知道变量是使用 Dim 语句声明的 Message 这里是数据类型为整数的变量 我不太明白的是 这里的 6 和 7 是什么意
  • Excel 公式从单元格中获取字符串值并按字母顺序对其字符进行排序

    你能帮我制作一个 Excel 公式 从单元格中获取字符串值并按字母顺序对其字符进行排序吗 Ex 原始单元格值 BACR 已排序的字符单元格 ABCR 编辑 2022 年 4 月 29 日 随着 Office 365 Excel 中引入的动态
  • 循环浏览文件夹中的工作簿

    我正在尝试从文件夹中的所有工作簿复制某些单元格 下面的代码仅循环遍历第一个文件 VBA 新手 欢迎任何帮助 提前致谢 Sub Get Data Dim Directory As String Dim Filename As String D
  • 将 CURL 命令行转换为 VBA

    在 CURL 中 我可以使用这一行 curl data DataToBeSent https example com resource cgi 我正在努力将此类行转换为在 VBA 中使用 这是我到目前为止的尝试 Sub POST Metho
  • 如何使用 C# 了解 Excel 中的分页符 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 C 创建并格式化 Excel 电子表格 因此我需要格式化 合并单元格 更改字体等 直到第一页的最后 如何知道 Excel 电子
  • 防止在单元格中更改行时重新格式化字符

    我有一个带有格式化文本的单元格 其中包含我想要用行更改替换的某个子字符串 子字符串是带有方括号的 enterkey 这是这个问题的一个变体在 Excel 中将 HTML 标记 替换为 Alt Enter https stackoverflo
  • 如何从另一个工作簿(excel)复制数据?

    我已经有一个可以创建工作表和其他一些东西的宏 创建工作表后 我是否想调用另一个宏 将数据从第二个 Excel 其打开 复制到第一个活动 Excel 文件 首先 我想复制到标题 但我无法让它工作 不断出现错误 Sub CopyData she
  • 打开特定工作表上的 Excel 文件

    我有一个包含 5 个工作表的 Excel 文件 我想用 C 代码打开它 当它打开时 我希望激活第 3 页 我怎样才能做到这一点 像这样 using Excel Excel Application excelApp new Excel App
  • 绘制持续时间图表

    从我在写这篇文章之前所做的阅读中 我相当确定我需要创建甘特图 但我不知道这是否是正确的路线 需要将开始时间和结束时间的数据作为一个单位绘制在 Excel 图表上 Y 轴为日期 X 轴为一天中的小时 开始时间和结束时间的格式是 Excel 数
  • VBA复制单元格值和格式

    我如何修改以下代码以便不仅复制值而且复制字体样式 例如大胆或不大胆 谢谢 Private Sub CommandButton1 Click Dim i As Integer Dim a As Integer a 15 For i 11 To
  • 根据单元格值返回图像(100 张图像和可变单元格)

    我正在尝试为我制作一个 TFT 云顶之弈 表 并想让它看起来更好 为此 我想添加游戏中冠军的图像 当我输入名称时 图像应该出现在下面 我找到了一种将所有图像插入 Excel 工作表 100 的方法 并且还成功制作了一个动态图像 插入 IND
  • VBA Excel如何在文本框中写入Excel公式

    如何将Excel公式放入文本框中 我尝试过这样的事情 Sub CivBox With ActiveSheet Shapes Civils 3 Copy C26 Activate Paste Shapes Shapes Count Name
  • Excel:COUNTIF 函数将“小于”字符视为运算符

    预读说明 我使用的是 LibreOffice 而不是 Excel 但大多数功能应该适用于两者 我正在制作一个电子表格 其中有大量数据 对于每个属性 例如员工数量或姓名 我需要一个函数来计算包含每个不同值的行数 我已经提取了不同的值 现在我使

随机推荐

  • 通过触摸或手势识别移动 RecyclerView

    我正在尝试移动和扩展 RecyclerView 以便内容在触摸输入的基础上占据全屏 我希望 RecyclerView 保持左右滚动的能力 我无法让 GestureDetector 与 RecyclerView 一起正常工作 捕获 onScr
  • iOS:在 uiimage 上具有发光/阴影效果的羽毛

    我正在尝试找到一种方法来应用带有阴影的羽毛效果UIImage not UIImageView我在iOS上遇到过 目前还没有找到完美的解决方案 我有一个想法 这可以通过屏蔽来完成 但我对这很陌生CoreGraphics 如果有人可以帮忙的话
  • 使用 django:代理设置

    我有一个使用 apache 的本地开发 django 设置 问题是 在部署服务器上没有代理 而在我的工作场所 我在 http 代理后面工作 因此请求调用失败 有没有什么方法可以使请求库中的所有调用都通过代理进行 我知道如何使用代理参数向各个
  • Spring事务通过连接多个数据库

    我正在尝试开发一个小程序 在该程序中我可以使用 Spring 连接到多个数据库 并尝试通过在 weblogic 服务器上部署我的 Web 应用程序来使用 Spring 事务 问题是事务管理无法正常工作 我试图在两个数据库中插入记录 第一个数
  • Identity Core 主键为 Int 无法使用 SignInManager

    我想做的是 使用 Identity Core 设置登录 注销 主键为 Int 我按照 ASP NET Core 文档中的以下文章进行操作 配置身份主键数据类型 他们使用 GUID 但想法是相同的 设置非常成功 ID 是整数并且数据库正在填充
  • 如何阻止递归复合组件递归地包含自身

    是否可以有一个具有 ui repeat 的 JSF 组件 并且在重复中调用相同的组件 这是因为我正在构建问题树
  • 使用vbscript将汉字写入文本文件

    我正在尝试使用以下命令将一些汉字写入文本文件 Set myFSO CreateObject Scripting FileSystemObject Set outputFile myFSO OpenTextFile getOutputName
  • Struts2中的tiles.xml中是否可以有动态值

    是否可以像在 Struts2 中的 struts xml 中那样在tiles xml 中传递动态值 我已经使用 parameter 来获取配置文件中的动态值 但它似乎不起作用 有任何想法吗 您可以将通配符从 struts 操作传递给图块 我
  • python 和 sqlite3,检查我是否可以使用 fts5 扩展?

    我最近发现FTS5扩展已发布 检查我的应用程序是否可以在用户系统上使用它的最佳方法是什么 只需检查 python3 版本 或根据 sqlite3 sqlite version 检查发布页面 或者是其他东西 这是之前对OP帖子的编辑 但我将其
  • 如何获取子元素的个数?

    我正在尝试计算 div 中具有 test 类的元素数量 我有 div ddd div class test 111 div another div div div div class test 222 div div class test
  • 将常量整数添加到 python 字典中的值

    如果满足某些条件 如何将常数 例如 1 添加到字典中的值中 例如 如果我有一本字典 dict 0 3 1 3 2 4 3 4 4 4 如果我只是想将整数 1 添加到字典中的每个值 那么它将更新 dict 如下 dict 0 4 1 4 2
  • 使用 Here 地图在 Android 中添加下载离线地图

    我已经开发了一个 Android Here 地图 它有一个简单的地图视图 但我需要向应用程序添加离线支持 如何将其添加到我的应用程序中以便让用户下载特定的国家或地区 请注意 我使用以下链接中的教程实现了我的应用程序 https develo
  • Eclipse 中奇怪的自动生成的 getter 和 setter

    当我在 Eclipse 中使用自动生成 getter setter 来生成名称如下的类字段时 String lAttr它会产生这个 public String getlAttr return lAttr public void setlAt
  • 为什么 sizeof(string) == 32?

    导致 sizeof 为 32 的字符串结构中的开销是多少 Most modern std string implementations1 save very small strings directly on the stack in a
  • 获取 android home widget 中 TextView 的文本(不在 Activity 中)?

    我刚刚开始使用 android home widget 进行编程 因此我可以通过 settextviewtext 从我的 widget 提供程序将文本设置为 home widget 中的文本视图 但是当我想从中获取文本时 我没有理想的 无法
  • 使用 C++ 在 Qt3D 中创建多个视口时出现问题

    我正在尝试使用 C 设置具有多个视口的 Qt3DWindow 根据文档和提供了 QML 示例 我需要做的就是创建一个框架图 其中一个主要的 QViewport 对象分支为几个 RenderView 第一个 RenderView 包含 QCl
  • ARM-CPU 是否需要特殊的指针修饰来进行未对齐访问?

    支持未对齐内存访问的 ARM CPU 是否需要特殊的指针修饰来实现 C C 中的未对齐访问 或者我可以使用每个指针进行未对齐访问吗 或者这取决于编译器 简而言之 这是依赖于编译器的 因为 C 标准没有涵盖它 然而 正如评论中所指出的 一些
  • 将静态数据绑定为字典键

    如何将字典静态数据绑定为字典键 我的 XAML 代码
  • 应该将composer.lock提交给版本控制吗?

    我有点困惑composer lock在带有存储库的应用程序中使用 我看到很多人说我们不应该 gitignore composer lock从存储库中 如果我在我的开发环境中更新我的库 我将有一个新的composer lock但我无法将它们更
  • PowerPoint(或Excel)VBA捕获鼠标点击坐标

    一些背景 简单的背景是 我正处于构建 PowerPoint 加载项的研究阶段 我的最终目标是开发 CAD 尺寸标注插件来帮助加快工程演示的创建 我们必须做大量的 PowerPoint 工程 其中组件的一般尺寸显示在使用 PPT 形状或 CA