Tag: vba

VBA CreateObject

从1月10日起,我被困在了这个代码行,我在电子邮件中find了它,我发现我不得不学习上课模块,所以我现在要回来问一个新的基础。 代码行是(严重警告:您必须到VBE中的工具 – >引用并使用早期绑定激活Microsoft WinHTTP Services,版本5.1 ): Dim WinHttpReq As Object Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") 对于CreateObject我去MS帮助和说: 创build并返回一个ActiveX对象的引用 现在我知道,当我们创build一个引用时,它只是一个对象,并且是这样做的(请纠正我,如果我错了): Dim ThatIKnow as Workbook 那么我们就像这样实例化它 Set ThatIKnow = Workbooks.Add 为什么我们需要CreateObject? 帮助继续说“ …一个ActiveX对象 ” 如果我点击帮助上的ActiveX,它会指出这样的术语表: 通过自动化接口暴露给其他应用程序或编程工具的对象 而这条线绝对没有告诉我什么。 我所知道的ActiveX就是这个 …我认为是ActiveX控件…(我必须承认,虽然ActiveX对我来说一直是一个模糊的术语) 现在在CreateObject( “WinHttp.WinHttpRequest.5.1” )里面,我search了Web,并且找不到一些像WinHttp对象那样的MS帮助。 无论如何,对象浏览器将其作为库,但F1帮助button什么都没有显示。 所以对象浏览器说这是一个图书馆,我发现它在networking中称为WinHttp参考,也作为一个WinHttp对象。 这些是什么? 而为了上帝的爱,为什么叫做“ 5.1 ”? 我没有发现WinHttpRequest.5.1任何地方 我不是要求嚼碎食物,但是任何破坏阿尼格玛的努力都会使整个局面更加紧张。 请任何捏,可以帮助我破解这一行代码将帮助 感谢您收看我的问题

从Excel中将数据插入到SQL DB中

我创build了一个Excel工作表,它执行一些查找来格式化需要插入到另一个表中的数据。 这个Excel工作簿需要给一些用户自由地添加一些新的行,然后需要能够点击“插入数据库”button,并将logging转换并作为新logging插入SQL表中。 我正在使用Excel 2010和SQL Server 2008.我有一个连接到数据库,因为我正在使用它来拉回一些数据,以validation新添加的行,但我不知道如何然后插入数据。

用VBA声明一个相对于活动单元的范围

我需要声明一个相对于活动单元格的范围对象。 问题是,每次macros运行时,我想要select的行数和列数都是不同的。 例如,我有两个variables: numRows和numCols 。 我想select一个范围,在左上angular的ActiveCell中有ActiveCell.Row + NumRows行和单元格ActiveCell.Column + NumCols在右下angular的单元格(然后我打算复制这个数据到一个数组加快我的macros观)。 任何build议如何做到这一点?

使用“范围”的“单元格”

