首页 新闻 会员 周边 捐助

使用epplus写入xlsm的EXCEL,无法触发宏

0
悬赏园豆:10 [已解决问题] 解决于 2018-03-05 17:04

我的excel里面有个自定义的宏,所以保存的是xlsm格式,很简单,A1单元格的值变化后,B1值也就变化。

 

我打开excel手动写入时,一切正常,使用epplus写就不会触发这个宏,请问有没有大神知道是怎么回事?

 

宏里面代码很简单:

Private Sub Worksheet_Change(ByVal Target As Range)
            If Target.Address = "$A$1" Then
               wwwww
            End If
End Sub
Sub wwwww()
    Dim a As String
    a = Sheet1.Range("A1").Value
    Sheet1.Range("B1") = a + 1
End Sub
明爷的主页 明爷 | 初学一级 | 园豆:9
提问于:2018-02-22 16:42
< >
分享
最佳答案
0

这个是正常的。

好像说你写一个软件,定义事件触发修改数据。

Amount=quantity*UnitPrice

但是如果别人直接写你的数据库,那么他对Quantity 和UnitPrice的修改就不会导致Amount的自动修改。

 

你使用第三方软件写EXCEL的数据就像是第三方软件写你的数据库一样。

收获园豆:10
爱编程的大叔 | 高人七级 |园豆:30844 | 2018-02-22 21:50

但是我在软件中调用“Set xlApp = CreateObject("Excel.Application")”这种写法的话,是可以自动调用宏的啊!

明爷 | 园豆:9 (初学一级) | 2018-02-23 09:30

@明爷: 这是调用EXCEL的函数,EXCEL自己干的,就好比第三方软件不写数据库,而是调用你的API,一样你可以保证数据逻辑事件触发啥的啊。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-02-23 09:43

@爱编程的大叔: 

 

但是如果引用Excel的COM,用“ Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();”这种写法,也是有问题的,不能自动调用宏!

 

明爷 | 园豆:9 (初学一级) | 2018-02-23 10:12

@爱编程的大叔: 

因为Excel提供的COM在客户端总会出现稀奇古怪的兼容性问题,所以我才使用第三方的库,您有好的解决方法吗?

明爷 | 园豆:9 (初学一级) | 2018-02-23 10:15

@明爷: 此路不通,你应该寻找其他方法的,原始需求并不一定需要使用事件来实现。

如果你无法修改EXCEL宏的话,那就当我没说。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-02-23 10:40

@爱编程的大叔: 

winform程序,在客户端使用office COM的时候出现各种兼容性问题,客户端操作人员也不会管什么杀毒,重装什么的,抱怨很多,所以才使用EPPLUS的,一直都用的还不错,直到这次出了这个宏的问题。

这个带宏的excel模板是已经写好了的,我们不知道里面的vba的代码,只能调用。蛋疼啊~!

明爷 | 园豆:9 (初学一级) | 2018-02-24 10:31

@明爷: 如果是这样的话,那么在EXCEL中取数据,而不是从C#中写入数据,会是一个更好的方法。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-02-24 12:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册