我在寻找可能的解决scheme来解决潜在的问题方面遇到了一些麻烦。 我正在为使用VBA的主pipe编写一个macros,以便她可以单击分配给此macros的button,并按照指示获取所需的数据。 我遇到的问题是当macros粘贴数据时,如果用户select多个列,则在删除空单元格时遇到问题。 Sub DataPull() ' Written by Agony ' Data Pull macro Dim rng1 As Range Dim rng2 As Range Dim chc1 Dim chc2 Dim wb1 As Workbook Dim wb2 As Workbook 'Choose file to get data chc1 = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", _ , "Please select file to pull data from") If chc1 […]
假设我有看起来像这样的HTML源代码 <div id="book-info"> <span class="title">Weather</span> <span class="title">Title Of Book</span> <p><a href="http://test.com?MMC_ID=34343">Buy Now</a></p> </div> 我需要的是“书名” 有很多span class =“title”的实例,但是我需要立即在页面上唯一的MMC_ID标记之前,所以我可以使用MMC_ID作为标记来接近我需要的span标记。 问题:怎样才能说:“把第一个span标签的内容抓到MMC_ID的左边? 下面的代码有时会起作用,但页面上的span标签数量是可变的,所以在发生偏差时会失败。 With CreateObject("msxml2.xmlhttp") .Open "GET", ActiveCell.Offset(0, -1).Value, False .Send htm.body.innerhtml = .ResponseText End With ExtractedText = htm.getElementById("book-info").getElementsByTagName("span")(1).innerText
我真的是新来的VBA,但我已经设法编写一些基于主要来自这个网站的例子的代码。 这段代码应该将数据从多个csv文件复制到一个xls文件(然后重命名源csv文件)。 虽然它在Excel 2003中正常工作,但在Excel 2010/2013中无法正常工作(我无法在E2007中对其进行testing)。 它从第一个csv文件复制到xls文件后,似乎停止,所以在这一行之后: Range("B4:AZ" & LR).Copy wbDEST.Sheets("Data").Range("B" & NR) 错误1004“应用程序定义或对象定义的错误”。 debugging器突出显示下一行,即 NR = wbDEST.Sheets("Data").Range("B" & Rows.Count).End(xlUp).Row + 1 我只是看不出有什么问题,因为在代码的开头使用了相同的行,并没有停在那里。 我会很感激你的build议。 这里是整个代码: Option Explicit Sub ImportData() Dim fPATH As String, fNAMEcsv As String, fNAMEbak As String Dim LR As Long, NR As Long Dim wbSOURCE As Workbook, wbDEST As Workbook Set wbDEST = […]
我有一个代码来自动发送一个电子邮件,当一个单元格达到一定的价值。 (下面) 如果发生错误并且单元格被删除,它也会发送电子邮件。 我需要添加到代码停止发送,如果我从单元格中删除值? 提前致谢。 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Application.Intersect(Range("M4:M368"), Target) Is Nothing Then If IsNumeric(Target.Value) And Target.Value < 1000 Then Call Fuel_LevelW01D End If End If End Sub
我试图使用Excel(主要是2003,为了更多的用户兼容性)连接到远程Oracle数据库。 我想运行.sql脚本并将数据集返回到工作表。 我在Windows 7 64位机器上。 我不知道Oracle数据库服务器的规格。 我想尽可能保持轻量级(客户端机器上没有额外的文件安装,尽可能使用共享的networking位置来存储所需的文件) 至今: 我从Oracle(32位和64位版本12.1和11.2)下载并“安装”InstantClient到远程networking位置。 我尝试使用SQL Plus连接到Oracle数据库,它工作正常(我试了几个安装的InstantClient版本,看看是否会有任何兼容性问题)。 作为一个testing:在VBA中使用SQL Plus和Shell函数,我能够成功地将数据caching到一个单独的excel文件中。 我尝试了几种不同的连接string格式,使用各种驱动程序/ Driver = {instantclient_11_2中的Oracle} Driver = {Microsoft ODBC for Oracle} 供应商= MSDAORA 供应商= MSDAORA.1 供应商= OraOLEDB.Oracle 收到的错误: "Run-time error '-2147467259 (80004005)': [Microsoft][ODBC Driver Manager] Driver's SQLAllocHandle on SQL_HANDLE_ENV failed The Oracle(tm) client and networking components were not found. These components are supplied […]
我试图自动化有5个不同的信息来源的报告。 我尝试使用ListObjects将不同的表组合成一个单独的表,除非当我复制第一个ListObject的第一列时,一切正常。 复制第一列大约需要2分钟,接下来的列不到1秒。 每次运行VBA脚本时,我都会删除目标表中的所有行,以便使用带有0行的ListObject来启动VBA脚本。 我会试着解释它是如何工作的: Sub ProcesarPresupuesto() 'This is the first macro that process and copy the information of the first source Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual '<Here> I add several columns and process the information of this first source, I keep all the rows as values using the Function: AddColumnFormula […]
我有一个公共的UDT,并且想把它作为一个普通模块的Public Sub中的参数。 然后我得到一个编译错误: 只有在公共对象模块中定义的公共用户定义types可以用作类模块公共过程的参数或返回types,或者可以用作公共用户定义types的字段。 我不太清楚,UDT和SUB是公开的。 这是我定义的UDT。 Public Type perf retailer As String sale As Integer cateDiscrip As String prodCode As String forecast As Integer score As Double End Type 基本上,我想存储一个表(与零售商,类别描述,产品代码等)到一个数组中,然后按零售商sorting,对同一个零售商,按类别sorting。 我从另一张纸复制他们,然后将其粘贴到当前工作簿“数据”表中。 然后,我定义了一个公共UDT并将它们存储在一个数组中。 Public Sub getlist() Dim highvol() As perf Dim lowvol() As perf Dim oneArr() As perf Dim i As Integer Dim s As Integer […]
我在Excel 2007中打开一个ADODB连接来查询当前工作簿的工作表之一。 当试图添加一个自定义的VBA函数时,错误会引发“未定义的函数名称”。 连接: Dim connection As String Dim records As ADODB.Recordset Dim query As String Dim fileName As String fileName = ThisWorkbook.FullName connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";" query = "select t.[Col1] from [Sheet1$] As t" Set records = New ADODB.Recordset records.Open query, connection Sheets(2).Range("A1").CopyFromRecordset records 我想实现的是在select另一列,比如 query = […]
我目前知道有两种方法可以打开和closuresexcel工作簿,从中提取数据并在一个工作簿中进行汇总。 第一种方法如下: 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 其次是这样的: 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 […]
我试图得到一个我可以分配给我的命令button的macros。 我有多个button,打开不同的文件,所以在每个单元格我包括一个不同的文件path。 目前我的命令button正在寻找特定的单元格引用并打开该值。 有没有什么办法可以让macros查找它alignment的单元格中的值? 我现在使用两个macros – 一个是创buildbutton,另一个是分配给button。 我不得不为每个button创build一个新的macros。 macros创buildbutton… 子button() Dim i As Long Dim lRow2 As Integer Dim shp As Object Dim dblLeft As Double Dim dblTop As Double Dim dblWidth As Double Dim dblHeight As Double With Sheets("Print Schedule") dblLeft = .Columns("A:A").Left 'All buttons have same Left position dblWidth = .Columns("A:A").Width 'All buttons […]