Tag: 工作表

Excel工作表占用大量的内存没有明显的原因

我为Excel中的一些客户端devise了一个工具,它包含一个充当用户input表单的工作表。 在表单上是一个active-x组合体,8个带有指定macros的形状,以及一个用颜色和边界格式化的范围,用于向客户端显示数据。 出于某种原因,这张表占用了大约3Mb的内存。 我已经做了一个副本,当删除这张纸时,文件大小下降到200Kb左右,一切都更顺畅。 我无法弄清楚为什么会出现这种情况。 到目前为止我已经尝试过: 取消隐藏所有行/列并填充所有单元格为“无填充” 消除过多的格式化工具(function区上的“查询”选项卡) 逐个删除所有形状/combobox 删除边框和所有文字 “解体”所有合并的单元格 删除不使用的样式 删除条件格式 似乎没有任何工作。 毕竟我是坐在一个完全空白和无用的工作表,仍然在删除工作表后,文件大小下降了3MB,即使我有10个其他工作表上有大量的数据。 有没有人有任何其他的build议,为什么这可能会发生,如果是的话,可以做些什么来纠正呢? 难道这与我的VBA有什么关系吗?还是擅长投掷摇摆?

如何使用来自数组的数据来处理工作表

我面临以下问题: 我已经编写了代码来读取一系列的数据,将数据存储在数组中,然后用数组中的名称插入工作表。 工作正常,代码如下: For intZaehler = 0 To UBound(arrGliederungsebenen) – 1 ActiveWorkbook.Worksheets.Add(before:=ActiveWorkbook.Worksheets("7_Steuern")).Name = arrGliederungsebenen(intZaehler) arrGliederungsebenen已经存储了数据,我想用新的名字命名。 我保持简单的命名: arrGliederungsebenen(0) = 1 arrGliederungsebenen(1) = 1.2 arrGliederungsebenen(2) = 1.3 arrGliederungsebenen(3) = 2.1 and so forth 接下来,我想将以前复制的模板粘贴到newley插入的表单中。 我现在面临的问题是如何正确处理新添加的表格: 不幸的是Activesheet.paste Destination:=Worksheets(arrGliederungsebenen(intZaehler).Name).Range("A1:0354").Offset(, 24 )不起作用。 任何人都可以告诉我,如何正确处理工作表的名称与数组中的数据?

工作簿不在MsWord中打开,并要求修复和修复后显示xml错误

我已经使用Closedxml.dll将数据集导出为ex​​cel。 我在Excel中有一个结束date列,所以如果date过期,我改变了单元格的颜色。 现在我试图显示该单元格的评论,我已经尝试了下面的代码。 当我尝试打开该文件时,它显示要修复,修复后显示如下错误,并参考图像 replace部分:XML错误/ xl / worksheets / sheet.xml部分。 加载错误。 第1行第0列 我绑定工作表的Datable和使用以下条件来更改过期date的颜色。 它的工作,直到那,如果尝试添加该过期的单元格的评论,那么它显示上述。 我试过的代码放在下面。 DateTime PresentDate = (DateTime.Now.Date); var C_Cell = WorkSheet.Cell("C" + Loop).Value == null ? "" : WorkSheet.Cell("C" + Loop).Value.ToString(); if (C_Cell != "") { if (Convert.ToDateTime(C_Cell) <= PresentDate) { WorkSheet.Cell("C" + Loop).Style.Fill.SetBackgroundColor(XLColor.OrangeRed); WorkSheet.Cell("C" + Loop).Comment.AddText("Expired"); } } 任何人都可以帮我解决这个问题。

如何删除第一张纸或读取第二张excel文件

我有非常不寻常的和不可理解的困境,删除第一张表和阅读我的第二张excel文件。 我想我完全知道如何读取Excel文件的第二张图片: read.xlsx2("excelfile.xlsx", SheetIndex = 2)或read.xlsx2("excelfile.xlsx", SheetName = "secondsheetsname") 但是每次我这样做的时候,都会一直显示出来,因为我有许多这样的excel文件,需要阅读第二张纸,所以我一直很痛苦。 我需要阅读许多Excel文件的第二张。 任何人都可以帮我读一下第二张纸或者一次性删除第一张excel文件,或者使用R自动删除它吗? 我附上了一些文件 ,以便让大家尝试。

