Tag: vba

在每个当前区域之后插入2个空白行

我需要在Excel中的每个当前数据区域之后插入2个空行。 理论上我的代码应该工作,并插入它后数据,但尝试了很多次后,它插入它之前的数据没有。 我哪里做错了? 任何人都可以引导我吗? 谢谢! Sub AutoInsert2BlankRows() Selection.CurrentRegion.Select SendKeys "^{.}" SendKeys "^{.}" SendKeys "~" ActiveCell.EntireRow.Select 'this chooses the whole row Selection.Insert Shift:=xlDown Selection.Insert Shift:=xlDown End Sub 这是我的图片进一步澄清。 正如你所看到的,有3个不同的currentregions由一个空行分隔。 我需要的是除了已经存在的空白行之外插入2个额外的空行,以便在每个currentregion之间创build3个空行。 (道歉,如果我不清楚的更早。) 这里是图像的链接!

在Excel 2016中运行VBA时出现OLE错误?

我正在尝试使用Excel作为数据库,并且正在关注本网站的教程。 问题是,每当我尝试在下面的文件中更新下降,我得到这个错误:“微软正在等待另一个应用程序来完成一个OEL行动”。 我在这里错过了什么或者做错了什么,我该如何解决这个问题? 我正在使用Excel 2016家庭和学生,这是最新的。 我也打开工作簿时启用macros。 在Excel 2007中打开时,同样的文件运行良好。我还注意到,Microsoft ActiveX Data Objects 6.0库在示例中引用了“msado60.dll”,而在Excel 2016中则是“msado60.tlb”文件使用)。 链接到Excel文件 Private Sub cmdShowData_Click() 'populate data strSQL = "SELECT * FROM [data$] WHERE " If cmbProducts.Text <> "" Then strSQL = strSQL & " [Product]='" & cmbProducts.Text & "'" End If If cmbRegion.Text <> "" Then If cmbProducts.Text <> "" Then strSQL […]

为什么多个连续的不平等的条件不适用于VBA?

我想知道为什么下面的语法不能像我认为的那样在VBA中工作,我应该怎么做才能确保它的工作; For a = 1 To 10 For b = 1 To 10 For c = 1 To 10 If a <> b <> c Then MsgBox (a & " " & b & " " & c) End If Next c Next b Next a 这是一个简化的例子,仍然可以通过以下方式手动获取: if a<>b and b<>c and c<>a then 但是我的实际代码多次有10个这样的variables,这使得55个不相等的条件不可行,或者我可能会犯一个错字。 […]

如何快速*将许多.txt文件转换成.xls文件

更新:我刚刚发现有一个更强大的服务器的人将在我被分配的任务上工作,所以我没有把这个程序做得足够快。 但是,下面的答案(自动化Excel)使程序的速度提高了三倍,所以我会把它推荐给那些文件较less(但还是很多)的人。 我试图将许多(超过300,000).txt文件转换为.xls文件。 我发现如何在这里做到这一点: 批量使用VBA将TXT转换为XLS 但它真的很慢(在一个多小时内,它只转换了300,000个文件中的200个),即使这些文件不是那么大。 我试图通过closuresScreenUpdating来加快速度,但是我无法成功closuresScreenUpdating。 有人可以解释在哪里closuresScreenUpdating,以便我的代码将运行更快? 或者,更好的是,任何想法更有效的程序? 代码如下: Sub TXTconvertXLS() 'Variables Dim wb As Workbook Dim strFile As String Dim strDir As String Application.ScreenUpdating = False 'Directories strDir = 'path went here strFile = Dir(strDir & "*.txt") Do While strFile <> "" Set wb = Workbooks.Open(strDir & strFile) With wb .SaveAs Replace(wb.FullName, ".txt", […]

VBA无模式forms停止function键

我想在我的Excel程序中有我自己的帮助文件。 在里面 Private Sub Workbook_Open() 我有 Application.OnKey "{F1}", "Help" 当我在Excel工作表,但我的应用程序是基于全屏幕主要用户窗体,显示无模式。 当用户窗体可见时,以某种方式阻止F1键,macros不会触发。 我认为无模式表单不会阻止代码执行。 任何提示如何使这项工作?

使用双引号引用单元格值:Excel VBAmacros

