我工作场所的可视化管理委员会使用excel电子表格,其中包含许多表格,以便在电视上填充VMB。这些表格中有许多图表。我不会在VB中工作很多,所以请耐心等待。
我确信我的问题是因为程序试图访问的图表,实际上在弹出的Excel工作表中看不到。我可能只是不知道我在说什么,但这似乎是获取和显示数据的可怕方式。但我应该修复它。这是屏幕上弹出的表格(出于隐私原因,我删除了一些信息):
以下是尝试导出在Excel窗口中不可见的图表时创建的bmp的示例: 从我的研究中,我发现许多人已经通过在导出之前激活图表对象来解决这个问题。我试图在这里做到这一点,但抛出异常。以下是处理图表和导出的整个代码段,以生成应该驻留在Documents文件夹中的BMP:
Dim xlApp As Excel.Application
Dim xlWorkBooks As Excel.Workbooks
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheets As Excel.Sheets
Dim xlWorkSheet As Excel.Worksheet
xlApp = New Excel.Application
xlApp.Visible = True
xlWorkBooks = xlApp.Workbooks
xlWorkBook = xlWorkBooks.Open(ScoreCard)
xlWorkSheets = xlWorkBook.Sheets
For x As Integer = 1 To xlWorkSheets.Count
xlWorkSheet = CType(xlWorkSheets(x), Excel.Worksheet)
If xlWorkSheet.Name = My.Settings.Org Then
xlWorkSheet.ChartObjects(2).chart.Export(Filename:=path + "\Documents\OnTimeDelivery.bmp", FilterName:="BMP")
picOnTimeDelivery.Image = New System.Drawing.Bitmap(path + "\Documents\OnTimeDelivery.bmp")
xlWorkSheet.ChartObjects(3).chart.Export(Filename:=path + "\Documents\Quality.bmp", FilterName:="BMP")
picQuality.Image = New System.Drawing.Bitmap(path + "\Documents\Quality.bmp")
xlWorkSheet.ChartObjects(1).chart.Export(Filename:=path + "\Documents\NoDemandInventory.bmp", FilterName:="BMP")
picNoDemandInventory.Image = New System.Drawing.Bitmap(path + "\Documents\NoDemandInventory.bmp")
xlWorkSheet.ChartObjects(7).chart.Export(Filename:=path + "\Documents\ExcessInventory.bmp", FilterName:="BMP")
picExcessInventory.Image = New System.Drawing.Bitmap(path + "\Documents\ExcessInventory.bmp")
xlWorkSheet.ChartObjects(4).chart.Export(Filename:=path + "\Documents\Freight.bmp", FilterName:="BMP")
picFreight.Image = New System.Drawing.Bitmap(path + "\Documents\Freight.bmp")
xlWorkSheet.ChartObjects(5).chart.Export(Filename:=path + "\Documents\ShortagesByStart.bmp", FilterName:="BMP")
picShortagesByStart.Image = New System.Drawing.Bitmap(path + "\Documents\ShortagesByStart.bmp")
xlWorkSheet.ChartObjects(6).chart.Export(Filename:=path + "\Documents\ShortagesRootCause.bmp", FilterName:="BMP")
picShortagesRootCause.Image = New System.Drawing.Bitmap(path + "\Documents\ShortagesRootCause.bmp")
End If
Runtime.InteropServices.Marshal.FinalReleaseComObject(xlWorkSheet)
Next
xlWorkBook.Close()
xlApp.UserControl = True
xlApp.Quit()
'Close connection to excel sheet
MyConnection.Close()
程序崩溃,在尝试设置
时抛出了无效参数异常picFreight.Image = New System.Drawing.Bitmap(path + "\Documents\Freight.bmp")
因为我的文档文件夹中的Freight.bmp是一个0kb的文件。如果我更改下一个正在加载的图像(注释掉行并让它尝试加载ShortagesByStart.bmp)它会因同样的原因而崩溃。过去这一点的所有图表都有一个共同点,它们在屏幕上不可见。这对我来说似乎是一个愚蠢的理由;肯定这样的事情不会引起问题!
首先我尝试激活xlWorkSheet
xlWorkSheet.Activate()
但这没有改变。
所以我尝试通过添加
来激活单个ChartObjects xlWorkSheet.ChartObjects(2).chart.Activate()
xlWorkSheet.ChartObjects(3).chart.Activate()
xlWorkSheet.ChartObjects(1).chart.Activate()
xlWorkSheet.ChartObjects(7).chart.Activate()
xlWorkSheet.ChartObjects(4).chart.Activate()
所以,此时我被困住了。如何正确激活工作表中的图表对象?也许还有另一个问题导致了这一点。
答案 0 :(得分:0)
因此,解决方案是在我们想要运行VMB的任何PC上更新Microsoft Office。 Corporate创建此Excel电子表格,其中包含该程序试图显示的数据。最终,创建此Excel工作表的人获得了更新版本的Excel,从而创建了一个.xlxs文件。
老实说,我不知道为什么电子表格在ReadOnly模式下成功打开,但我认为Office 2007和2010版本没有完全支持。在PC上升级办公室副本后,程序创建了所有的bmps 。奇怪,我很抱歉,如果这对其他人来说不是很好,但这解决了我的问题!