excel - SSIS 脚本任务 - 使用只读变量名称保存 Excel 模板的副本
问题描述
我希望能够使用下面的脚本任务代码将 Excel 工作簿的副本(在某些单元格中添加一些数据之后)保存为 ForEachLoop 容器中的变量 ClientName 的名称。
我从 Stack Overflow 中提取了一些代码,这些代码已经填充了 Excel 工作簿模板中的特定单元格,但我试图在每次迭代时使用 ClientName 变量保存每个工作簿,例如 ClientName.xlsx
Public Sub Main()
Dim ClientName As String
Dim ClientAddress As String
Dim CurrentDate As Date
Dim m_XlApp = New Excel.Application
Dim m_xlWrkbs As Excel.Workbooks = CType(m_XlApp.Workbooks, Excel.Workbooks)
Dim m_xlWrkb As Excel.Workbook
m_xlWrkb = m_xlWrkbs.Open("C:\Users\UserAZ\Documents\TemplateStatement.xlsx")
Dim m_XlWrkSheet As Excel.Worksheet = CType(m_xlWrkb.Worksheets(1), Excel.Worksheet)
'ClientName = (Dts.Variables("User::strClientName").Value).ToString()
'MsgBox(ClientName)
'ClientAddress = (Dts.Variables("User::strClientAddress").Value).ToString()
'MsgBox(ClientAddress)
'CurrentDate = Today
'MsgBox(CurrentDate)
m_XlWrkSheet.Range("A1").Value = ClientName
m_XlWrkSheet.Range("A2").Value = ClientAddress
m_XlWrkSheet.Range("B4").Value = CurrentDate
'm_xlWrkb.Save()
m_xlWrkb.SaveCopyAs("C:\Users\UserAZ\Documents\" & ClientName & ".xlsx")
m_xlWrkb.Close(SaveChanges:=True)
Marshal.ReleaseComObject(m_xlWrkb)
Marshal.ReleaseComObject(m_xlWrkbs)
m_XlApp.Quit()
Marshal.ReleaseComObject(m_XlApp)
Dts.TaskResult = ScriptResults.Success
End Sub
我期待在 For 循环容器中的每次迭代之后,脚本任务将使用变量 ClientName 保存模板的副本,然后进入下一次迭代并重复。
但是,它会弹出一个对话框,询问我是否要保存 TemplateStatement.xlsx 的副本。如果我按下不保存,它实际上会进入下一次迭代。但重点是让它在没有任何人工干预的情况下运行。
我不熟悉 VB.Net。
解决方案
首先,尝试使用SaveAs()
而不是SaveCopyAs()
. 此外,尝试添加以下行以防止显示任何对话框:
m_XlApp = New Excel.Application
m_XlApp.visible = False
m_XlApp.DisplayAlerts = False
Dim m_xlWrkbs As Excel.Workbooks = CType(m_XlApp.Workbooks, Excel.Workbooks)
Dim m_xlWrkb As Excel.Workbook
m_xlWrkb = m_xlWrkbs.Open("C:\Users\UserAZ\Documents\TemplateStatement.xlsx")
m_xlWrkb.DoNotPromptForConvert = true
'...
m_xlWrkb.SaveAs("C:\Users\UserAZ\Documents\" & ClientName & ".xlsx")
m_xlWrkb.Close(SaveChanges:=True)
有用的网址
推荐阅读
- django - 基于 UpdateView 或 CreateView 的 Django 表单字段不同的清理逻辑
- python - Python datetime 始终评估为 2 个值之一,但绝不是相同的一个值
- python - 在 DIRECTED networkx 图中查找多条路径
- php - Laravel,soap API 需要登录
- python - 使用 Selenium Hangs 抓取“简单网站”
- c++ - 错误:“无法加载 DLL 函数!”
- azerothcore - 您如何更改服务器的时区以匹配本地?
- angular - 文本区域包含情感符号
- linux - “此平台不支持 SMP”
- tinymce - TinyMCE 边框样式 5.4.1:折叠与分离