Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 23759|回复: 10

[已解决]VBA打开指定文件

[复制链接]
发表于 2012-10-12 10:49 | 显示全部楼层 |阅读模式
怎样用VBA打开属性不常见的文件?不是word,execl,ppt等常见文件,在线等,谢谢
最佳答案
2012-10-12 11:45
  1. Private Declare Function ShellExecute Lib "shell32.dll" _
  2.   Alias "ShellExecuteA" (ByVal hWnd As Long, _
  3.   ByVal lpOperation As String, ByVal lpFile As String, _
  4.   ByVal lpParameters As String, ByVal lpDirectory As String, _
  5.   ByVal nShowCmd As Long) As Long


  6. Sub OpenFile()
  7.     Dim FileName As String
  8.     Dim Result As Long
  9.     FileName = "E:\1.sqd"
  10.         Result = ShellExecute(0&, vbNullString, FileName, _
  11.         vbNullString, vbNullString, vbNormalFocus)
  12.     If Result < 32 Then MsgBox "Error"
  13. End Sub
复制代码
发表于 2012-10-12 11:18 | 显示全部楼层
回复

使用道具 举报

发表于 2012-10-12 11:18 | 显示全部楼层
回复

使用道具 举报

发表于 2012-10-12 11:19 | 显示全部楼层
GetObject 函数
请参阅     示例     特性

返回文件中的 ActiveX 对象的引用。

语法

GetObject([pathname] [, class])

GetObject 函数的语法包含下面几个命名参数:

部分 描述
pathname 可选的;Variant (String)。包含待检索对象的文件的全路径和名称。如果省略 pathname,则 class 是必需的。
class 可选的;Variant (String)。代表该对象的类的字符串。



其中,class 参数的语法格式为 appname.objecttype,且语法的各个部分如下:

部分 描述
appname 必需的;Variant (String)。提供该对象的应用程序名称。
objecttype 必需的;Variant (String)。待创建对象的类型或类。
回复

使用道具 举报

发表于 2012-10-12 11:22 | 显示全部楼层
API函数ShellExecute用法

1.   函数功能:

你可以给它任何文件的名字,它都能识别出来并打开它。

2.函数原型:
HINSTANCE ShellExecute(                           HWND hwnd,                            LPCTSTR lpOperation,                           LPCTSTR lpFile,                            LPCTSTR lpParameters,                            LPCTSTR lpDirectory,                           INT nShowCmd);   3.参数说明:hwnd: 用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。 lpOperation: 用于指定要进行的操作。“open”操作表示执行由lpFile参数指定的程序,或打开由lpFile参数指定的文件或文件夹;“print”操作表示打印由lpFile参数指定的文件;“explore”操作表示浏览由lpFile参数指定的文件夹。当参数设为NULL时,表示执行默认操作“open”。  

lpFile:

用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。

lpParameters:

若lpFile参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为NULL.

lpDirectory:

用于指定默认目录.

nShowCmd:

若lpFile参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。

这个参数常用的常数:

SW_HIDE 隐藏窗口,活动状态给令一个窗口

SW_MINIMIZE 最小化窗口,活动状态给令一个窗口

SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态

SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态

SW_SHOWMAXIMIZED 最大化窗口,并将其激活

SW_SHOWMINIMIZED 最小化窗口,并将其激活

SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口

SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口

SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口

SW_SHOWNORMAL 与SW_RESTORE相同

若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。  

4.使用方法:

例如:

ShellExecute(NULL,"open","iloveu.bmp",NULL,NULL,SW_SHOWNORMAL);      

用缺省的位图编辑器打开一个叫iloveu.bmp的位图文件,这个缺省的位图编辑器可能是 Microsoft Paint, Adobe Photoshop, 或者 Corel PhotoPaint。

这个函数能打开任何文件,甚至是桌面和URL快捷方式( .ink或 .url)。ShellExecute解析系统注册表HKEY_CLASSES_ROOT中所有的内容,判断启动那一个执行程序,并且启动一个新的实例或使用DDE将文件名连到一打开的实例。然后,ShellExecute 返回打开文件的应用的实例句柄。

ShellExecute(NULL, "open", "http://www.microsoft.com", NULL, NULL, SW_SHOWNORMAL);

    这个代码使你能访问微软的主页。当ShellExecute遇到文件名前面的“http:”时,可以判断出要打开的文件是Web文件,随之启动Internet Explorer 或者 Netscape Navigator 或者任何你使用的别的浏览器打开文件。

ShellExecute还能识别其它协议,象FTP、GOPHER。甚至识别“mailto”,如果文件名指向“mailto:zxn@hq.cninfo.net”,它启动电子邮件程序并打开一个待编辑的新邮件,例如:

ShellExecute(NULL, "open",“mailto:zxn@hq.cninfo.net”, NULL, NULL, SW_SHOWNORMAL);打开新邮件窗口。

总之,ShellExecute函数就是如此简单地打开磁盘文件和Internet文件。如果将第二个参数“OPEN”改为“PRINT”或者“EXPLORE”,ShellExecute将能打印文件和打开文件夹。ShellExecute还有一个扩展函数ShellExecuteEx,所带参数中有一个特殊的结构,功能更强,或者任何你使用的别的浏览器打开文件。
回复

使用道具 举报

 楼主| 发表于 2012-10-12 11:32 | 显示全部楼层
我要打开E:/1.sqd,要怎么写命令?
回复

使用道具 举报

发表于 2012-10-12 11:39 | 显示全部楼层
danser 发表于 2012-10-12 11:32
我要打开E:/1.sqd,要怎么写命令?

用API吧,这个肯定行。
回复

使用道具 举报

 楼主| 发表于 2012-10-12 11:41 | 显示全部楼层
hwc2ycy 发表于 2012-10-12 11:39
用API吧,这个肯定行。

不会啊,你帮帮忙啊,谢谢
回复

使用道具 举报

发表于 2012-10-12 11:41 | 显示全部楼层
调用 API 函数-ShellExecute实例
http://www.excelpx.com/thread-156845-1-1.html
回复

使用道具 举报

发表于 2012-10-12 11:45 | 显示全部楼层    本楼为最佳答案   
  1. Private Declare Function ShellExecute Lib "shell32.dll" _
  2.   Alias "ShellExecuteA" (ByVal hWnd As Long, _
  3.   ByVal lpOperation As String, ByVal lpFile As String, _
  4.   ByVal lpParameters As String, ByVal lpDirectory As String, _
  5.   ByVal nShowCmd As Long) As Long


  6. Sub OpenFile()
  7.     Dim FileName As String
  8.     Dim Result As Long
  9.     FileName = "E:\1.sqd"
  10.         Result = ShellExecute(0&, vbNullString, FileName, _
  11.         vbNullString, vbNullString, vbNormalFocus)
  12.     If Result < 32 Then MsgBox "Error"
  13. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 20:25 , Processed in 1.393241 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表