ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: veggieg

[求助] 【高难度】系统进程打开了2个EXCEL,请教两个EXCEL进程之间如何进行数据交换?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-7-31 17:16 | 显示全部楼层
本帖已被收录到知识树中,索引项:Application对象
弱弱地问一下,什么情况下需要多个EXCEL进程呢?

TA的精华主题

TA的得分主题

发表于 2013-6-2 20:40 | 显示全部楼层
感谢高手的指点,越说我们越糊涂,讨论了半天,也不贴个完整的代码,我们是新手,既然你们都完成了任务,就该把完整的代码贴出来。
按照我的理解,楼主veggieg和高手hiyou说的意思是:在打开的两个工作表之间访问数据,这两个工作表都是新表,没有保存,互访数据。我把代码贴出来,供后来者参考,我也是新手,说的不对的地方,请各位指正:(我用的是XP3系统,excel是2003版,我的成功访问了)。
  1. Sub AAAA()
  2. Set wrk1 = GetObject("book1")
  3. Set wrk2 = GetObject("book2")
  4. '然后从两个WORKBOOK上引申到两个APPLICATION上
  5. Set xlapp1 = GetObject("book1").Application
  6. Set xlapp2 = GetObject("book2").Application
  7. xlapp1.Range("a1") = "hi,book1"
  8. xlapp2.Range("a1") = "hello,book2"
  9. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-6-2 21:49 | 显示全部楼层
banjinjiu 发表于 2013-6-2 20:40
感谢高手的指点,越说我们越糊涂,讨论了半天,也不贴个完整的代码,我们是新手,既然你们都完成了任务,就 ...

要是有同名文件呢?

TA的精华主题

TA的得分主题

发表于 2013-6-2 22:14 | 显示全部楼层
liucqa 发表于 2013-6-2 21:49
要是有同名文件呢?

我还是跟你学的,这个我还是新手,我推测的,我们共同学习吧。

TA的精华主题

TA的得分主题

发表于 2014-6-30 17:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-8-22 22:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hiyou,你好!看了几年前你帖子的回复,我今天调试了一下,以下情况无法通过get取得实例:
1、当文件是只读时
2、当文件是已保存的,要文件全路径名称。

我一直在寻找通过PID取得excel实例的办法,但是不得成功,希望得到你的指导。
比如我想实现:set ww=GetObject("指定PID的excel实例")

以下是代码:我通过打开多个EXCEL,其中一个xa.xlsb是正常打开,其他的都是只读打开。可以顺利获得非只读的那个,其他的get不到:
Sub xx()
Dim ww As Object, wwb As Object
Do
    Set wwb = GetObject("H:\xa.xlsb")
    If Not wwb Is Nothing Then
        Set ww = wwb.Application
        wwb.Close 0
        'ww.DisplayAlerts = False
        'ww.Quit
        Set wwb = Nothing
        Set ww = Nothing
    Else
        x = 1
        Exit Do
    End If
Loop

End Sub

TA的精华主题

TA的得分主题

发表于 2023-2-14 22:00 | 显示全部楼层


  1. 没办法,不能对两个Excel进程进行数据交换,只能用临时表格转一下。实现两个进程excel的数据交互。
  2. Private Sub ConnectSunriseSunSet()
  3.     Dim xlApp As Excel.Application
  4.     Dim xlWk As Workbook
  5.     Dim Sht As Worksheet
  6.     Dim oCount
  7.     Dim Str, Rr, Cc
  8.     Dim Rng As Range
  9.     Dim Arr()
  10.         Str = "中国东西南北城市.xls"
  11.         Set xlApp = New Excel.Application
  12.         ''
  13.         For Each xl In Workbooks
  14.              If xl.Name = "中国东西南北城市.xls" Then
  15.                  Set xlWk = xl
  16.                  Exit For
  17.              End If
  18.             
  19.         Next xl
  20.         ''Debug.Print xlWk.Name
  21.         Application.Run xlWk.Name & "!MainConnectReturnArr"
  22.         Set Sht = xlWk.Worksheets("Tmp")
  23.         With Sht
  24.             Set Rng = .Cells(1, 1).CurrentRegion
  25.         End With
  26.         Rr = Rng.Rows.Count - 1
  27.         Cc = Rng.Columns.Count - 1
  28.         ReDim Arr(Rr, Cc)
  29.               For ii = 0 To Rr
  30.                    For jj = 0 To Cc
  31.                        Arr(ii, jj) = Rng(ii + 1, jj + 1)
  32.                    Next jj
  33.               Next ii
  34.         
  35.         Stop
  36.         Stop
  37.         Stop
  38.          
  39. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2023-9-14 10:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
留下脚印,也有同样的问题疑惑。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 07:47 , Processed in 0.041532 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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