| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5319 人关注过本帖, 1 人收藏
标题:[求助]紧急 请问如何获得已经打开的excel文件的文件路径,文件名?
只看楼主 加入收藏
yuanpu111
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-8-23
收藏(1)
 问题点数:0 回复次数:10 
[求助]紧急 请问如何获得已经打开的excel文件的文件路径,文件名?


[求助]紧急 请问如何获得已经打开的excel文件的文件路径,文件名?
我目前的程序需要获得当前正在打开的所有excel文件的列表,
(所有当前正在打开的excel文件都需要取得,可以用任何方式打开。)
我已经查找了很久,都不能找到C#的方法,
请高手帮忙,多谢!!!
跪求高手帮忙!!!
相关:
这里有一个VB的方法
http://www.bczs.net/xml/2003/4/26/1711527.xml

关于此方法的msn信息在GetObject函数 Visual Basic中。

贴上一段相关代码:
' Add Option Strict Off to the top of your program.
Option Strict Off
' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

Sub GetExcel()
Dim MyXL As Object ' Variable to hold reference
' to Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag for final release.

' Test to see if there is a copy of Microsoft Excel already running.
On Error Resume Next ' Defer error trapping.
' Getobject function called without the first argument returns a
' reference to an instance of the application.
' If the application is not running, an error occurs.
MyXL = GetObject(, "Excel.Application")
If Err().Number <> 0 Then ExcelWasNotRunning = True
Err().Clear() ' Clear Err object in case error occurred.

' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
DetectExcel()

' Set the object variable to reference the file you want to see.
MyXL = GetObject("c:\vb\TEST.XLS")

' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
' Do manipulations of your file here.
'
End Sub

Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel is running so use the SendMessage API
' function to enter it in the Running Object Table.
SendMessage(hWnd, WM_USER + 18, 0, 0)
End If
End Sub

[此贴子已经被作者于2006-8-23 11:08:57编辑过]

搜索更多相关主题的帖子: excel 文件名 路径 
2006-08-23 10:56
mylover624
Rank: 1
来 自:乖乖的心中
等 级:新手上路
帖 子:868
专家分:0
注 册:2006-7-6
收藏
得分:0 
OpenFileDialog fd = new OpenFileDialog();
if( fd.ShowDialog() == DialogResult.OK )
{
this.Lable1.Text = fd.FileName;
}

一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@.cn
2006-08-23 11:01
yuanpu111
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-8-23
收藏
得分:0 

谢谢楼上的热心人!
不过文件可能不是通过我的程序打开的,比如用户在windows下双击打开,就是说凡是当前系统中打开的excel文件都需要找出来,
而不仅仅是通过执行我程序中的openfiledialog打开的。
谢谢各位帮忙!

[此贴子已经被作者于2006-8-23 11:07:15编辑过]

2006-08-23 11:05
mylover624
Rank: 1
来 自:乖乖的心中
等 级:新手上路
帖 子:868
专家分:0
注 册:2006-7-6
收藏
得分:0 

那你通過系統的“任務管理器”找打開狀態的“Excel”線程吧


一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@.cn
2006-08-23 11:11
yuanpu111
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-8-23
收藏
得分:0 

我曾经试过word有3个线程,当打开一个新文件的时候并不增加新的线程(我也很奇怪)。
excel应该也是这样。
而且我不知道怎么通过线程或进程取得打开的文件名。
通过excel的进程主模块, 只能取得excel.exe的路径,并不能得到被它打开的文件的信息。

2006-08-23 11:21
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 

能不能彎一下
去找註冊表中的打開文件歷史紀錄


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-23 11:28
小海龟
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1068
专家分:4
注 册:2006-8-1
收藏
得分:0 
以下是引用yuanpu111在2006-8-23 10:56:55的发言:


[求助]紧急 请问如何获得已经打开的excel文件的文件路径,文件名?
我目前的程序需要获得当前正在打开的所有excel文件的列表,
(所有当前正在打开的excel文件都需要取得,可以用任何方式打开。)
我已经查找了很久,都不能找到C#的方法,
请高手帮忙,多谢!!!
跪求高手帮忙!!!
相关:
这里有一个VB的方法
http://www.bczs.net/xml/2003/4/26/1711527.xml

关于此方法的msn信息在GetObject函数 Visual Basic中。

贴上一段相关代码:
' Add Option Strict Off to the top of your program.
Option Strict Off
' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

Sub GetExcel()
Dim MyXL As Object ' Variable to hold reference
' to Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag for final release.

' Test to see if there is a copy of Microsoft Excel already running.
On Error Resume Next ' Defer error trapping.
' Getobject function called without the first argument returns a
' reference to an instance of the application.
' If the application is not running, an error occurs.
MyXL = GetObject(, "Excel.Application")
If Err().Number <> 0 Then ExcelWasNotRunning = True
Err().Clear() ' Clear Err object in case error occurred.

' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
DetectExcel()

' Set the object variable to reference the file you want to see.
MyXL = GetObject("c:\vb\TEST.XLS")

' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
' Do manipulations of your file here.
'
End Sub

Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel is running so use the SendMessage API
' function to enter it in the Running Object Table.
SendMessage(hWnd, WM_USER + 18, 0, 0)
End If
End Sub


JxtYgUVR.rar (33.79 KB) [求助]紧急 请问如何获得已经打开的excel文件的文件路径,文件名?


看看吧,不过打开的Excel文件要刷新才能全部获得。

[bc09] 犯强汉者,虽远比诛!
2006-08-25 13:13
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

不错啊,还差路径

2006-08-25 13:59
小海龟
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1068
专家分:4
注 册:2006-8-1
收藏
得分:0 
路径实际上不是已经获得了吗?字符串的前部分。

[bc09] 犯强汉者,虽远比诛!
2006-08-25 14:12
xslonglianxi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-7-23
收藏
得分:0 
我想得到当前打开的Excel的所有Application对象!!!!怎么办啊!!
2009-07-23 15:52
快速回复:[求助]紧急 请问如何获得已经打开的excel文件的文件路径,文件名?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018999 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved