我安装了Word 2007和2010。 我需要从Excel中打开Word,但是我需要指定在VBA中需要打开哪个版本。 我已经尝试了晚期绑定 Dim wordApp2007 As Object Dim wordApp2010 As Object Set wordApp2007 = CreateObject("Word.Application.12") wordApp2007.Visible = True Set wordApp2010 = CreateObject("Word.Application.14") wordApp2010.Visible = True 但是都打开Word 2010 我也尝试使用早期绑定 Dim wordApp As Word.Application Set wordApp2007 = New Word.Application wordApp2007.Visible = True 并设置对Word 12.0对象模型的引用,但这仍然会打开Word 2010 如果我注册每个版本的Word使用 "C:\Program Files\Microsoft Office\Office12\WINWORD.EXE" /regserver "C:\Program Files\Microsoft Office\Office14\WINWORD.EXE" /regserver 那么注册的版本打开,但是我不能打开未注册的。 任何人都可以帮助并告诉我如何使用VBA在Excel中打开特定版本的Word? […]
我正试图自动化Excel VBA所做的所有工作。 我的雇主有一套标准化的模板,其中所有的文件都应该从中生成。 我需要从Excel VBA中填充这些模板之一。 Word模板广泛使用VBA。 这是(一些)我的Excel VBA代码: Sub GenerateReport() ' (Tables, InputDataObj) ' code generating the WordApp object (works!) WordApp.Documents.Add Template:="Brev.dot" ' Getting user information from Utilities.Userinfo macro in Document Call WordApp.Run("Autoexec") ' generating a public variable Call WordApp.Run("Utilities.UserInfo") ' more code End sub 在Word VBA Autoexec模块中,定义并声明一个名为user的公共variables。 Utilities模块中的user子将填充user 。 这两个例程都运行没有VBA的任何投诉。 然后,我想能够访问我的Excel VBA中的uservariables,但我得到以下错误 编译错误:variables尚未在此上下文中创build。 如何在Excel […]
我使用此代码将所有链接的字段/图表/ Word模板中的源代码更改为从其启动的工作簿。 我有平常的领域和图表 (这是存储在InlineShapes ),所以我有2个循环为每个模板。 这些循环有时会停留在For Each ,并在Fields / InlineShapes上循环(甚至不会增加索引…)而不停止。 (我为此添加了DoEvents ,似乎减less了这种情况发生的频率… 如果你有一个解释,这将是非常受欢迎的! ) 而且For i = … to .Count ,现在它的工作原理非常完美, 除了Pasted Excel Range每次从A1开始)以及工作簿的活动工作表上更改为相同大小的范围 。 为了避免InlineShapes问题,我添加了一个testing来知道LinkFormat.SourceFullName是否可以访问,从而避免了一个会阻止进程的错误: Function GetSourceInfo(oShp As InlineShape) As Boolean Dim test As Variant On Error GoTo Error_GetSourceInfo test = oShp.LinkFormat.SourceFullName GetSourceInfo = True Exit Function Error_GetSourceInfo: GetSourceInfo = False End Function 我注意到我的模板中有两种链接的InlineShapes […]
我的问题很难解释,因为我不是100%确定我的自我,发生了什么事情。 我将尽我所能来解释这种情况。 只是一个警告,如果你希望有代码你必须看看,并试图find一个错误,恐怕我不能提供这样的事情,因为它是一个更普遍的问题,我面临的而不是在一个错误码。 所以…让我们开始 我有一个Excel AddIn,一个WPF应用程序和一个WCF服务器,所有我写的,我可以调整任何一方,如果这可能是neccassary。 在我的Excel AddIn中,我调用WCF服务器方法从WPF应用程序中检索数据。 在打开Excel工作簿后,我的AddIn将更新其值,因此调用WCF服务器。 这工作正常,当用户“正常”打开Excel工作簿,但失败时,这是“自动”的代码。 一种这样的情况是,所提到的Excel工作簿多次链接到一个MS Word文档中,例如一个字段函数 { LINK Excel.Sheet.12 "C:\test.xlsx" "Sheet1!R1C1" } 当用户打开MS Word文档,其中包含指向同一文件的多个链接时,MS Word将为每个链接打开Excel工作簿,在“评估”之后,它将closures工作簿。 所以,如果MS Word文档有10个链接到相同的Excel工作簿,它将打开/closures这个Excel工作簿10次。 这再次,是没有问题的。 现在,来抓住。 当用户有一个Excel实例运行时,在打开MS Word文档之前,它将无法打开第二个链接上的链接的Excel工作簿,并显示一条消息,说明该工作簿已经打开,如果第二次打开该工作簿,所有更改都会得到失去你想继续。 因此,出于某种原因,第一次打开Workbook时,MS Word未能将其closures。 通过大量的试验和错误,我将错误本地化为对我的WCF服务器的调用。 电话是: ReturnObject result = server.GetBatch(parameters, baseClass); 当我调用这一行时,好像Excel不阻止MS Word继续工作,所以当MS Word已经试图closures并打开下一个链接时,我仍然在例程中从我的WCF服务器获取所有信息,由于我仍然有一个手头的Excel工作簿的参考,MS Word只是无法closures工作簿。 该方法在我的界面中定义为: [OperationContract()] ReturnObject GetBatch(List<Parameter> parameters, ClientInfo clientInfo); 正如你所看到的,我不使用Task<ReturnObject> ,所以我期望它运行同步并阻止正在运行的线程。 我已经做了一些关于调用方法的testing,可以用这两种方法解决我的问题: 第一种方法: ReturnObject result = null; […]
我正在做一个networking应用程序,需要stream式传输各种文件。 我可以做PDF,图像和较旧的Office文档。 但是,当我试图用2007年的文件,它打破。 这是我的代码: Response.Buffer = true; Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); switch (FileExtension.ToLower()) { case "pdf": Response.ContentType = "application/pdf"; break; case "doc": Response.ContentType = "application/msword"; break; case "docx": Response.ContentType = "application/vnd.ms-word.document.12"; break; case "xls": Response.ContentType = "application/vnd.ms-excel"; break; case "xlsx": Response.ContentType = "application/vnd.ms-excel.12"; break; default: Response.ContentType = "image/jpeg"; break; } Response.BinaryWrite(buffer); 我得到的错误是: 在文本内容中find无效的字符。 处理资源'http://DomainName/GetFile.aspx时出错… PK 有什么build议么?
我正在寻找很好的资源来开始使用pywin32。 我没有发现很多关于它的教程,书籍或博客。 我想能够使用python来自动化我的一些常见的重复的Microsoft Excel和Word任务(如打开Word文档,并从电子表格中search和replace数据)。 我发现PyWin32的很多引用(在谷歌和StackOverflow),但它总是在一个更高级的水平。 我只是想find一些有据可查的资源,帮助我加快速度,所以我可以使用我发现的其他职位。
我在Microsoft Office Word 2003中有这个macros代码,它读取文本文件的行。 每行代表一个string值,我需要在代码中稍后使用。 但是,文本文件的前两行包含了一些我不需要的东西。 如何修改代码以便跳过两条第一行? 在Word中的VBA编辑器中的“智能感知”糟透了。 无论如何,代码看起来像这样 Dim sFileName As String Dim iFileNum As Integer Dim sBuf As String Dim Fields as String sFileName = "c:\fields.ini" ''//Does the file exist? If Len(Dir$(sFileName)) = 0 Then MsgBox ("Cannot find fields.ini") End If iFileNum = FreeFile() Open sFileName For Input As iFileNum Do While Not […]
我有一个很多表格的文档。 有谁知道如何编写一个macros来将这些表导出到不同的Excel工作表?