我一直在寻找这一点,而且我还没有成功。 我想在VBA中使用与单元格命令范围,最后一行是可变的。 而且,我没有获得连续的专栏。 我必须select范围S2:S9和U2:U9 ( U2:U9 ,最后一行可以是variables)。 我知道这个命令的作品: Range(Cells(2, 19), Cells(NumberofRows, 19)).select 但是我需要select2个不连续的列。 我正在尝试这样的事情,但没有成功: Range(Cells(2, 19), Cells(NumLinhas, 19);(Cells(2, 21), Cells(NumLinhas, 21)).Select 有谁知道如何做到这一点?

我如何激活特定工作簿和特定工作表?

如何从当前工作簿激活我的其他工作簿? 我有一个当前的工作簿与dumb.xls和另一个工作簿名称Tire.xls.I已经打开从dumb.xls Tire.xls使用worksbooks.open filename:= "name of the file"它变得打开,但问题是我无法使其工作。 如果我说cells(2,24).value=24将这些值放在dumb.xls的单元格中,但我希望它完成一个Tire.xls。 activesheet.cells(2,24).value=24把这些放在Tire.xls上。 但是,如何以名称激活工作簿? 我需要打开3到4个Excel工作簿并执行操作? 如何激活特定的工作簿 我在谷歌上find了这个代码 activeworkbook.worksheet("sheetname").activate ' but not working windows("sheetname").activate ' people on google suggested not to use 它没有被激活。 我不知道如何使它工作。 任何人都可以告诉我如何激活特定工作簿和其他工作簿的特定工作表? 例如:我有niko.xls和niko_2.xls打开作为工作簿从dumb.xls工作簿,所以完全3个工作簿,我必须激活第二张niko_2.xls工作簿。我该如何做? 任何人都可以用这些例子来解释我的语法吗? 先谢谢你

VBA ActiveWorkbook / RefersToLocal – 1004应用程序定义的错误或对象定义的错误

执行以下行时,会引发1004运行时错误(应用程序定义的错误或对象定义的错误) rangeString = ActiveWorkbook.Names.Item("MyTableName").RefersToLocal 我不能看到我的代码有什么问题,表名似乎是正确的。 这个代码是在一个类模块中,我不是一个vba专家,所以我不知道是否引入任何问题,范围等

打开Word文档并将其放在前面

下面是一个(工作)代码片断,它打开一个Microsoft Word文档,并从目录转到特定的索引。 filePath只是一个文件path, strTopic是一个链接到Word文档中的ToC的值。 Set objWord = CreateObject("Word.Application") objWord.Visible = True Set docWord = objWord.Documents.Open(fileName:=strPath, ReadOnly:=True) docWord.Bookmarks(strTopic).Range.Select 但是,我需要将Word文档放在前台。 这是可能的VBA首先? 有没有toFront()types的“函数”我可以使用? AFAIK C#有像app.ActiveWindow.Activate(); 但我不能在vba中获得类似的工作。

计算另一个工作表中的行数

我已经看了build议的问题find我的问题的答案。 最接近的问题叫做:统计另一个Excel工作表中不同的Excel Sheet Sheet中的行数 解决这个问题不适合我。 我正在计算不同工作表中的活动工作表的范围内的行数。 这是我的代码: Sub verbflashcards() Dim wordcount As Long With Worksheets("Verbs") wordcount = .Range(Cells(4, 1), Cells(4, 1).End(xlDown)).Rows.Count End With MsgBox (wordcount) End Sub 我有一个名为Verbs的工作表,它是工作簿中的第二个工作表。 我努力了: With Verbs With Sheet2 With Sheets("Verbs") With Sheets("Sheet2") 他们似乎没有任何工作。

VBA整数溢出70,000

我有一个包含70,000行数据的工作表和一个简单的macros来计算总行数: Dim LastRow as Integer LastRow = SourceSheet.Cells.Find(what:="*", searchdirection:=xlPrevious, searchorder:=xlByRows).Row MsgBox (LastRow) 这将返回一个溢出错误。 将LastRow更改为Long将返回70,000的正确值。 根据微软的网站 ,一个VBA整数应该能够保持在-2,147,483,648和2,147,483,647之间的值。 我的输出是在这个范围内,那为什么会失败呢? 谢谢!

从化学公式中提取数字

道歉,如果这已经被问及答复,但我找不到满意的答案。 我有一个化学公式列表,按顺序包括:C,H,N和O.我想在每个字母后面加上数字。 问题是并不是所有的公式都包含一个N.然而,所有的公式都包含一个C,H和O. 这个数字可以是单数,双数或(只在H的情况下)三位数。 因此数据如下所示: C20H37N1O5 C10H12O3 C20H19N3O4 C23H40O3 C9H13N1O3 C14H26O4 C58H100N2O9 我想列表中的每个元素编号在单独的列。 所以在第一个例子中是这样的: 20 37 1 5 我一直在尝试: =IFERROR(MID(LEFT(A2,FIND("H",A2)-1),FIND("C",A2)+1,LEN(A2)),"") 分离出C#。 然而,在这之后,我被卡住了,因为H#的两侧是O或N. 有没有可以做到这一点的Excel公式或VBA?