使用Go OLE绑定创建MS Word文档

奥西斯

我一直在玩耍,学习如何以编程方式制作Word文档。我知道可以使用轻松完成pywin32这个简单的代码片段在新的Word文档中检索默认的Visual Basic“代码”。

import win32com.client
 
word = win32com.client.Dispatch("Word.Application")
word.Visible = True
document = word.Documents.Add()
document.VBProject.Name = "TEST"
wordModule = document.VBProject.VBComponents("ThisDocument") # WORKS

input()

然后,您可以将VB代码添加到wordModule

我想用Golang做同样的事情。Go的OLE绑定,代码在Github上-> https://github.com/go-ole/go-ole

它对用户的友好程度有所降低,但我设法使其正常工作,除了我无法检索default VBComponents

默认代码位于“ ThisDocument”中,并且可以用简单的python代码检索,document.VBProject.VBComponents("ThisDocument")除了它在Go中不起作用外。您可以在下面的代码中看到我尝试使用多种方式获取“ ThisDocument”,而没有成功。每次,错误消息是panic: Unknown name.

// +build windows

package main

import (
    "fmt"

    ole "github.com/go-ole/go-ole"
    "github.com/go-ole/go-ole/oleutil"
)

func main() {
    defer ole.CoUninitialize()

    ole.CoInitialize(0)
    unknown, _ := oleutil.CreateObject("Word.Application")
    word, _ := unknown.QueryInterface(ole.IID_IDispatch)
    oleutil.PutProperty(word, "Visible", true)

    documents := oleutil.MustGetProperty(word, "Documents").ToIDispatch()
    document := oleutil.MustCallMethod(documents, "Add").ToIDispatch()

    vbproject := oleutil.MustGetProperty(document, "VBProject").ToIDispatch()
    oleutil.PutProperty(vbproject, "Name", "TEST")

    // oleutil.MustCallMethod(vbproject, "VBComponents", "ThisDocument").ToIDispatch() --> panic: Unknown name.

    // oleutil.MustGetProperty(vbproject, "VBComponents", "ThisDocument").ToIDispatch() --> panic: Unknown name.

    // vbcomponents := oleutil.MustGetProperty(vbproject, "VBComponents").ToIDispatch()
    // oleutil.MustGetProperty(vbcomponents, "ThisDocument").ToIDispatch() --> panic: Unknown name.

    var input string
    fmt.Scanln(&input)

    oleutil.PutProperty(document, "Saved", true)
    oleutil.CallMethod(documents, "Close", false)
    oleutil.CallMethod(word, "Quit")
    word.Release()
}

有什么想法为什么不起作用?非常感谢。

奥西斯

原来"github.com/go-ole/go-ole"在使用时存在错误ForEachVBComponetsCollection,因此您必须按照Microsoft doc所述进行迭代

使用VBComponents集合可以访问,添加或删除项目中的组件。组件可以是表单,模块或类。VBComponents集合是一个标准集合,可以在For ... Each块中使用。

此行-> https://github.com/go-ole/go-ole/blob/master/oleutil/oleutil.go#L106应该替换为

newEnum, err := disp.CallMethod("_NewEnum")

现在它可以按预期工作了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Python自动创建空白的Word文档

来自分类Dev

如何使用HTML Android创建Word文档

来自分类Dev

通过使用VSTO创建的MS Word加载项在内存中打开Word文档

来自分类Dev

如何使用OLE自动化关闭Word文档?

来自分类Dev

使用VBA宏创建Word文档,然后在Word文档中运行宏...。

来自分类Dev

使用 Excel 中的嵌入 Word 文档(后期绑定)

来自分类Dev

使用Aspose以编程方式编辑MS Word文档

来自分类Dev

使用webdav和asp .net mvc打开MS Word文档

来自分类Dev

如何使用ColdFusion创建将呈现日语字符的MS Word文档?

来自分类Dev

从代码创建Word文档

来自分类Dev

如何使用Java在Word文档中创建动态表

来自分类Dev

如何使用Java在Word文档中创建动态表

来自分类Dev

使用VBA在Access中创建Word文档中的表

来自分类Dev

Delphi XE7使用EmptyParam通过OLE Auto打开Word2010文档

来自分类Dev

MS Word文档中的变量

来自分类Dev

创建新的空Word文档

来自分类Dev

使用模板生成Word文档

来自分类Dev

使用JSP上传Word文档

来自分类Dev

如何使用MS Access中触发的VBA更改MS Word文档中形状的颜色?

来自分类Dev

使用Perl / Batch / Python更新MS Word文档的详细信息“内容状态”

来自分类Dev

使用Perl / Batch / Python更新MS Word文档的详细信息“内容状态”

来自分类Dev

如何使用docx库从MS Word文档中的表中提取图像?

来自分类Dev

如何在不使用宏的情况下在MS Word中查找文档变量

来自分类Dev

使用VBA在文件夹中的所有文档中查找和替换MS Word文本

来自分类Dev

在同一文档中使用2种不同的页码格式-MS Word 2013

来自分类Dev

如何使用vb.net以编程方式处理MS Word文档(.docx)?

来自分类Dev

使用Perl / Batch / Python更新MS Word文档的详细信息“内容状态”

来自分类Dev

使用hadoop处理各种文档(pdf,ppt,MS word,纯文本等)的可搜索存档的最佳做法

来自分类Dev

如何在 Ms word 文档中使用不同的颜色主题?

Related 相关文章

  1. 1

    使用Python自动创建空白的Word文档

  2. 2

    如何使用HTML Android创建Word文档

  3. 3

    通过使用VSTO创建的MS Word加载项在内存中打开Word文档

  4. 4

    如何使用OLE自动化关闭Word文档?

  5. 5

    使用VBA宏创建Word文档,然后在Word文档中运行宏...。

  6. 6

    使用 Excel 中的嵌入 Word 文档(后期绑定)

  7. 7

    使用Aspose以编程方式编辑MS Word文档

  8. 8

    使用webdav和asp .net mvc打开MS Word文档

  9. 9

    如何使用ColdFusion创建将呈现日语字符的MS Word文档?

  10. 10

    从代码创建Word文档

  11. 11

    如何使用Java在Word文档中创建动态表

  12. 12

    如何使用Java在Word文档中创建动态表

  13. 13

    使用VBA在Access中创建Word文档中的表

  14. 14

    Delphi XE7使用EmptyParam通过OLE Auto打开Word2010文档

  15. 15

    MS Word文档中的变量

  16. 16

    创建新的空Word文档

  17. 17

    使用模板生成Word文档

  18. 18

    使用JSP上传Word文档

  19. 19

    如何使用MS Access中触发的VBA更改MS Word文档中形状的颜色?

  20. 20

    使用Perl / Batch / Python更新MS Word文档的详细信息“内容状态”

  21. 21

    使用Perl / Batch / Python更新MS Word文档的详细信息“内容状态”

  22. 22

    如何使用docx库从MS Word文档中的表中提取图像?

  23. 23

    如何在不使用宏的情况下在MS Word中查找文档变量

  24. 24

    使用VBA在文件夹中的所有文档中查找和替换MS Word文本

  25. 25

    在同一文档中使用2种不同的页码格式-MS Word 2013

  26. 26

    如何使用vb.net以编程方式处理MS Word文档(.docx)?

  27. 27

    使用Perl / Batch / Python更新MS Word文档的详细信息“内容状态”

  28. 28

    使用hadoop处理各种文档(pdf,ppt,MS word,纯文本等)的可搜索存档的最佳做法

  29. 29

    如何在 Ms word 文档中使用不同的颜色主题?

热门标签

归档