Tag: vba

Excel 2003:为什么创build到其他电子表格的链接需要这么长时间?

我的Excel应用程序创build到其他Excel文件的链接。 创build1个单元的链接大概需要1秒,但是我有几百个单元链接,所以它的速度很慢。 源文件打开或closures的速度没有区别。 但是,我注意到,手动创build链接(例如,通过手动将包含链接的公式复制并粘贴到其他单元格中)在打开源文件时速度更快。 在我的程序中,我将Application.Calculationconfiguration为Manual而不是Automatic。 我尝试完成两种方式的链接(请注意,这不是一个真正的代码,但我希望它显示我的意思): 1.使用范围内的每个Cell的foreach循环将公式链接复制到Range("A1")的外部源: Cell.FormulaR1C1 = Range("A1").FormulaR1C1 2.将公式从Range("A1")复制到另一个范围,而不使用foreach循环: Range("thisIsMyTargetRange").FormulaR1C1 = Range("A1").FormulaR1C1 这两种方法同样缓慢,正如我所说,我已经检查了上述两个方法与源文件打开和closures。 有什么办法可以加速吗? 有没有人知道Excel 2003中的链接机制,以提供有关如何改善链接性能的build议?

准确的实时更新解决scheme,用于基于当前统计的分布预测

作为我当前项目的一部分,我需要find一个漂亮的Excel解决scheme:有线上游戏,人们获得经验(类似于SO代表),一旦获得足够的经验就移动到下一个层次(再次,这是非常像SO特权)。 当然,这需要每个人都有不同的时间:有些人在第一周获得了足够的经验,有些则需要5周才能通过。 统计如下: Week from join: Week 1 Week 2 Week 3 Week 4 Week 5 Level up: 5% 15% 40% 30% 10% 也就是说,如果在这个星期我们有一些人join了这个游戏,那么在他们全部进入下一个级别之后的5周之后(有些人会放弃并离开,但是为了简单起见,我并没有把这个因素包括在条件列表中)。 至于每场比赛,现在的球员数量都很重要。 为了保持游戏的stream行和激动人心,每个级别都应该有一定数量的玩家。 显然,这个价值在不断变化:新人来了,而另一些人则上了一个台阶。 然而 – 这就是行动开始的地方! – 当前球员的这个最小值不是恒定的,并且可以根据许多因素谨慎。 为了简单起见,这意味着在未来的10-15周内,每周应该实现一组预测的最小数量的玩家(这是基于收集的统计数据,但是对于给定的任务,这是已知的组)。 到目前为止,图片看起来像这样: 而在最左边的一列中, 每周都有一些人join了游戏,每周下的一排大胆的数字就是这个星期到达下一个级别的人数。 有大量新人,计算每周的总体水平是微不足道的。 相反,并不是那么容易(至less对我来说) – 这是一个问题: 如何预测每周所需新手人数 (最左边的列) – 获得所需数量的人将通过下一周的下一个级别(底部的粗体行)? 到目前为止,我还找不到一个合适的,准确的解决scheme。 我尝试了所有可能的select – 从复杂和数组公式到Solver插件,但没有运气:我总是比方程式有更多的未知数。 但是,我很确定这不是一个不可能完成的任务:对于某些解决scheme,Solver可以提供相当接近所需值的数字,但不是每一组所需的值。 一些假设和(可能)重要的条件: 虽然不应该是一个问题,但实际每周分发%%%数字是根据需求更新数据库查询和进一步的Excel处理。 当然,从DB获得的实际新手值当然被认为是公式的已知值 。 显然他们是不能改变的,比如说如果实际上一周less than […]

在VBA中search文件

我写了一个vba代码,浏览所有的path文件夹,并search“strings.xml”文件。 Dim oFS As Office.FileSearch Dim i As Integer Set oFS = Application.FileSearch With oFS .NewSearch .FileType = msoFileTypeAllFiles .Filename = "strings.xml" .LookIn = "D:\Workspace" .SearchSubFolders = True .Execute MsgBox "Finish ! " & .FoundFiles.Count & " item found !" End With 然而,在我的工作区中,我有许多“strings.xml”文件,这个当前的代码所在,但我只想在特定的子文件夹中find“strings.xml” 例如./values/strings.xml文件。

VBA for Excel 2010/2013 – 如何识别系统区域设置

