Tag: vba

如何将所有表从Access数据库导出到Excel中 – 每张表的表单

我有一个Access数据库〜30表。 如何将所有30个表格导出到Excel工作簿的单独工作表中? 我希望find一些VBA / VBS代码,我可以在Access内运行来完成这个任务。 有任何想法吗?

如果元素是特定值VBA,则删除数组中的元素

我有一个全局数组, prLst()可以变长。 它取数字作为string"1"到Ubound(prLst) 。 但是,当用户input"0" ,我想从列表中删除该元素。 我有写下面的代码来执行此操作: count2 = 0 eachHdr = 1 totHead = UBound(prLst) Do If prLst(eachHdr) = "0" Then prLst(eachHdr).Delete count2 = count2 + 1 End If keepTrack = totHead – count2 'MsgBox "prLst = " & prLst(eachHdr) eachHdr = eachHdr + 1 Loop Until eachHdr > keepTrack 这不起作用。 如果元素为"0"如何有效地删除数组prLst的元素? 注意:这是一个更大的程序的一部分,可以在这里find描述: 对行进行sortingExcel […]

在Excel中计算唯一值

我需要在Excel中计算范围(C2:C2080)中的唯一值。 Google配方: =SUM(IF(FREQUENCY(MATCH(C2:C2080;C2:C2080;0);MATCH(C2:C280;C2:C2080;0))>0;1)) 返回不正确的值。 UPD:Lame解决scheme: Sub CountUnique() Dim i, count, j As Integer count = 1 For i = 1 To 470 flag = False If count > 1 Then For j = 1 To count If Sheet1.Cells(i, 3).Value = Sheet1.Cells(j, 11).Value Then flag = True End If Next j Else flag = False End […]

Excel VBA:On Error Goto语句不能在For循环中工作

我试图在excel中循环表格。 这个表格的前三列有文字标题,其余的有标题的date。 我想将这些date顺序地分配给Datetypes的variables,然后根据date执行一些操作 为此,我在myTable.ListColumns上使用了一个foreach循环。 由于前三列没有date标题,我试图设置循环,所以如果在将日志typesvariables赋值为标题string时出现错误,循环会直接进入下一列 这似乎适用于第一列。 但是,当第二列的头被“分配”到datetypesvariables时,macros即使在error handling块内也会遇到错误 Dim myCol As ListColumn For Each myCol In myTable.ListColumns On Error GoTo NextCol Dim myDate As Date myDate = CDate(myCol.Name) On Error GoTo 0 'MORE CODE HERE NextCol: On Error GoTo 0 Next myCol 重申一下,这个错误是在循环的第二轮,在声明中引发的 myDate = CDate(myCol.Name) 任何人都可以解释为什么On Error语句停止工作?

如何在Excel VBA 2010中的IF-THEN语句中使用checkbox?

我需要使用IF-THEN语句的checkbox的值。 基于用户检查什么,我必须计算事物的变化。 但是,我不知道如何使用checkbox的值,或如何检测它们。 这是我到目前为止的代码: Private Sub Workbook_Open() Range("E1:F7,A1:A4,B1:B4,C1:C3").Select With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End […]

你如何在VBA中findLeapyear?

什么是VBA中的IsLeapYear函数的良好实现? 编辑:我运行的if-then和DateSerial实现迭代包装在一个计时器,和DateSerial更快的平均1-2毫秒(300次迭代5次运行,1平均单元格工作表公式也工作)。

如何比较工作表中的两个完整行

我是VBA新手。 我有工作来提高VBA代码的性能。 为了提高代码的性能,我必须读整行并将其与另一行进行比较。 有没有办法在VBA中做到这一点? 伪代码: sheet1_row1=read row1 from sheet1 sheet2_row1=read row1 from sheet2 if sheet1_row1 = sheet2_row1 then print "Row contains same value" else print "Row contains diff value" end if

从SQL查询中将列名拖入Excel中

我正在使用Excel从SQL数据库中提取数据。 我用另一个SO问题的代码,它工作正常。 现在我想从表中除了列表中的列名。 我发现我可以使用For Each fld循环获取名称。 然而,仍然存在这样的问题,即在Excel中将它们横向排成一行,因为列数可能会发生变化 – 所以我想我会需要另一个对于每个循环也是类似的。 Sub GetDataFromADO() 'Declare variables' Set objMyConn = New ADODB.Connection Set objMyCmd = New ADODB.Command Set objMyRecordset = New ADODB.Recordset 'Open Connection' objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;User ID=abc;Password=abc;" objMyConn.Open 'Set and Excecute SQL Command' Set objMyCmd.ActiveConnection = objMyConn objMyCmd.CommandText = "select * from myTable" objMyCmd.CommandType = adCmdText objMyCmd.Execute […]

使用VBA在Skype中发送消息

目标:当某个macros完成时,向Skype联系人发送消息。 来源:我search了一下,发现了一些问题,试图做同样的事情。 这是我使用Excel VBA将Skype消息发送到群聊的代码的基础,也是这个https://www.mrexcel.com/forum/excel-questions/424432-sending-skype-message-through-excel -vba.html这两个问题都使用类似的代码。 问题:当我运行代码时,出现以下错误: 运行时错误“429”:ActiveX组件不能创build对象 在线上: Set aSkype = New SKYPE4COMLib.Skype 问:这个API是否仍然适用于这种程序? 我如何解决正在进行的错误? 码: Sub testingskype() Dim aSkype As SKYPE4COMLib.Skype Set aSkype = New SKYPE4COMLib.Skype Dim oChat As Chat Dim skUser As SKYPE4COMLib.User Set skUser = aSkype.User("user_name") Set oChat = aSkype.CreateChatWith(skUser.Handle) oChat.OpenWindow oChat.SendMessage "message" End Sub Obs:我在每个创build的模块中显式使用选项。

获取文件上次修改date(资源pipe理器值不是cmd值)

我写了一些Excel VBA代码来将文件名,版本和上次修改的date/时间添加到工作表中。 该代码似乎工作正常,除了有时文件的Last Modified Date的时间部分将正好1小时向前或向后从我看到的资源pipe理器窗口中。 我注意到,如果我执行dir命令,我的代码返回的值与cmd窗口中显示的修改date/时间相同。 例如,如果我在system32文件夹中查找dbghelp.dll文件: C:\Windows\System32>dir dbghelp.* Volume in drive C has no label. Volume Serial Number is 16E8-4159 Directory of C:\Windows\System32 21/11/2010 04:24 1,087,488 dbghelp.dll 1 File(s) 1,087,488 bytes 0 Dir(s) 60,439,101,440 bytes free C:\Windows\System32> 但是,资源pipe理器窗口中的相同文件在21/11/2010 (早1小时)显示修改时间为03:24 。 我写的代码是返回cmd窗口时间,而我想浏览器窗口时间: Sub GetFileDetails() Dim path As String Dim objFSO As Object Dim objFile As […]