这code ++工程,VB,但在VB.NET给人例外,为什么? [英] This Code works VB but gives exception in VB.NET, Why?

查看:135
本文介绍了这code ++工程,VB,但在VB.NET给人例外,为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

旨在实现: 我想改变透视表的SourceData。

Aim to achieve : I want to change the SourceData of the Pivot table.

我想从 C:\ [file.xlsx] SheetName改变!RangeName SheetNameRangeName

我有以下的实现:

For Each table In sheet.PivotTables
    Dim str = "'" + Split(table.SourceData, "]")(1)
    table.SourceData = str   // Gives Exception here
Next table

// Exception: Exception from HRESULT: 0x800A03EC

在误差 STR 的时间都有价值SheetName!RangeName (这是很好..)

At the time of error str has value 'SheetName'!RangeName (This is fine.. )

我也越来越异常之前一个消息框: 无法打开源文件C:\ file.xlsx (是不是很明显,因为它在使用中)

I am also getting a message box before the exception : Can not open the source file C:\file.xlsx (Isn't that obvious because its in use)

请帮助..这部作品在VB作为宏。

Please help.. this works in VB as a Macro.

推荐答案

这是VB.Net版本,如果你会使用它在vb.net-EXE。它不会在EXCEL.VBA工作,但据我所知,你想要一个VB.Net版本?

This is the VB.Net version as if you would use it in an vb.net-exe. It will not work in EXCEL.VBA, but as I understand it you wanted a VB.Net version?

Imports Microsoft.Office.Interop

Sub ChangePivotTableSourceData()
    Dim e As New Excel.Application
    e.Workbooks.Open("c:\testdoc.xlsx", , True) 'Open the doc readonly
    Dim sheet As Excel.Worksheet = e.ActiveSheet

    For Each table As Excel.PivotTable In sheet.PivotTables
        table.SourceData = "'" + Split(table.SourceData, "]")(1)
    Next

    e.ActiveWorkbook.SaveAs("c:\testdoc_changed.xlsx") 'Save under another name
    e.ActiveWorkbook.Close()
    e.Quit()
    sheet = Nothing
    e = Nothing
End Sub

这篇关于这code ++工程,VB,但在VB.NET给人例外,为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