在VB的exe工程里如果调用word中的“插入符号”和“插入公式”对话框?

jtkkjtkk 2005-09-20 02:08:42
要想让插入的东西放到窗体上的RichText里。
...全文
346 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
techgopher 2005-09-30
  • 打赏
  • 举报
回复
这个插入符号功能要自己作太复杂了,还是用现成的好。下面是用Word来做比较快且可靠的办法。相关说明:
1)保持一个Word.Application全局变量,避免多次启用Word。
2)InsertSymbol实际返回一个包含字体及字符两项信息的自定义类型
3)用wd.Dialogs(wdDialogInsertSymbol).CharNum 及 Dialogs(wdDialogInsertSymbol).Font来得到符号的字符及字体。这是最可靠的办法。上面szjhxu(天野)老兄用Range.Text有时候会返回不正确的结果。

'-------------------------------------------
Public Type Symbol
CharCode As Long
Font As String
End Type

Dim wd As Word.Application

Function InsertSymbol() As Symbol
Dim doc As Word.Document, cnt As Integer
Set doc = wd.Documents.Add(Visible:=True)
doc.Activate
wd.Dialogs(wdDialogInsertSymbol).Show
If (doc.Characters.Count > 1) Then
wd.Selection.MoveLeft Extend:=True
InsertSymbol.CharCode = wd.Dialogs(wdDialogInsertSymbol).CharNum And &HFFF
InsertSymbol.Font = wd.Dialogs(wdDialogInsertSymbol).Font
End If
doc.Close 0
Set doc = Nothing
End Function

Sub TestInsert()
Initialize
Dim s As Symbol
s = InsertSymbol
MsgBox CStr(s.CharCode) + "(" + s.Font + ")"
Cleanup
End Sub

Sub Initialize()
Set wd = New Word.Application
wd.Visible = False
End Sub

Sub Cleanup()
wd.Quit 0
Set wd = Nothing
End Sub
jtkkjtkk 2005-09-29
  • 打赏
  • 举报
回复
呵呵,这办法我也想过了,但是找起来太麻烦了.
northwolves 2005-09-27
  • 打赏
  • 举报
回复
狸猫换太子:

Shell "charmap.exe", vbNormalFocus
jtkkjtkk 2005-09-27
  • 打赏
  • 举报
回复
其实这个功能在很多有关文字编辑方面的软件中是很常用的功能,感觉上前辈应该已经给我们解决了,唉,神龙为何还不现身?

有那位高手做出此组件?
jtkkjtkk 2005-09-27
  • 打赏
  • 举报
回复
楼上兄台 szjhxu(天野) 的方法确实帮我解决了一个实实大大的问题,给你100分了。
你关于调用“插入符号”的方法,也不是不可以,不过感觉为插入一个符号,这样慢的速度实在是难以忍受(当然也可以设法优化哈),只是我很想知道有没有更好的办法?

如能解决此问题,本人的2000多分,想要多少随便要!
(现在不在windows下编程了,最近也没太多时间,所以回复较慢,各位原谅。此间是为一哥们做一设计,莫办法啊!!!),各位多多捧场啊。
szjhxu 2005-09-26
  • 打赏
  • 举报
回复
搞了半天,终于将公式搞定。
直接使用RTF控件的相关方法即可。
代码为:
RichTextBox1.OLEObjects.Add objclass:="Equation.3"

如果是调用另一个程序所创建的内容,则用此法;其他对话框,可以参考插入符号的方法。

楼主试试吧,行的话,别忘记给分哦,哈哈
szjhxu 2005-09-25
  • 打赏
  • 举报
回复
思路:创建一个临时的WORD文档,然后调用WORD内置对话框,将内容插入到WORD文档中,再将文档中的内容选中,赋给一个变量,然后将临时文档删除,再将变量中的值赋给RTF控件。
示例代码如下:
Private Sub Command1_Click()
Dim wd As New Application
Dim doc As New Document
Set doc = wd.Documents.Add(, , wdNewBlankDocument)
doc.Activate
Dim SpecialSymbol As String, myRange As Range
Dialogs(wdDialogInsertSymbol).Show
Set myRange = ActiveDocument.Paragraphs(1).Range
SpecialSymbol = myRange.Text
doc.SaveAs "d:\tmp.doc"
doc.Close
wd.Quit
Kill "d:\tmp.doc"
RichTextBox1.Text = SpecialSymbol
End Sub
vansoft 2005-09-23
  • 打赏
  • 举报
回复
可以做到,以前做過調用WORD裏的英漢字典翻譯。
前提是你得裝了英漢翻譯。

同樣,你只要裝了公式編輯器,就能調出來。
只是沒空給你正確答案。

自己努力吧。
chtlover 2005-09-23
  • 打赏
  • 举报
回复
支持中...顶
titihao 2005-09-23
  • 打赏
  • 举报
回复
帮顶,,,
jam021 2005-09-23
  • 打赏
  • 举报
回复
关注
flyingZFX 2005-09-21
  • 打赏
  • 举报
回复
先题条件是 你必须安装了 公式编辑器

那样的话,调用就不是问题了。
jtkkjtkk 2005-09-21
  • 打赏
  • 举报
回复
请高手支招
wangdeshui 2005-09-20
  • 打赏
  • 举报
回复
关注高手

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