Tag: 工作表

C#从excel文件读取数据结果在###

我用这个代码从Excel文件中读取数据 Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; Microsoft.Office.Interop.Excel.Range range; int rCnt = 0; int cCnt = 0; string[,] data; xlWorkSheet = (Worksheet)wb.Worksheets.get_Item(sheetId); range = xlWorkSheet.UsedRange; data = new string[range.Rows.Count, range.Columns.Count]; for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) { for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) { data[rCnt – 1, cCnt – 1] = (string) (range.Cells[rCnt, cCnt] as […]

保护Excel工作表为只读但启用外部数据刷新

我有一个Excel 2010工作簿。 一个工作表从外部数据连接(SQL查询)导入数据。 我还在工作表中添加了额外的列来对数据进行计算并对其进行一些处理。 工作表形成其他工作表中使用的原始数据的主干。 我想保护工作表,使其只读(允许sorting,filter,数据透视表使用)。 我知道如何使用保护工作表function。 但是,当工作表受到保护时,我无法使用“刷新”button来刷新源数据,我希望用户能够执行此操作。 我打算将连接属性configuration为在打开时自动刷新并允许手动刷新。 有没有人find一个优雅的方式来启用保护工作表function,并启用外部数据刷新,而不允许用户更改自己的单元格值?

在Excel中将整个工作表链接到另一个工作表

我有两个工作表,逻辑上应该看起来相同的工作表。 我不想手动维护它们的相同性,所以我想dynamic地链接它们(就像在使用公式的单元格之间做的一样):“= A1”)。 我想链接整个电子表格,而不仅仅是几个单元格。 有没有办法做到这一点,而不使238427398729公式,从而使我的机器崩溃? 有没有一种方法可以将“= sheet2”作为定义整个表格内容的公式来表示?

单元格由公式更改时VBA代码不会运行

工作表A具有从工作表B收集的数据范围。 工作表A有一个macros,用于计算数据是否高于某个值,然后调用电子邮件模块向选定的用户发送电子邮件。 当工作表A上手动input数据时,macros工作,但是当从工作表B中提取数据时,它不会触发。 我不知道我需要改变我的VBA代码。 Private Sub Worksheet_Change(ByVal Target As Range) Call MailAlert(Target, "B5:M5", 4) Call MailAlert(Target, "B8:M8", 7) Call MailAlert(Target, "B11:M11", 6) Call MailAlert(Target, "B14:M14", 2) Call MailAlert(Target, "B17:M17", 4) Call MailAlert(Target, "B20:M20", 1) Call MailAlert(Target, "B23:M23", 3) Call MailAlert(Target, "B26:M26", 1) Call MailAlert(Target, "B29:M29", 5) Call MailAlert(Target, "B32:M32", 1) Call MailAlert(Target, "B35:M35", 7) Call […]

Worksheet_change:删除整个列值,在此操作之前识别非空单元格

我有一个工作簿,用于input主表单,主表单中的值根据主表单中“types”列的单元格值复制到2个子表单中。 子表单中的“注释”列中的任何值都将作为注释添加到主表单的相应行中。当子表单中的“注释”列中的值一次性删除时,我想标识在这个动作之前的非空单元格,并删除主表中的相应注释。 目前我已经编写了代码,如果在子表单的“注释”列中添加/删除了一个值,然后在主表单的相应条目中添加/删除注释。 Private Sub Worksheet_Change(ByVal Target As Range) Dim temp As String Dim tem As String With Target If .Count = 1 And .Column = 8 And .Row < 600 Then tem = .Row If Sheets("Parts- input").Cells(tem, 8).Comment Is Nothing Then If Sheets("Pins").Cells(.Row, .Column).Value = "" Then Sheets("Parts- input").Cells(tem, 8).Comment.Delete Else Sheets("Parts- input").Cells(tem, 8).AddComment […]

最后保存date在Excel工作表页脚

我正在使用具有多张工作表的Excel 2007。 我需要有工作表上次保存的date – 页脚。 我能够find以下内容: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets With ws.PageSetup .LeftFooter = "Last Save Time: &T" .RightFooter = "Last Save Date: &D" End With Next ws Set ws = Nothing End Sub 这改变了每个工作表。 我只需要它就可以更改已编辑的工作表(因此每个工作表可以有不同的date)。 这甚至有可能吗? 我应该使用单元而不是页脚? 或者我必须创build多个工作簿? 谢谢!

通过Excel工作表循环并将文本保存到TXT文件与C​​#

我已经解决了大部分问题。 我可以通过工作表循环,我可以创build文本文件并写入它。 我遇到的唯一问题实际上是从每张表中提取文本或值。 下面是我有的代码,但它只是抛出每个工作表一个对象,并写入到我的文本文件,而不是实际的值。 System.Object[,] System.Object[,] 我还有什么遗漏? 我应该指出我是一名初学者程序员。 这是我迄今为止的代码: using (StreamWriter sw = File.CreateText("ExtractedText.txt")) { Excel.Application xlApp = new Excel.Application(); Excel.Workbook thisWkBook = xlApp.Workbooks.Open(thisFile); foreach (Excel.Worksheet sheet in thisWkBook.Worksheets) { sw.WriteLine(sheet.UsedRange.Value); } } 有任何想法吗? 谢谢!

比较两个不同Excel表格和工作簿中的列,然后将匹配值发布到另一列中

我在试图弄清楚这个macros时遇到了很多麻烦,所以现在我在一个工作簿中使用了两张表格。 我想使用两个不同的工作簿,但这不像问题那么重要。 要解释,Sheet1列E是ID号,在Sheet2列A是ID号,现在如果Sheet1 E中的任何值匹配Sheet2列A中的值,我需要macros从Sheet 2列D中复制相应的单元格所以基本上如果E5(从表1)匹配Sheet2中的A1,我需要macros将Sheet2的D1输出到Sheet1的F5。 如果Sheet1列E与Sheet 2列A中的值不匹配,也可以删除Sheet1列F的值。 我有一些代码,但它只是从Sheet2的列D粘贴值如果Sheet1列E的值匹配Sheet2列A的值。问题是当从Sheet2粘贴的值粘贴在Sheet1的列F中,并且值不是与在Sheet2中匹配的正确值匹配。 他们只是愚蠢的。 所以如果Sheet1列E是这样的 Sheet1 Column E Sheet1 F 1317 relays_120x120.jpg 1319 Control%20boards_120x120 1320 Control%20boards_120x120 Sheet2 Column A Sheet2 column D 1317 relays_120x120 1318 /relays_120x120 1319 ebay/SingleRunOval 但实际上,我需要它们都是相等的,如果Sheet1列E的值不是Sheet2列中的值,那么不要在Sheet1列中发布链接F将其留空。 这是我的代码 Sub FindMatches() Dim oldRow As Integer Dim newRow As Integer Dim i As Integer i = 1 For oldRow = […]

Excel将不会显示工作簿工作表

我有一个Excel工作簿包含三个工作表。 然而,所有工作表似乎都隐藏着,因为它们的可见性设置为xlSheetVisible(通过查看VBA编辑器中的工作表属性来find)。 这是我迄今为止所尝试解决的问题。 向Google寻求帮助,但所有类似的问题已经通过将可见性从xlSheetHidden更改为xlSheetVisible来解决。 但在我的情况下,该设置已被设置为xlVisible。 通过使用VBA我试图激活一个表没有任何结果。 通过阅读本文,您可能已经猜到,我能够从VBA编辑器中查看和访问工作表。 尽pipe看着正常的Excel用户界面,所有的button都被禁用了,并且点击办公室/文件button,但不允许我保存工作簿。 但是,如果我对VBA本身进行了任何更改并尝试closures工作簿,Excel会询问是否要保存工作簿。

当我尝试在Excel工作表上运行查询时出现“名称的无效包围”错误

为了做一些报告,我需要parsing一些excel文件。 当我尝试从表格中selectlogging时,出现下一个错误:名称'1的包围无效。 页面$”。 下面是我的代码: OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [1. page$]", connectionString); 我知道这将工作,如果我重命名工作表为“页”例如,但由于我不是命名这些表,我需要知道如何解决这个查询工作,因为它是。 我该怎么办?