ExcelApp.Workbooks.SaveAs:HRESULT:0x800A03EC
ExcelApp.Workbooks.SaveAs : HRESULT : 0x800A03EC
我目前正在尝试将我的 VB.net 程序添加到 "SaveAs" 一个 Excel 工作簿,只是在实际的 SaveAs 行上出现异常 HRESULT : 0x800A03EC。
我检查了我的文件路径,它很好并且可以工作,所以我现在一无所知
这是我声明 Excel 相关对象的代码
Dim ExcelApp As New Interop.Excel.Application()
Dim Classeur = ExcelApp.Workbooks.Open("C:\Program Files (x86)\Software_name\template.xlsx")
Dim Feuille = Classeur.Sheets("sheet_name")
然后我声明从文本框获得的值
Dim FileName As String = Textbox1.text + Textbox2.text + Textbox3.text
Dim FilePath As String = "\192.168.1.xxx\some\folders\where\names\never\change\" & Date.Today.Year & "\" & FileName & "\"
MkDir(FilePath)
Dim StrPath As String = FilePath & FileName & ".xlsx" 'So I create a document named after FileName
然后我用
保存
'This works
Classeur.ActiveSheet.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, FilePath & FileName & ".pdf")
'This doesn't works
Classeur.SaveAs(StrPath)
我最终发现了问题:用于保存文件的名称不能以 space(“”)结尾,而且我的用户似乎在没有真正注意到的情况下这样做了。所以我刚刚添加了这段代码,效果非常好。
Dim NameLength As Integer
Dim NameText As String
NameText = TextBox.Text
If Strings.Right(NameText, 1) = " " Then
NameLength = NameText.Length - 1
NameText = Strings.Left(NameText, NameLength)
End If
我目前正在尝试将我的 VB.net 程序添加到 "SaveAs" 一个 Excel 工作簿,只是在实际的 SaveAs 行上出现异常 HRESULT : 0x800A03EC。
我检查了我的文件路径,它很好并且可以工作,所以我现在一无所知
这是我声明 Excel 相关对象的代码
Dim ExcelApp As New Interop.Excel.Application()
Dim Classeur = ExcelApp.Workbooks.Open("C:\Program Files (x86)\Software_name\template.xlsx")
Dim Feuille = Classeur.Sheets("sheet_name")
然后我声明从文本框获得的值
Dim FileName As String = Textbox1.text + Textbox2.text + Textbox3.text
Dim FilePath As String = "\192.168.1.xxx\some\folders\where\names\never\change\" & Date.Today.Year & "\" & FileName & "\"
MkDir(FilePath)
Dim StrPath As String = FilePath & FileName & ".xlsx" 'So I create a document named after FileName
然后我用
保存'This works
Classeur.ActiveSheet.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, FilePath & FileName & ".pdf")
'This doesn't works
Classeur.SaveAs(StrPath)
我最终发现了问题:用于保存文件的名称不能以 space(“”)结尾,而且我的用户似乎在没有真正注意到的情况下这样做了。所以我刚刚添加了这段代码,效果非常好。
Dim NameLength As Integer
Dim NameText As String
NameText = TextBox.Text
If Strings.Right(NameText, 1) = " " Then
NameLength = NameText.Length - 1
NameText = Strings.Left(NameText, NameLength)
End If