在不知Office安装路径的情况下怎么打开word文件?

daixinhou 2006-03-31 11:35:29
当然用Shell "winword.exe C:\test.doc"可以打开word,现在我不知道,能用其它方式打开吗?
...全文
914 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
daixinhou 2006-03-31
  • 打赏
  • 举报
回复
再问一句,能不能通过扩展名打开相应的文件?
zhangyuqin 2006-03-31
  • 打赏
  • 举报
回复
使用办公自动化,创建Word对象实例,这样不管Office装在哪都能打开了,这种方法可以打开各种Office文档,如Excel等,只要创建相应的实例就行了,具体方法可以看看相关教程或者Google一下。
ZOU_SEAFARER 2006-03-31
  • 打赏
  • 举报
回复
默认是:
ffice2k是在"C:\Program Files\Microsoft Office\Office"
officeXP是在"C:\Program Files\Microsoft Office\Office10"
如果不是安装在C盘,或安装时自己改变了目录,又怎样得知???

请提供代码
---------------------------------------------------------------

读注册表
---------------------------------------------------------------

读注册表


模块
Option Explicit
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
"RegOpenKeyExA" (ByVal hKey As Long, _
ByVal lpSubKey As String, ByVal ulOptions As Long, _
ByVal samDesired As Long, phkResult As Long) _
As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" _
Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal _
lpValueName As String, ByVal lpReserved As Long, _
lpType As Long, ByVal lpData As String, lpcbData As Long) _
As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
Private Const REG_SZ As Long = 1
Private Const KEY_ALL_ACCESS = &H3F
Private Const HKEY_LOCAL_MACHINE = &H80000002

Public Function GetWordPath() As String
GetWordPath = GetOfficeAppPath("Word.Application")
End Function
Public Function GetExcelPath() As String
GetExcelPath = GetOfficeAppPath("Excel.Application")
End Function
Public Function GetAccessPath() As String
GetAccessPath = GetOfficeAppPath("Access.Application")
End Function
Public Function GetOutlookPath() As String
GetOutlookPath = GetOfficeAppPath("Outlook.Application")
End Function
Public Function GetPowerPointPath() As String
GetPowerPointPath = _
GetOfficeAppPath("PowerPoint.Application")
End Function
Public Function GetFrontPagePath() As String
GetFrontPagePath = GetOfficeAppPath("FrontPage.Application")
End Function
Private Function GetOfficeAppPath(ByVal ProgID As String) _
As String
Dim lKey As Long
Dim lRet As Long
Dim sClassID As String
Dim sAns As String
Dim lngBuffer As Long
Dim lPos As Long
'GetClassID
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
"Software\Classes\" & ProgID & "\CLSID", 0&, _
KEY_ALL_ACCESS, lKey)
If lRet = 0 Then

lRet = RegQueryValueEx(lKey, "", 0&, REG_SZ, "", lngBuffer)
sClassID = Space(lngBuffer)
lRet = RegQueryValueEx(lKey, "", 0&, REG_SZ, sClassID, _
lngBuffer)
'drop null-terminator
sClassID = Left(sClassID, lngBuffer - 1)
RegCloseKey lKey
End If


'Get AppPath
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
"Software\Classes\CLSID\" & sClassID & _
"\LocalServer32", 0&, KEY_ALL_ACCESS, lKey)

If lRet = 0 Then
lRet = RegQueryValueEx(lKey, "", 0&, REG_SZ, "", lngBuffer)
sAns = Space(lngBuffer)
lRet = RegQueryValueEx(lKey, "", 0&, REG_SZ, sAns, _
lngBuffer)
sAns = Left(sAns, lngBuffer - 1)

RegCloseKey lKey
End If

lPos = InStr(sAns, "/")
If lPos > 0 Then
sAns = Trim(Left(sAns, lPos - 1))
End If

GetOfficeAppPath = sAns

End Function


测试
Private Sub Command1_Click()
MsgBox GetWordPath()
End Sub
daixinhou 2006-03-31
  • 打赏
  • 举报
回复
言深之意,在不知道文件扩展名的情况下怎样打开文件?
of123 2006-03-31
  • 打赏
  • 举报
回复
支持 ShellExecute,它会根据文件关联启动相应的程序。
XLYT 2006-03-31
  • 打赏
  • 举报
回复
定义一个WORD.APPLICATION对象。
vansoft 2006-03-31
  • 打赏
  • 举报
回复
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

根據文件的關聯,調用相關的軟件打開文件。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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