每天,一个人需要检查特定工作簿是否已经使用彭博和路透社的市场数据进行了正确更新; 即所有数据都已通过并且"数字看起来正确".在过去,人们没有检查导致上传到其他系统的"数字"不正确.
我们的想法是,需要开发"某些东西"以防止使用关闭/保存工作簿,除非他/她已检查更新是否正确/准确.该numbers look correct动作纯粹是一种直观的练习,因此不会以任何方式编码.
简单的解决方案是在关闭特定工作簿之前提示用户验证数据是否已被检查.
使用VSTO SE for Excel 2007,创建了一个加载项,该加载项挂接到WorkbookBeforeClose在加载项中初始化的事件ThisAddIn_Startup
private void wb_BeforeClose(Xl.Workbook wb, ref bool cancel)
{
//.... snip ...
if (list.Contains(wb.Name))
{
DailogResult result = MessageBox.Show("some message", "sometitle", MessageBoxButtons.YesNo);
if (result != DialogResult.Yes)
{
cancel = true; // i think this prevents the whole application from closing
}
}
}
Run Code Online (Sandbox Code Playgroud)
我发现以下ThisApplication.WorkbookBeforeSavevsThisWorkbook.Application.WorkbookBeforeSave建议人们应该使用ThisApplication.WorkbookBeforeClose我认为正在做的事件,因为它将跨越所有打开的文件.
我对该方法的问题是假设我打开了几个文件,其中一些文件在我的文件中list,该事件阻止Excel按顺序关闭所有文件.现在需要单独关闭每个文件.编辑:从文件菜单中使用退出Excel时会发生这种情况.
问题
WorkbookBeforeClose是否正确使用了该活动,是否有效且高效地使用了该活动?添加复选框时,如何从VBA访问该值?
以下所有都失败了
Sheets("Sheet1").chkMyCheck.Checked
Sheets("Sheet1").chkMyCheck.Value
Sheets("Sheet1").Shapes("chkMyCheck").Checked
Sheets("Sheet1").Shapes("chkMyCheck").Value
Sheet1.chkMyCheck.Checked
Sheet1.chkMyCheck.Value
Run Code Online (Sandbox Code Playgroud)
Sheet1.Shapes("chkMyCheck")似乎找到了对象,但没有公开任何看起来可能返回已检查状态的属性.
我有一张工作表,其中包含B列中的名称列表和A中的ID列.我想知道是否有某种公式可以获取该行B列中的值并根据文本生成某种ID ?每个名称也是唯一的,不会以任何方式重复.
如果我不必真的使用VBA,那将是最好的.但如果我必须,那就这样吧.
我试图在打开Excel文档时触发一个宏来运行.
我遇到的问题是我的所有代码都驻留在Excel加载项中.Workbook_Open事件不起作用,因为我无法将代码放在单个文档中,我需要它驻留在加载项中并在打开任何文档时运行.
有没有办法修改Workbook_Open事件,还是有另一种方法可以在打开不同的文档时触发宏?
我在Excel 2007中使用了一个表.我试图在一个列中基于其值和状态(在另一列中)以一种格式突出显示单元格.
例如,我试图突出显示所有单元格(仅单元格而不是行),其总利润为负数且状态为"IN".这样做的正确方法是什么?我试过if语句,但没有太大的成功.而且我不确定如何对细胞应用两种条件.我需要选择单元格的列数或范围吗?或者我是否必须选择第一个单元格并复制格式?
谢谢,
例:
Item # Status Gross Profit 1 IN $24.00 2 OUT $(34.00) 3 OUT $12.00 4 IN $18.00 5 IN $(9.00) 6 IN $(40.00) 7 OUT $32.00 8 OUT $45.00 9 OUT $23.00 10 IN $43.00 11 OUT $(18.00) 12 IN $7.00 13 IN $(25.00)
Average $6.00
我可以成功获取excel文件并将其作为PDF文件导出到c#中
private static void ExportWorkbookToPDF(string workbook, string output)
{
if (string.IsNullOrEmpty(workbook) || string.IsNullOrEmpty(output))
{
throw new NullReferenceException("Cannot create PDF copy " +
"from empty workbook.");
}
Application excelApplication = new Application();
excelApplication.ScreenUpdating = false;
excelApplication.DisplayAlerts = false;
excelApplication.Visible = false;
Workbook excelWorkbook = excelApplication.Workbooks.Open(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) +
"\\" + workbook);
if (excelWorkbook == null)
{
excelApplication.Quit();
excelApplication = null;
excelWorkbook = null;
throw new NullReferenceException("Cannot create new excel workbook.");
}
try
{
excelWorkbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF,
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) +
"\\" + output);
}
catch (Exception …Run Code Online (Sandbox Code Playgroud) 我想在EPPlus中的一个图表上绘制2个不同类型的系列(即列和线)(COM帮助导出Excel文件).任何人都知道如何做到这一点.提前致谢.
我似乎对Excel有一个相当简单的问题,虽然除了包含一个函数之外我找不到它的解决方案.
基本上我想在两个领域显示价格,一个是美元,一个是美分.
我有这个工作正常,但我有的问题是,当我在美元字段中说"24990.55"时,它将以美元显示"24991",在美分字段显示"55".
有什么办法可以强制Excel 不自动循环吗?
我目前知道两种打开和关闭 Excel 工作簿的方法,以从中提取数据以汇总在一个工作簿中。
第一种方法如下:
Dim wbDataSheet As Workbook
For FNum = LBound(MyFiles) To UBound(MyFiles)
Set wbDataSheet = Workbooks.Open(MyPath & MyFiles(FNum), 0, True)
'Capture data
wbDataSheet.Close (False)
Next FNum
Run Code Online (Sandbox Code Playgroud)
第二个是这样的:
Dim XL As New Excel.Application
For FNum = LBound(MyFiles) To UBound(MyFiles)
With XL
.Workbooks.Open FileName:=MyPath & MyFiles(FNum), ReadOnly:=True
.Visible = False
End With
'Capture Data
XL.ActiveWorkbook.Close False
Next FNum
Run Code Online (Sandbox Code Playgroud)
我的困境是这样的:
方法 1 更快(对于 1052 个文件,大约 0.35 秒/文件)但它在打开新工作簿时会爆炸我的任务栏(使得几乎不可能选择不同的 excel 工作簿)并且由于某种原因,我的代码可以通过按轻松破解多次移动或完全按住它,迫使我重新开始编写代码。
方法 2 明显较慢(对于 1052 个文件,每个文件大约需要 0.56 秒),但由于隐藏了 excel 应用程序,我的任务栏仍然可用,按 shift 不会破坏代码。
我想知道的是,有没有办法在不破坏任务栏或让 …
我正在尝试通过Excel自动发送电子邮件,但新行命令无效!我试过了<br/>, vbCrLf而且vbNewLine
.HTMLbody = "Hello" & vbNewLine & "Please find attached the above invoices and backup" & vbNewLine & _
"Any queries please let me know" & vbNewLine & "Regards" & vbNewLine & Signature
Run Code Online (Sandbox Code Playgroud)
它只是Hello Please find attached the above invoices and backup Any queries please let me know Regards作为一条线给予!
excel-2007 ×10
excel ×8
vba ×5
c# ×3
excel-vba ×3
epplus ×1
events ×1
html-email ×1
performance ×1
vsto ×1