如何通过MS Access VBA将文本/树节点值复制到Windows剪贴板
MS Access VBA 复制指定文本到系统剪贴板(TreeView节点场景适配)
失败原因
DoCmd.RunCommand acCmdCopy为Access内置模拟复制命令,仅支持复制当前获得焦点控件原生暴露的可选中内置文本。TreeView树控件的节点路径属于节点属性值,不属于控件原生支持复制的选中文本范畴,即便执行SetFocus让控件获得焦点,命令也无法读取Me.NodeKey.Value的取值,因此无法写入剪贴板。
执行MsgBox Me.NodeKey.Value可正常弹出内容,证明节点取值逻辑本身无异常,无需调整树控件相关的取值代码。
最简实现方案
无需声明复杂Windows API,无需提前加载VBA引用,3行代码即可实现和预期clipboard.SetText逻辑一致的效果,兼容所有Access版本,复制后的内容可直接粘贴到Word、Excel、记事本等任意支持系统剪贴板的应用:
Dim clipObj As Object Set clipObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") clipObj.SetText Me.NodeKey.Value ' 传入任意需要复制的文本值即可 clipObj.PutInClipboard
注意事项
- 代码可直接嵌入树节点点击事件、自定义复制按钮的点击事件中运行,无需额外配置
- 原生支持中文、特殊字符复制,无乱码问题
- 若后续需要读取剪贴板内容,先执行
clipObj.GetFromClipboard,再通过clipObj.GetText即可获取剪贴板内的文本值
内容的提问来源于stack exchange,提问作者Maestro13
相关产品推荐
相关产品推荐

