Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2446|回复: 3

[已解决]EXCELVBA 跨工作薄输入数据后不能显示被引用工作表窗口问题

[复制链接]
匿名  发表于 2014-12-31 23:47 |阅读模式
这是怎么了?
以下代码预先修改了被引用工作薄B的工作表窗口重新显示(IsAddin =FALSE),但是当打开B薄后仍然不能正常显示出B薄工作表窗口,仍然还是需要在ThisWorkbook属性窗口先手动IsAddin改为:TRUE,再改为:FALSE后才能生效.但是在ThisWorkbook属性窗口中的IsAddin 确实已经修改=FALSE了.为什么不能生效?
请高手指点并修改一下代码.

Sub 向指定路径工作薄输入数据()
Dim el As Object, sh As Worksheet
Set el = GetObject("E:\B.xls")
Set sh = el.Sheets("Sheet1")
sh.Range("a5") = 12345
sh.Range("B5") = Sheet1.Cells(1, 1)
  With el
   .IsAddin = False  '重新设定被引用工作薄之工作表窗口处于打开状态
   .Saved = False
   .Save
   .Close
End With
Set el = Nothing
Set sh = Nothing
End Sub

最佳答案
2015-1-1 09:00
  1. Sub 向指定路径工作薄输入数据()
  2. Dim el As Object, sh As Worksheet
  3. Application.ScreenUpdating = False
  4. Application.DisplayAlerts = False
  5. Set el = GetObject("E:\B.xls")
  6. Set sh = el.Sheets("Sheet1")
  7. sh.Range("a5") = 12345
  8. sh.Range("B5") = Sheet1.Cells(1, 1)
  9. Application.Windows(el.Name).Visible = True
  10. el.Close 1
  11. Application.DisplayAlerts = True
  12. Application.ScreenUpdating = True
  13. End Sub
复制代码
发表于 2015-1-1 09:00 | 显示全部楼层    本楼为最佳答案   
  1. Sub 向指定路径工作薄输入数据()
  2. Dim el As Object, sh As Worksheet
  3. Application.ScreenUpdating = False
  4. Application.DisplayAlerts = False
  5. Set el = GetObject("E:\B.xls")
  6. Set sh = el.Sheets("Sheet1")
  7. sh.Range("a5") = 12345
  8. sh.Range("B5") = Sheet1.Cells(1, 1)
  9. Application.Windows(el.Name).Visible = True
  10. el.Close 1
  11. Application.DisplayAlerts = True
  12. Application.ScreenUpdating = True
  13. End Sub
复制代码
回复

使用道具 举报

匿名  发表于 2015-1-1 09:47
谢谢指点,当时是想从修改属性角度去解决.其实重要的是加上这一句即可,修改属性的都拿掉:
wl.Windows(1).Visible = True
回复

使用道具

匿名  发表于 2015-1-1 09:49
写错了不是wl,应该是:
el.Windows(1).Visible = True
回复

使用道具

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 12:21 , Processed in 0.375866 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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