Tag: Excel VBA的Excel

等待DataNitro完成VBA调用

我从VBA中调用一个python脚本,如下所示: Sub python_call() Application.COMAddIns("DataNitro.DataNitro").Object.RunScript ("test.py") 'do some other stuff End Sub test.py需要一段时间才能运行,所以我希望VBA在运行剩下的代码之前等待。 除了Application.Wait之外,有没有办法做到这一点?

如何检查是否可以访问zip文件?

我有一个有很多PC名称的Excel表格。 每个PC应该有一个备份存储在服务器上的自动生成的.zip文件。 当我运行我的代码时,它会检查PC名称以检查它们是否有备份。 备份过程并不完美,因此在检测到问题后可能需要手动解决问题。 我无法检测到的问题之一是如果备份过程没有完成,并且.zip文件被损坏。 我想编写另一个函数来检测无法打开的损坏的.zip文件。 这里是代码: Sub check_for_all_backups() Dim c As Range Dim rng As Range Dim Backup As String For j = 1 To Worksheets.Count Set rng = Sheets(j).UsedRange.Cells For Each c In rng If ispcname(Left(c, 7)) = True And Right(c, 1) = "$" Then Dim i i = 1 Backup = Left(c, […]

将所有工作表保存为HTML文件

我一直在使用以下脚本将.xlsx文件转换为HTML网页。 现在我需要将这个工作簿中的所有工作表保存为HTML,这个function不起作用。 Const xlHtml = 44 Set objExcel = CreateObject("Excel.Application") objExcel.Workbooks.Open "C:\Workbook\newitems.xlsx" objExcel.ActiveWorkbook.SaveAs "C:\Workbook\newitems.html", xlHtml objExcel.Quit 谢谢你的帮助

在Excel VBA中的自动filter

我有一个很大的电子表格数据,我试图用自动filter进行过滤。 我有两个autofilter语句,当我同时运行它们时,不返回任何数据(我知道这是一个错误)。 但是,当我分别运行它们时,它们工作正常。 我不确定是什么导致这个问题。 任何帮助将不胜感激。 每个“rng”是被过滤的特定列。 rng3.AutoFilter 1, Criteria1:=Array( _ "CMS Part D (CY " & Year(Date) & ")", "Commercial", "State Medicaid"), Operator:= _ xlFilterValues rng4.AutoFilter Field:=1, Criteria1:="No"

从Excel表连接到Access数据库 – 语法错误

您好我有一个数据库与几个领域,我想只插入到其中两个信息。 从excel中提供这些信息; Sub testing() On Error GoTo errorhandler ' ' testing Macro ' ' Keyboard Shortcut: Ctrl+d ' Dim cn As Object Dim rs As Object Dim strSql As String Dim strConnection As String Set cn = CreateObject("ADODB.Connection") strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Database\Path\Here\Database.accdb" strSql = "INSERT INTO Clients (FirstName, Initial Contact) VALUES ('Joe Sixpack', 12/1/2015);" cn.Open […]

使用VBA调用Shell命令中的特定excel单元

我有一个bat文件,我希望从VBA执行。 在我的工作簿中是batch file的名称:test.bat。 由于test.bat和我的工作簿将改变我使用的文件夹 ThisWorkbook.Path 始终拥有当前目录。 不过,在放入ThisWorbook.Path之后,我无法在shell命令中插入包含batch file名的单元格。 这是我的代码到目前为止: Sub helpme () Shell "cmd.exe /k cd " & ThisWorkbook.Path & Range("B41") End Sub 请注意,只是 Shell "cmd.exe /k cd " & ThisWorkbook.Path 代码将打开一个cmd窗口并将其设置为工作簿的目录,所以这只是插入单元格B41中包含的“test.bat”string以执行bat文件的问题。 非常感谢您的帮助,我希望这是一个简单的修复:)

如何根据VBA中命名的开始和结束单元格select一系列单元格?

