我一直在通过将excel文档中的一些图表和数据复制到word文档来创建报表.我正在粘贴内容控件,所以我ChartObject.CopyPicture在excel和ContentControl.Range.Pasteword中使用.这是在循环中完成的:
Set ws = ThisWorkbook.Worksheets("Charts")
With ws
For Each cc In wordDocument.ContentControls
If cc.Range.InlineShapes.Count > 0 Then
scaleHeight = cc.Range.InlineShapes(1).scaleHeight
scaleWidth = cc.Range.InlineShapes(1).scaleWidth
cc.Range.InlineShapes(1).Delete
.ChartObjects(cc.Tag).CopyPicture Appearance:=xlScreen, Format:=xlPicture
cc.Range.Paste
cc.Range.InlineShapes(1).scaleHeight = scaleHeight
cc.Range.InlineShapes(1).scaleWidth = scaleWidth
ElseIf ...
Next cc
End With
Run Code Online (Sandbox Code Playgroud)
使用Office 2007创建这些报告产生的文件大约为6MB,但在Office 2010中创建它们(使用相同的工作表和文档)会产生大约10倍的文件.
在解压缩docx之后,我发现额外的大小来自emf文件,这些文件对应于使用VBA粘贴的图表.它们的范围从360到900 KB之间,它们是5-18 MB.而且图形效果并不明显.
更进一步,它似乎与图表风格有关.我创建了一个新的电子表格并插入了7个数据点和相应的2D饼图.使用默认样式,它复制为79 KB emf,而使用样式26复制为10 MB emf.当我使用Office 2007时,图表将复制为700 KB emf.这是代码:
Sub CopyAndPaste()
ThisWorkbook.Worksheets("Charts").ChartObjects("Chart 1").CopyPicture Appearance:=xlScreen, Format:=xlPicture
GetObject(, Class:="Word.Application").ActiveDocument.Range.Paste
End Sub
Run Code Online (Sandbox Code Playgroud)
我能够使用格式的CopyPicture xlBitmap,虽然它稍微小一点,但它比Office 2007生成的emf大,质量明显更差.还有其他减少文件大小的选项吗?理想情况下,我想为使用Office 2007的图表生成一个具有相同分辨率的文件.有没有任何方法只使用VBA(不修改电子表格中的图表)?我可以轻松地复制为对象而无需链接文档?
我正在使用自动化对Word文档进行大量更改,然后运行VBA宏,其中包括检查文档不超过一定数量的页面.
我正在使用ActiveDocument.Information(wdNumberOfPagesInDocument)获取页数,但此方法返回的结果不正确.我认为这是因为Word尚未更新文档的分页以反映我所做的更改.
ActiveDocument.ComputeStatistics(wdStatisticPages) 也遇到同样的问题.
我试着坚持打电话ActiveDocument.Repaginate,但这没什么区别.
我确实有一些运气,在文档的末尾添加一个段落,然后再次删除它 - 但该黑客似乎不再有效(我最近从Word 2003迁移到Word 2010).
有什么方法可以强制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
Run Code Online (Sandbox Code Playgroud)
在Word VBA Autoexec模块中,user定义并声明了一个名为的公共变量.模块中的Userinfo子Utilities组件填充user.这两个例程都是在没有任何VBA投诉的情况下运行的.我希望能够访问user我的Excel VBA中的变量,但我收到以下错误
编译错误:尚未在此上下文中创建的变量.
如何在Excel VBA中访问Word VBA变量?我认为它或多或少是一样的?
编辑:user变量是Type仅使用String属性定义的用户.复制填充user变量的Word VBA函数绝对可行,只需要比我更多的工作......
如果视图需要从模型访问数据,您认为控制器应该:
a)将模型传递给视图
b)将模型的数据传递给视图
c); 它不应该是控制器的关注点.让视图直接访问模型以检索数据.只让控制器提供视图所需的一些参数来过滤模型中的数据.
d)这取决于具体情况.
e)以上都不是,但[...]
谢谢
在评论中对用户删除的答案进行了一些辩论后,可能需要澄清.我对MVC架构的看法偏向于Zend Framework(php),其中默认情况下控制器中的操作具有分配给它的默认视图.因此,模型不是决定哪个视图是合适的,而是控制器.你觉得模型应该决定哪种观点合适吗?我认为让视图基于模型构建的唯一方法是让控制器将模型传递给视图.是否还有其他技术可以让视图在不涉及控制器的情况下访问模型?或者让控制器将模型传递给视图是否完美,以便可以根据模型属性构建视图?
这个问题看起来很简单,但我找不到解决方案(我已经在考虑它了:))
好的,所以我只想使用vba代码将一个特定的值放入excel单元格中,就像这样简单:
Cells(1,1).Value2 = "123,456"
Run Code Online (Sandbox Code Playgroud)
问题:这是一个字符串(故意),但excel总是将其转换为数字,并将该数字放入单元格,而不是我想要的字符串.
我怎么能强迫excel不要转换它,只是把我想要的(字符串)放入单元格?
谢谢,
在Excel中,我们在左上角有"名称框",但我找不到在Word中检索形状名称的方法.我怎么做?
我想使用Excel VBA创建一个word文档,并添加各种字体样式和大小的文本.这是我的代码:
Sub CreateNewWordDoc()
Dim wrdDoc As Word.Document
Dim wrdApp As Word.Application
Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Add
Dim charStart As Long
Dim charEnd As Long
With wrdDoc
For i = 1 To 3
charStart = wrdApp.Selection.Start
.Content.InsertAfter (" some text")
charEnd = wrdApp.Selection.End
If i = 1 Then
'set the text range (charStart,charEnd) to e.g. Arial, 8pt
Else
If i = 2 Then
'set the text range (charStart,charEnd) to e.g. Calibri, 10pt
Else
'set the text range …Run Code Online (Sandbox Code Playgroud) 我有一个150张幻灯片的powerpoint演示文稿,我想根据公司的品牌重塑努力进行修改.我们以前的绿松石色已用于文字,线条,形状和形状填充.我想构建一个贯穿整个演示文稿的VBA脚本,并一举修改所有幻灯片,并用我们新的深灰色替换这种蓝色.
旧的企业颜色是RGB(0,176,240) - 绿松石
新的企业颜色是RGB(71,67,65) - 深灰色
我在互联网上尝试过多种不同的vba,但无法让它正常工作.以下是旧颜色的典型幻灯片的屏幕截图 - 所有蓝色项目都应更改为深灰色:

