c脚本调用EXCEL的两段函数有何区别?

已锁定

shanelee

  • 帖子

    33
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2006-02-05

普通 普通 如何晋级?

c脚本调用EXCEL的两段函数有何区别?

1052

3

2008-02-17 11:32:27

我写了一段c函数ProgramExecute来调用EXCEL文件,date是我wincc自己建的内部变量:

char path[255];
//如路径改变相应的字符串也要改变
strcpy(path,"C:\\Program Files\\Microsoft Office\\Office\\EXCEL.EXE E:\\reporttest\\report\\");
strcat(path,GetTagChar("date")); //Return-Type: char*
strcat(path,".xls");
//SetTagChar("path",path); //Return-Type: BOOL
ProgramExecute(path); //Return-Type: unsigned long int

调出EXCEL没有问题。但我还有一个一直在运行的EXCEL文件,其中有用宏写的那段OPC读wincc变量的程序(帮助里好像有,我又找不到了,顺便问一下万版帮助文档的查找方法),和整点打开当天EXCEL文件往里存一条数据的程序。我在宏里还写了一段打开前判断当天的工作簿是否打开的程序,如果打开了就不再打开,存完数据后自动关闭。
Dim WK As Workbook
For Each WK In Workbooks
If WK.Name = fn Then
GoTo OPENED
End If
Next WK
Workbooks.Open (ThisWorkbook.Path & "\report\" & fn)

OPENED:
打开后的后续操作。。。

问题就来了:如果我WINCC调出的EXCEL没关,照理说是应该检测到的(我手动打开excel试过)。但用上面一段脚本调出的excel却没被检测到,表现为又打开一个EXCEL。我不知道是怎么回事。
前阵浏览论坛看到城外斑竹说ShellExecuteA可以用于打开很多东西,就试了下:

#pragma code("Shell32.dll")

VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);

#pragma code()
HWND hwnd;
char path[255];
hwnd=FindWindow(NULL,"WinCC-运行系统 -");
strcpy(path,"E:\\reporttest\\report\\");
strcat(path,GetTagChar("date")); //Return-Type: char*
strcat(path,".xls");
//SetTagChar("path",path); //Return-Type: BOOL
//ProgramExecute(path); //Return-Type: unsigned long int
ShellExecuteA(hwnd, "open", path,NULL,"E:\\reporttest\\report\\",SW_SHOWMAXIMIZED);

程序打开没问题,上述的宏中无法检测到打开的excel的问题也没有了。
程序能正常运行。
我只是看到两种方法打开的EXCEL最小化时有区别:第一种好像是一个大的excel图标;第二种和原来采集数据的EXCEL的图标是一样的,像是多个文档似的图标。我猜第一种是不是打开了另一个EXCEL的进程之类的函数(不懂瞎说)。虽然现在任务完成了,但问题还在,希望斑竹和各位高手给我个解释。
c脚本调用EXCEL的两段函数有何区别? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32564条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。