我将数据从一个MySQL数据库拖到工作表中,方法是将其保存为csv并将该csv数据粘贴到工作表中。 这个csv保存所有客户端的所有数据,由标记单元格分隔,如“Client1:START”和“Client1:END”。 然后我运行一个macros来复制两个页面:一个来自汇总表中的各个客户端数据,另一个具有运行该数据的图表。 几乎所有工作都已经完成:复制所有页面,并更新图表和从客户端的数据表中提取信息的单元格。 剩下的唯一的事情就是把数据从汇总的表格复制到每个客户的表格中。 我给了这个很多的想法,似乎是最简单的方法来做到这一点,因为我不知道一个给定的客户端将产生的行数(零和31之间的任何东西,因为这是一个月报告)在该客户机的第一行之前的行的第一个单元格中具有“Client1:START”,并且在该行之后的第一个单元格中具有“Client1:END”。 然后,我可以直接search单元格,直到find这两个单元格,然后命名它们(因为我不知道如何将单元格地址保存在variables中),然后以某种方式将它们抵消以获得我想要的实际范围标记。 然后我可以复制该范围并将其粘贴到新创build的数据表中。 实际上,我甚至还没有得到抵消。 我仍然试图根据他们的名字来select单元格。 这是我的: Dim Client Dim SelectedCell Dim StartCell Dim EndCell For Each Client In Array("Client1", "Client2") StartCell = Client & "StartCell" EndCell = Client & "EndCell" Sheets("ALL-DATA").Select For Each SelectedCell In Range("A1:D20") If SelectedCell.Value = Client & ":START" Then SelectedCell.Name = StartCell End If If SelectedCell.Value […]

Excel VBA – 自动筛选的行数总是返回1

我目前使用自动filter来筛选两列。 如果自动筛选的结果仅对可见单元格为空,则会添加一个新行。 如果find除标题以外的任何行,则将显示一个MsgBox。 问题是行数总是返回1.我试过重新定义“rng”几个方法无济于事。 Dim ws As Worksheet Dim rng As Range Set ws = Sheets("Scored Items") Worksheets("Scored Items").Activate ws.AutoFilterMode = False With ws .Range("A:D").AutoFilter Field:=1, Criteria1:=AssetBox.Text .Range("A:D").AutoFilter Field:=4, Criteria1:=PartBox.Text Set rng = .Range("A:A").SpecialCells(xlCellTypeVisible) If (rng.Rows.Count = 1) Then 'Add new row based on VBA form Else MsgBox "Item has already been scored" End If […]

对象'_Worksheet'的方法'Range'失败 – 命名范围并在VBA中引用它

在一个macros中,我试图select一个范围,命名它,然后在自动过滤数据时引用该范围。 这是我的代码: 'Select and name range Set bDataDump = ActiveWorkbook Set DataDump = bDataDump.Sheets(1) DataDump.Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Selection.AutoFilter Range(Selection, Selection.End(xlDown)).Select Set myrange = Selection 'AutoFilter that range for everything but PDC1 and delete visible rows 'Code fails on next line DataDump.Range("myrange").AutoFilter field:=11, Criteria1:="<>""PDC1""" ActiveCell.Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete DataDump.ShowAllData 当我运行macros时,我得到了对象“_Worksheet”失败的“方法范围”,debugging器突出显示了第二块代码的第一行作为罪魁祸首。 我一直没能在这样的过滤数据网上find任何例子,所以我希望有任何的洞察力,我做错了什么。 谢谢!

在网站上search有条件改变不同的单元格

我目前正在尝试在VBA中编写代码,这个代码的目的一般是: 在定义的范围内input单元格“A”。 从这个特定的单元格(在范围内),我想要从网站search的不同信息打印在input单元格“A”旁边。 更具体地说,我想写一个代码,在那里我可以在列中input特定的股票代码(即“IBM”),当我这样做时,程序开始,到finance.yahoo.com,收集不同的信息关于这个特定的股票(即“国际商业机器”),并打印这个信息“右边”的单元格,我首先input股票代码。 我们的目标是能够input20-30个股票代号,并且可以检索每个代码的信息并将其打印在股票代码的右侧。 我已经想出了如何在特定的单元格中input一个代码,并从网站中获取所需的数据,然后将其打印到input单元右侧的特定单元格中。 我现在面临的挑战是能够为第一个input单元下面的大量单元做到这一点。 我的代码截至目前: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = Range("Sheet1!$A$2").Row And _ Target.Column = Range("Sheet1!$A$2").Column Then Dim IE As New InternetExplorer IE.Visible = False IE.navigate "http://finance.yahoo.com/q;_ylt=AiMiBWm16z_q5Ai0SlNb3jaiuYdG;_ylu=X3oDMTBxdGVyNzJxBHNlYwNVSCAzIERlc2t0b3AgU2VhcmNoIDEx;_ylg=X3oDMTBsdWsyY2FpBGxhbmcDZW4tVVMEcHQDMgR0ZXN0Aw–;_ylv=3?s=" & Range("Sheet1!$A$2").Value 'This types in the value from my input-cell into the website, so i get directed to the webpage for […]