来自一个有用的论坛成员的这段VBA代码非常适合填充形状 - 如果可以重新设计包含任何文本和形状轮廓和线条,那么它将是完美的.
Sub ChangeShapeColor()
Dim oSh As Shape
Dim oSl As Slide
' Look at each slide in the current presentation:
For Each oSl In ActivePresentation.Slides
' Look at each shape on each slide:
For Each oSh In oSl.Shapes
' IF the shape's .Fill.ForeColor.RGB = turqoise color:
If oSh.Fill.ForeColor.RGB = RGB(0, 176, 240) Then
' Change it to corporate dark grey:
oSh.Fill.ForeColor.RGB = RGB(71, 67, 65)
End If
Next …Run Code Online (Sandbox Code Playgroud) 这是我的 Html。我想使用 html 和 css 修复顶部的导航项,我尝试了很多方法,但无法修复它。没有 JavaScript 或 jQuery 如何构建它?
<div class="contain">
<p>
Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones
no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae
gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec
et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.
</p>
</div>
<nav>
<div class="navWide">
<div class="wideDiv">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
<div class="navNarrow">
<i class="fa …Run Code Online (Sandbox Code Playgroud) 谢谢你的网站.精彩的信息.
简而言之,我试图从Outlook(2007)执行以下代码,尽管它在Excel中也失败了.工作很棒INSIDE Access!
Sub Test
Dim db As DAO.Database
Dim rs As DAO.Recordset
Const dbPath As String = "C:\Users\e574651.GLOBAL\Documents\Northwind 2007.accdb"
On Error Resume Next
Set db = DAO.OpenDatabase(dbPath)
'Set rs = db.OpenRecordset("customers")
Debug.Print Err.Number, Err.Description
End Sub
Run Code Online (Sandbox Code Playgroud)
3343无法识别的数据库格式'C:\ Users\e574651.GLOBAL\Documents\Northwind 2007.accdb'.
我可以使用ADO整天访问(没有双关语)这个数据库,我怀疑问题在于以下ADO语句:
ADOConn.Provider ="Microsoft.ACE.OLEDB.12.0"
如何使用DAO提供此功能?
我在VBA首选项中包含了对DAO 3.6库的引用.我已经包含了其他Microsoft 12.0库引用,所以我要么破坏了某些东西,要么省略了一些东西.
任何帮助将不胜感激.
谢谢!