我想把双引号内的所有单元格在一个特定的列。 我已经写了代码,把双引号,但问题是这是价值三个双引号。 For Each myCell In ActiveWorkbook.Sheets("Sheet1").Range("B:B") If myCell.Value <> "" Then myCell.Value = Chr(34) & myCell.Value & Chr(34) End If Next myCell 基本要求是根据B列分割excel文件并保存为CSV文件。 在拆分字段中,列B和D的值必须用双引号括起来。 完整代码: Option Explicit Sub ParseItems() Dim LR As Long, Itm As Long, MyCount As Long, vCol As Long Dim ws As Worksheet, MyArr As Variant, vTitles As String, SvPath As […]

如何停止Excel存储XLA的绝对path?

我有一个XLA文件要作为Excel加载项部署到组织中的许多用户。 我的意图是将其部署到“Application Data \ MyCompany”中用户的“文档和设置”文件夹中的目录中。 (事实上​​,这一切都是通过一个包装来完成的,它将本地最新版本的XLA复制到Excel加载项中)。 但是,如果用户创build了引用此XLA中定义的函数的工作表,则Excel似乎在函数调用中存储了XLA的绝对path。 因此,如果用户将该工作表发送给同事,Excel无法parsing该函数​​,因为他们的XLA副本位于不同的绝对path(因为他们的用户名是绝对path的一部分)。 到目前为止,我的信念是只要XLA被作为插件安装,Excel就“适应了”,但这似乎并不是这样。 是否真的需要为我的加载项为所有用户强制执行相同的绝对path? 这是可能的在一个单一的组织,但我真的不能相信这是真实的,因为它严重阻碍共享XLS文件。 谢谢。

如何以编程方式将Excel数据导入到Access表中?

我已经阅读了一些相关的主题,但仍然留给我这个问题。 我想在Access数据库应用程序中编写一个函数,以编程方式导入前两行之前的Excel数据,即头和单元分隔符。 我期待着完成以下的事情: 能够dynamicselect我想要导入的Excel文件,可能使用对话框,也可能是一个文件浏览器窗口。 在导入的每行中插入“通用”数据 – 就像logging仪的资产编号和logging仪的指定位置一样。 在第3行而不是第1行开始导入,因为设备会自动将logging的标题和测量单位信息放在那里。 忽略工作表中的所有其他列 – 数据总是存在于列A到列G中,数据总是从第3行开始。 这是如何Excel数据通常格式化(破折号表示数据): date时间温度露点湿球GPP相对湿度 CºCº克/ Kg% —- —- —- —- —- —- —- —- —- —- —- —- —- —- 我已经尝试了内置的Access'Get External Data'函数,但是它不会跳过第2行,Excel文件中的额外数据在尝试导入时会引发错误,从而停止进程。 我会第一个承认,在使用外部文件之前,我从来没有尝试为Access编写导入函数,因此我是一个新手。 任何帮助人可以告诉我总是会非常感激,我可以根据需要更新这个尝试的代码。 提前谢谢大家的帮助! – 编辑01/03/2011 @ 10:41上午 – 在阅读了Remou提出的Excel数据线程的ADO连接之后,下面是一些我认为可以做的工作的代码,但是我不确定。 Dim rs2 As New ADODB.Recordset Dim cnn2 As New ADODB.Connection Dim cmd2 As New […]

Excel:如何在启动时自动调整列?

有没有一种方法来自动填充包含数据的开始工作表中的所有列? 我正在寻找一个解决scheme,不依赖于某个excel文件的修改,但它适用于每个excel文件,并在excel启动时运行。

Excel – 只显示坐标轴的倍数,无论最小值和最大值

假设我有一个线形图,显示了1957年至2003年间每年的数据。 如果我格式化轴并将标签之间的间隔更改为10,则生成的标签将为 1957年 1967年 1977年 1987年 1997年 我想要的是这样的标签: 1960年 1970年 1980年 1990年 2000 如何显示后面的标签而不改变graphics的实际范围? 也就是说,我希望图表显示所有的数据,从1957年到2003年(不只是1960年到2000年)。 但是我希望标签在1960年开始3年。 有没有办法在Excel中实现这一点? (这是我处理的几十个图表的一个问题,所以编程或非特别的解决scheme是理想的,而不是手动设置每个范围标签。有时候,优选的间隔是5,有时是10,有时20等)