从VBA访问串口的最佳方法是什么?
我需要一些销售代表能够通过PowerPoint中的操作按钮在串口上发送一个简单的字符串.我通常不使用VBA,特别是对于这样的事情.通常我会把它变成某种应用程序,但我实际上并不认为这个想法很糟糕.这将是一个方便的工具,他们可以在投影仪上演示这个设备,并与其他销售人员和非技术人员交谈.此外,这个销售人员对VBA或PowerPoint演示文稿进行小的修改没有问题,但是重新编译.NET应用程序也不会有任何问题.
我知道我们可以通过从动作演示文稿中运行的批处理文件来完成它,但这并不能让我感到非常高兴.我想我们可能会访问一个COM对象并从那里运行,但是我再也没有真正了解在VBA中使用的最新和最好的库,并且如何轻松打开一个快速的小入门也很好,发送和关闭连接.
由于这需要在多人的计算机上运行,如果它可以轻松地传输到其他机器,那将是很好的.我应该可以说它必须在Office 2007和Windows XP上运行.与其他任何东西的兼容性都是一个很好的奖励.
我该怎么办呢?任何好的提示或技巧?图书馆建议?
我正在使用以下代码在Excel中打开并显示工作簿:
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open('my_sheet.xlsm')
ws = wb.Worksheets('blaaaa')
excel.Visible = True
Run Code Online (Sandbox Code Playgroud)
当文件'my_sheet.xlsm'已经打开时,Excel会询问我是否要在不保存的情况下重新打开它.
我如何提前检查工作簿是否已经打开,如果是,请将其带到前面?
编辑:现在发现:
if excel.Workbooks.Count > 0:
for i in range(1, excel.Workbooks.Count+1):
if excel.Workbooks.Item(i).Name is 'my_sheet.xlsm':
wb = excel.Workbooks.Item(i)
break
Run Code Online (Sandbox Code Playgroud)
还有一个问题:我的工作表包含一些标题,我启用了一些过滤.因此,当设置过滤器时,以及当我从Python打开工作簿时,它有时会要求我输入一个唯一的名称来保存过滤器.这是为什么?这是对话:
编辑好了这里它说(用德语)后一个问题是2007年和2010年文件中的已知错误:https://social.msdn.microsoft.com/Forums/de-DE/3dce9f06-2262-4e22-a8ff- 5c0d83166e73/excel-api-interne-namen,如果以编程方式打开Excel-Files,它似乎存在.不知道是否有解决方法.
我正在创建一个C#库,并将向它公开一个COM接口.
我理解要做的这些步骤,即
[assembly: Guid("dde7717b-2b75-4972-a4eb-b3d040c0a182")][GuidAttribute("4df74b15-d531-4217-af7e-56972e393904")]我的问题是这个.如果我定义了部分类.我是否需要GuidAttribute将这两个类添加到这些类中?
事实上,考虑到这一点,我猜这个问题适用于任何属性(例如Serializable).
任何帮助,将不胜感激.谢谢.
我已经阅读并看到了COM的示例,但是我不能清楚地看到那里的接口差异。
com ×2
c# ×1
c++ ×1
excel ×1
identity ×1
powerpoint ×1
python ×1
serial-port ×1
vba ×1
visual-c++ ×1
winapi ×1