我正在编写一个macros,希伯来文和英文都将在其中,但如果系统区域设置为希伯来语,我只想显示希伯来字符,否则我想用英文音译。 这是由于Excel的macros似乎处理语言或至less希伯来语(由于某些原因,即使你的键盘设置为希伯来语,几乎在每个应用程序中都将输出希伯来语,它不会用于Excelmacros编辑器直到你把系统本地设置为希伯来语,所以电子表格也不会显示希伯来语,即使你直接在单元格中input,它也会显示正确 – 至less在Excel 2010和2013中是这样的)。 无论如何,我已经尝试了几行没有工作的行,他们是: Application.LanguageSettings.LanguageID(msoLanguageIDUI) Application.LanguageSettings.LanguageID(msoLanguageIDInstall) Application.LanguageSettings.LanguagePreferredForEditing(msoLanguageIDHebrew) 无论是在英语(美国)语言环境还是希伯来语(以色列)语言环境中,这些都无法识别系统语言环境并输出相同的值。 任何人都可以告诉我,我需要做什么来表明一个数字或文本系统区域设置是什么?

ADO截断Excel数据

我有一个函数使用ADO从工作表的内容获取ADODBlogging集,如下所示: Function WorksheetRecordset(workbookPath As String, sheetName As String) As adodb.Recordset Dim objconnection As New adodb.Connection Dim objrecordset As New adodb.Recordset On Error GoTo errHandler Const adOpenStatic = 3 Const adLockOptimistic = 3 Const adCmdText = &H1 objconnection.CommandTimeout = 99999999 objconnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & workbookPath & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";" […]

PrintOut打印组而不是1组

我们在很多工作簿上都遇到这个问题,我们用VBAselect几张纸,然后用下面的一行打印出来,而Excel实际上会打印多组页,而不是一组多页。 ActiveWindow.SelectedSheets.PrintOut 这是一个具有此行为的Sub的示例: Private Sub imprimer(iColTypeRapport As Integer) Dim cell As range, rangeImpr As range, colonne As range Dim debute As Boolean ' True seulement si on a déjà sélectionné une feuille On Error GoTo erreur application.ScreenUpdating = False debute = False Set rangeImpr = ActiveSheet.range("impression") Set colonne = rangeImpr.Offset(0, iColTypeRapport).EntireColumn For Each cell In […]

以编程方式更改工作簿中的链接

所有, 我有以下代码来更改工作簿的链接。 ThisWorkbook.ChangeLink "OldPath.xlsx", "NewPath.xlsx", xlLinkTypeExcelLinks 我的问题是,“NewPath.xlsx”表示一个工作簿具有一个稍微不同于WorkSheet对象的名称比OldPath.xlsx。 那么,有没有办法以编程方式更改不仅与Excel工作簿关联的path,还有实际的对象/范围引用或有问题的外部链接? 提前致谢。

Excel 2010 VBA – 用于在应用程序之间切换的事件处理程序?

也许我今天早上在Google上只是很糟糕,但我在VBA中find一个事件处理程序,用于在从其他应用程序切换时激活工作簿。 我正在使用Excel 2010。 在ThisWorkbook对象中,我尝试了以下方法: Private Sub Workbook_Activate() MsgBox "1" End Sub Private Sub Workbook_WindowActivate(ByVal Wn As Window) MsgBox "2" End Sub 在一个类模块中,我试过这些: Public WithEvents appevent As Application Private Sub appevent_ProtectedViewWindowActivate(ByVal Pvw As ProtectedViewWindow) MsgBox "1" End Sub Private Sub appevent_ProtectedViewWindowOpen(ByVal Pvw As ProtectedViewWindow) MsgBox "2" End Sub Private Sub appevent_WindowActivate(ByVal Wb As Workbook, ByVal Wn […]

DDE SAS来运行VBA代码

我无法让Excel 2010从SAS执行macros。 我从一些SAS表导出数据到Excel,这工作正常,当我手动运行VBAmacros它也做它应该,但它不会自动执行。 Excel文件被称为“FIH.xls”,macros被称为“Opryd”作为Module1。 SAS日志不会出现任何错误,Excel也不会。 我已经允许所有的macros在Excel设置中运行。 它仍然不执行。 options noxwait noxsync; x '"C:\FIH.xls"'; /* Putting SAS in sleep mode to give Excel the necessary time to open the file */ data _null_; x=sleep(5); run; FILENAME excel DDE 'EXCEL|Grp!r5c8:r7c20' notab; DATA _NULL_; SET gem.rap_konc_selskab; FILE excel; PUT '09'x selskab_rap '09'x gr_vis_start '09'x man_amt '09'x '09'x '09'x rest_2 […]

excel的date格式与vba不一样

我在excel中发现了一个date格式的问题,显示格式不像vba中的numberformat那样相同,我为这种情况创build了一个testing。 Regional Setting for Short Date: MM/dd/yyyy 模块: Function RetrieveNumberFormat() As String Dim rng As Range Set rng = Application.Caller RetrieveNumberFormat = rng.NumberFormat Set rng = Nothing End Function Function SetDate() As String Dim rng As Range Set rng = Application.Caller SetDate = Format(Now, rng.NumberFormat) Set rng = Nothing End Function 在Excel中 Col A (Date […]