这是我如何打开一个Excel文件在VB中: Workbooks.Open(file-path) 有没有一种方法来指定它应该打开为只读? 我打开的文件有一个密码,我总是得到它只能打开为只读的对话框。
所以我正在开发一个项目,并且试图让我的VBA代码将单元格M3中的公式一直拖到数据集的末尾。 我使用列L作为我的基础来确定数据的最后一个单元格是什么。 我的公式是两个单元格之间的文本逗号串联。 所以在Excel中,我的公式是= G3&“,”&L3 我希望excel可以画出这个公式,所以在M4单元格中它将是= G4&“,”&L4单元格M5将= G5&“,”&L5等等。 我的代码如下所示: Range("$M$3").Formula = Range("G3") & (",") & Range("L3") Dim Lastrow As Long Application.ScreenUpdating = False Lastrow = Range("L" & Rows.Count).End(xlUp).Row Range("M4").FormulaR1C1 = Range("G4") & (",") & Range("L4") Range("M4").AutoFill Destination:=Range("M4:M" & Lastrow) ActiveSheet.AutoFilterMode = False Application.ScreenUpdating = True 我的输出只是将单元格M3中的文本值一直下拉到数据集的末尾。 我search了几个小时试图寻找修复,但似乎无法find一个正在努力完成我要去的东西。
我有几个20 MB以上的Excel文件,他们需要在开始营业之前(周一上午8点)每周更新一次。 这些文件包含一个数据表,数据通过外部连接(ODC文件),从SQL Server视图。 它们也有一个数据透视表,在数据表刷新后也需要刷新。 我试图find一个解决scheme(Windows PowerShell)来自动刷新数据和数据透视表,而不需要触摸文件。 “打开时刷新”和其他Excel选项不可行,因为刷新所有连接需要长达20分钟的时间。 我也不想刷新所有图纸,因为文件具有图表的自定义颜色,“刷新”将其重置为Excel默认值,这是不可能发生的。 我试过这个,但似乎没有与ODC连接工作? 至less,它没有做任何事情。 Windows PowerShell : $ExcelApp = new-object -ComObject Excel.Application $ExcelApp.Visible = $false $ExcelApp.DisplayAlerts = $false $Workbook = $ExcelApp.Workbooks.Open("c:\test\ref_test.xlsx", 3, $false, 5, $null, $null, $true) Start-Sleep -s 30 $Workbook.RefreshAll() $Workbook|Get-Member *Save* $Workbook.Save() $ExcelApp.Quit() 有任何想法吗? Office版本:2010,在Windows 7上
下午好, 我试图设置一个自动化一个内部网站的报告的手段。 我在大学教书,需要通过大学提供的界面从教师可访问的数据库中提取一些数据。 所以,我试图访问我有权查看的资料,需要login才能看到,但不想重复这些步骤数百次。 我的想法是: 1)使用IE凭证login学院提供的界面(所以系统知道我是授权的)。 2)提供优秀的学生身份证号码列表,我试图跟踪 3)使用VBA遍历每个ID,执行以下步骤: 从Excel列表中inputID号码到适当的表格文本框中 点击“提交”button 点击结果页面上的辅助“提交”button 复制出现的HTML文本页面,并parsing出我需要的信息 移到下一个数字并重复 我已经尝试了一些我见过的其他选项(如VBAinput数据在线和提交表单 ),但是在语法上出现错误。 我试图引用的网站上的HTML编码的相关部分是: <FORM ACTION="action" METHOD="POST" NAME="idinputform"> Enter Number Here: <INPUT TYPE="number" NAME="ID_NUM" SIZE="9" MAXLENGTH="9"> <INPUT TYPE="hidden" NAME="refresh_proc" VALUE="menu_1"> <INPUT TYPE="submit" VALUE="Submit"> <INPUT TYPE="reset" VALUE="Reset"> </FORM> 我在Excel中得到的是: Sub QueryInfo() Application.ScreenUpdating = False Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.Navigate "website address" […]
目前面临的问题困扰了我很多。 我希望有人能帮助我。 我为Office 2007(32位)和Office 2010(64位)使用的大公司工作。 通过整个公司编写macros来兼容是我的难题(我之前从未在VBA中编程 – 实际上这个论坛对我有很大帮助)。 我的任务是在共享的Excel工作表中维护一个大表。 有几个macros和几个用户表单。 现在我将简要说明问题:工作表包含两个date格式的列(开始date和结束date)。 这两个值都被导入到列表forms的用户表单的文本框(命令buttonMsCal – 导出到类 – 填充这些文本框与date)。 我只需要在date格式为mm / dd / yyyy在这两列以执行过滤和其他操作。 当此值由使用与英语不同的本地化的工作人员更新时,美国date被input为dd.mm.yyyy。 这是基于date不可能的适当的过滤。 我试图改变格式: UserForm1.TextBox10.Value = Format(Calendar1.Value, "mm/dd/yyyy") 但这段代码不知何故行事不端。 在一些机器上它工作,其中一些机器不工作。 那是什么让我头痛。 我现在该怎么办? 有没有办法强制Excel中使用工作表中相同的date格式,并忽略Windows中的本地化设置? 员工不希望将本地化改为英文版美国,因为他们要么用于他们的格式,要么用于其他应用程序。 只有在此表打开时,是否有办法暂时更改本地化? 任何build议将被认为是。 先谢了彼得
我目前正在创build一个运行Monte Carlotypes模拟的Excel工作簿。 模拟器代码目前使用JavaScript,而且由于团队对这种语言的经验不足,所以完全移植到VBA似乎并不重要。 所以,我已经能够将JavaScript组件合并到一个WSC文件中,效果很好。 (下面的简单例子) Sub Simulate() Set ATPSim = GetObject("script:http://www.example.com/ATPSim.wsc") 'Set ATPSim = GetObject("script:C:\ATPSim.wsc") Dim ParamOne As Integer ParamOne = Range("B2").Value Dim ParamTwo As Double ParamTwo = Range("B3").Value Dim ParamThree As Double ParamThree = Range("B4").Value Range("B1").Value = ATPSim.simulate(ParamOne, ParamTwo, ParamThree) End Sub 不幸的是,这需要我主持javascript代码或依靠不熟练的用户来更新绝对path。 有没有一个独立的解决scheme? 我宁愿把所有的东西放在一个.xlsm文件里,这个文件可以通过电子邮件发送给用户。
我在Excel中创build了一个可以旋转3D图表的macros。 我将图表复制到PowerPoint中,设置代码以在幻灯片显示时在PowerPoint中运行。 代码运行,但我不能得到它实际上改变屏幕上显示的内容。 幻灯片处于编辑模式时,graphics旋转。 任何想法如何让代码不只是运行(我可以看到debugging数字显示),但更新屏幕时,在演示模式? 我的代码是: Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Sub SpinTheChart() RotateX = ActivePresentation.Slides(2).Shapes(2).Chart.ChartArea.Format _ .ThreeD.RotationX Do While ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 2 RotateX = RotateX + 7 If RotateX > 360 Then RotateX = RotateX – 360 ActivePresentation.Slides(2).Shapes(2).Chart.ChartArea.Format _ .ThreeD.RotationX = RotateX DoEvents Sleep 125 Debug.Print RotateX Loop […]
我有下面的代码 Option Explicit Sub MadMule2() Dim IE As InternetExplorer Dim el Dim els Dim colDocLinks As New Collection Dim Ticker As String Dim lnk Dim intCounter as Integer Set IE = New InternetExplorer IE.Visible = False Ticker = Worksheets("Sheet1").Range("A1").Value LoadPage IE, "https://www.sec.gov/cgi-bin/browse-edgar?" & _ "action=getcompany&CIK=" & Ticker & "&type=10-Q" & _ "&dateb=&owner=exclude&count=20" Set els = […]
我有这个代码,我的问题是,它会在英文版的Excel中工作吗? 我的意思是当地的公式会在英文版的excel上运行? (ORAZ的意思是和我的语言)。 当我把ORAZ它只适用于我的电脑,但在英文电脑它不,当我把它并没有给错误,但它不工作,任何想法如何帮助我? With Range("$H$6:$FH$50").FormatConditions _ .Add(xlExpression, xlFormula, "=ORAZ(H$7<=$G$7,(H$7+7)>$G$7)") With .Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = 0.799981688894314 End With End With
是否有可能改变SmartArtNode的宽度或高度? 以下代码完全不起作用: ' mySmartArt is a SmartArt Object mySmartArt.AllNodes.Item(1).Shapes.Width = 4 奇怪的是,如果你改变一个形状的宽度,它就可以工作。 所以我不知道SmartArtNodes的Shape对象为什么不能resize。 我所知道的唯一方法是使用更大或更小的方法,但是使用这种方法不可能只改变形状的宽度/高度。 如果我使用上面的代码,我总是会得到一个RunTime错误“对象不支持这个动作(错误445)”,这是奇怪的,因为通过Excel的GUI我可以改变单个节点的宽度和高度SmartArt没有问题。 所以,为什么不能通过VBA来改变它是没有任何意义的。 有人有一个想法我怎么能解决这个问题?