以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  如何使用一个"已经"打开的workbook  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=66134)

--  作者:chinplant
--  发布时间:2014/6/13 15:03:09
--  如何使用一个"已经"打开的workbook
 我已经打开了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
--  发布时间:2014/6/13 15:55:52
--  
 十万火急,请各位大侠尽快帮忙,,多谢了!!
--  作者:chinplant
--  发布时间:2014/6/13 16:21:57
--  
 实际上我想做的就是每当海龟系统发出信号时,让金字塔在“已经”打开的excel文件中如何写入一个简单的“1”字。关键是excel文件必须打开,因为别的程序需要用它。

谢谢

--  作者:王锋
--  发布时间:2014/6/13 18:22:52
--  
VBA技术问题比较复杂,不可能马上就能给出你答案,我们正在跟踪解决你的问题,请耐心等待
--  作者:guotx2010
--  发布时间:2014/6/13 18:38:31
--  

http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=6539&replyID=&skin=1

 

看看这个例子,不行再说!


--  作者:guotx2010
--  发布时间: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
--  发布时间: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
--  发布时间:2014/6/14 21:17:04
--  

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

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

 

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

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

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

--  作者:chinplant
--  发布时间:2014/6/16 12:27:36
--  

请看我的屏幕截图。多谢


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