公共/全球范围似乎并非始终可用

我想让工作表在特定单元格更改时运行一个macros。 我已经使用下面的代码来初始化确定哪些单元格将导致macros运行的范围,但似乎这个范围的生命周期不是应用程序? Public ChangeCellList As Range Private Sub Workbook_Open() With Sheets("Program") For i = 7 To .Cells(Rows.Count, "E").End(xlUp).Row If Not IsEmpty(.Cells(i, "E")) Then If ChangeCellList Is Nothing Then Set ChangeCellList = .Range("E" & i) Else Set ChangeCellList = Union(ChangeCellList, .Range("E" & i)) End If End If Next i End With End Sub 可能的问题我将不胜感激的build议: 1)声明公共variables的正确位置(例如module1 /这个工作簿/ […]

在Excel VBA中获取工作表区域的大小

我需要Excel VBA中的工作表区域的像素宽度和高度。 这是工作表中单元格显示的区域。 因此它必须排除所有其他Excel UI元素。 我试图使用GetSystemMetrics和SystemParametersInfo但没有find解决scheme。

从每月更改名称的工作表中提取数据

我每个月都下载一个文件。 我从其中一张表中提取数据并粘贴到另一个文件中。 我将整个过程自动化 – 唯一的问题是它的工作表每个月都会更改名称,但是它只会从1703更改为1704到1705等。我已经使用以下代码识别了此更改: Dim newDate: newDate = Format(DateAdd("M", -1, Now), "YYMM") 并且我下载的工作表和工作簿的名称将是: filename = "BSR" & "_" & newDate & ".xlsx" 我怎么能把它放在复制粘贴代码。 即: wbsecond.Sheets("filename").Range("A1:AD1105").Copy _ Destination:=wbfirst.Sheets("FX").Range("A1") 整个代码如下: Sub fx() Dim filename As String Dim newDate: newDate = Format(DateAdd("M", -1, Now), "YYMM") Dim wbfirst As Workbook Dim wbsecond As Workbook Dim staticFolder As String […]

启用受保护工作表的Excelfunction区上的清除筛选器

即使微软说这是不可能的: 不能清除在受保护的表中的自动filter ,我仍然认为这应该是可能的。 至less我希望。 我知道我可以逐个清除列中的filter,但是我希望用户能够在functionRibbon/Sort&Filter部分单击Clearfunction。 ( 目前已禁用/变灰 ) 互联网上有很多问题,但没有一个是真正有用的。 有没有可能? 我试着将Worksheet_Change事件定义为Unprotect Sheet,但这样做根本不合理,因为它会减慢我的工作表,并且无法find正确的条件来定义到Worksheet_Change 。 在这个例子中, 只要select$:$行,它就会运行。 所以我需要另一个明智的build议。

对于工作簿中的所有工作表,i = 2到thisworkbook.worksheets.count

谁能帮我吗? 我试图让我的代码循环通过工作簿中的所有工作表。 它完美的一个工作表,但我努力使其遍历所有的工作表 Sub stringcheck() Dim MainString As String Dim SubString As String Dim Lastrow As Long, Lcount As Long Dim i As Integer, j As Integer SubString = "All Grps" Lastrow = ThisWorkbook.Worksheets("SalesChannelName").Range("A30000").End(xlUp).Row For i = 3 To Lastrow MainString = Range("B" & i) If InStr(MainString, SubString) <> 0 Then Rows(Range("A" & i).Row + […]

使用旧VBA应用程序的Web最简单,最快捷的方式

给定一个小的Excel VBA应用程序(单个表单,less量logging保存在单个工作表中),在工作站上本地运行得非常愉快,在networking上提供相同应用程序的最简单和最快捷的方式是什么? 重写应用程序是一个选项,但我认为这是值得检查是否有一个更快的解决scheme。