欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 如何使用一个"已经"打开的workbook

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4034人关注过本帖树形打印复制链接

主题:如何使用一个"已经"打开的workbook

帅哥哟,离线,有人找我吗?
chinplant
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2014/6/10 11:35:18
如何使用一个"已经"打开的workbook  发帖心情 Post By:2014/6/13 15:03:09 [只看该作者]

 我已经打开了excel的test.xlsx文件. 目的是想让VBS macro 更新其中的一个CELL, 比如 cells(2,2)

 Set objExcel = GetObject("", "Excel.Application") -- okay 可以定义application, 但workbook却遇到问题

我不想用workbooks.add 或workbook.open 因为我必须用"已经"打开的一个固定的workbook (test.xlsx),不想用一个新的workbook.

我试过active workbook, this workbook, work activate (看下面例子) 但都出现错误. 请帮助一下!

谢谢

' Workbooks(sfname).Sheets("Sheets1").Activate

' objExcel.Application.Workbooks(sfname).Activate()

' set wkb  =  objExcel.Excel.Workbooks(1)
' objExcel.ActiveWorkbook.Sheets(1).Select
' objExcel.ActiveWorkbook.Activesheet

 '   Set wkb = objExcel.Workbooks(1)
 Set wkb = Workbooks(1).Worksheets(1)
 '    wkb.Activate
'    Set wks = wkb.ActiveSheet
'    objExcel.Visible = True
'    wks.Activate
 
'  set wkbname = ActiveWorkbook.Name
 '  objExcel.Workbooks(sfname).Activate
' activeworkbook.sheets(1).select()
    worksheets("Sheet1").Activate
'set xlBook = objExcel.WorkBooks.Open(filename)
'set xlSht = objExcel.activesheet
 
' objExcel.WorksSheets( "Sheet1" ).Activate
'  Dim wkb As Workbook
'  set  wkb = objExcel.Workbooks(1)
 
  objExcel.Visible = True
'  set objExcel.Workbooks(1).Sheets(1).Cells(2,2).Value = 100
 
'  Set wkb = objExcel.Application.Workbooks(1)
'  wkb.Activate
'  objExcel.WorkBooks.Add

 回到顶部
帅哥哟,离线,有人找我吗?
chinplant
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2014/6/10 11:35:18
  发帖心情 Post By:2014/6/13 15:55:52 [只看该作者]

 十万火急,请各位大侠尽快帮忙,,多谢了!!

 回到顶部
帅哥哟,离线,有人找我吗?
chinplant
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2014/6/10 11:35:18
  发帖心情 Post By:2014/6/13 16:21:57 [只看该作者]

 实际上我想做的就是每当海龟系统发出信号时,让金字塔在“已经”打开的excel文件中如何写入一个简单的“1”字。关键是excel文件必须打开,因为别的程序需要用它。

谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/6/13 18:22:52 [只看该作者]

VBA技术问题比较复杂,不可能马上就能给出你答案,我们正在跟踪解决你的问题,请耐心等待


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2014/6/13 18:38:31 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2014/6/13 19:28:37 [只看该作者]

Public MyXL

Sub APPLICATION_VBAStart()
     Call Application.SetTimer(10, 500)
     GetExcelFile("D:\XXXXX.xls")          '打开指定的excel文件xxxxx.xls   
End Sub

 

'打开某个excel文件
Sub GetExcelFile(sFileName)
    '此过程暂停使用,替代过程为:GetExcel

    Dim sWinName                '窗口名
    Dim iPos
   
    '测试 Microsoft Excel 的副本是否在运行。
    On Error Resume Next    '延迟错误捕获。
    '不带第一个参数调用 Getobject 函数将
    '返回对该应用程序的实例的引用。
    '如果该应用程序不在运行,则会产生错误。
    Set MyXL = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
  Set MyXL = CreateObject("Excel.Application")
 End if

    '将对象变量设为对要看的文件的引用。
    Set MyXL = GetObject(sFileName)
   
    iPos = InStrRev(sFileName, "\", -1, vbTextCompare)
    sWinName = Mid(sFileName, iPos + 1, Len(sFileName) - iPos - 4)
   
    '设置其 Application 属性,显示 Microsoft Excel。
    '然后使用 MyXL 对象引用的 Windows 集合
    '显示包含该文件的实际窗口。
    MyXL.Application.Visible = True
    MyXL.Application.ScreenUpdating = True
    MyXL.Parent.Windows(1).Activate
    MyXl.Application.Sheets(1).Visible=true
End Sub

 

'关闭Excel
Sub CloseExcel()
    On Error Resume Next
    MyXL.Application.DisplayAlerts = False
    'MyXL.Application.Save
    MyXL.Application.Quit
'    Set MyXL = Nothing    '释放对该应用程序
End Sub

 

Sub Application_Timer(ID)

    on error resume next
    application.MsgOut "正在导出行情..."
    Set Report1 = marketdata.GetReportData("IF00","ZJ")
     MyXL.Application.activesheet.Range("C1") =  report1.label
     MyXL.Application.activesheet.Range("D1") =  report1.BuyPrice1

End Sub


 回到顶部
帅哥哟,离线,有人找我吗?
chinplant
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2014/6/10 11:35:18
  发帖心情 Post By:2014/6/13 19:54:57 [只看该作者]

 图片点击可在新窗口打开查看

非常感谢你的回复, 我刚刚试过,但它说该excel文件已经打开了被锁住。


 
 strSheet = "Sheet1"
 filename = "C:\Users\Public\test2.xlsx"
 sfname = "test2.xlsx"

  Set objExcel = GetObject("", "Excel.Application")
  Set objExcel = GetObject(filename)
 
    objExcel.Application.Visible = True
    objExcel.Application.ScreenUpdating = True
    objExcel.Parent.Windows(1).Activate
    objExcel.Application.Sheets(1).Visible=true

  objExcel.Cells(2, 2) = "1"


谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2014/6/14 21:17:04 [只看该作者]

你好好看getExcelFile那个过程,你修改了,变成每次都打开文件,当然就会出现你上面的错误了,应该是判断有没有打开那个文件,有,就直接定位到该文件,没有才打开。

也罢,我直接给你做好吧,你自己在d:\建立一个excel文件test.xlsx,这个肯定会吧,然后导入这个项目文件,运行就看到结果了。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:excel.rar

[此贴子已经被作者于2014/6/14 21:17:47编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chinplant
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2014/6/10 11:35:18
  发帖心情 Post By:2014/6/16 12:24:59 [只看该作者]

 谢谢你的程序,直接写出程序反映你对用户的认真负责的态度,多谢!!!
我导入了你的vbs文件,同时打开我的test.xlsx,和打开金字塔IF价格但还是看到一个新的标有”excel“名字的excel文件,原来的test.xlxs还是没有被更新,新的excel也只是灰色的界面看不到任何cells。

 回到顶部
帅哥哟,离线,有人找我吗?
chinplant
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2014/6/10 11:35:18
  发帖心情 Post By:2014/6/16 12:27:36 [只看该作者]

请看我的屏幕截图。多谢


图片点击可在新窗口打开查看此主题相关图片如下:截图20140616120913446.jpg
图片点击可在新窗口打开查看

 回到顶部
总数 11 1 2 下一页