- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好美丽的互联网人。
我拼凑在一起的 VBA 宏有问题。该宏旨在格式化由一个商业软件生成的工作簿中的所有图表表,然后将所有图表表打印为 PDF 文件。一切都正常执行,但生成的 PDF 文件显示的图表具有奇怪的缩放比例并在右侧被截断。如果我只是简单地把宏格式化的文件,然后通过文件>打印界面手动打印成PDF,一切都很好。
我相信正在发生的事情与图表方向有关。该软件生成横向图表。我的宏通过 Chart.PageSetup.Orientation = xlPortrait 将它们更改为纵向。生成的 PDF 是纵向的,但图表似乎仍然是横向的,大部分右侧被截断。
以下是完整的代码块。
Sub GROUP_GraphTool()
Dim i As Integer
Dim JobNo As Variant
Dim StrWk As String
Dim JobName As String
Dim SubT1 As String
Dim SubT2 As String
Dim NAMEser As String
Dim prnt As String
Dim cht As Chart
Dim srs As Object
Dim SCount As Integer
Dim t1s As Integer
Dim t1e As Integer
Dim t2s As Integer
Dim t2e As Integer
Dim t3s As Integer
Dim t3e As Integer
Dim LED As Boolean
Dim YAX As Integer
Dim prnts As Boolean
Dim fldr As FileDialog
Dim GetFolder As Variant
Dim sItem As String
Dim chtName As String
Dim LOGOs As String
Dim logo As Boolean
Dim prntr As Dialog
Application.ScreenUpdating = False
Application.EnableEvents = False
'Asking Questions
JobNo = InputBox("Enter Job Number")
JobName = InputBox("Enter Job Name")
SubT1 = InputBox("Enter Subtitle 1 (optional)")
SubT2 = InputBox("Enter Subtitle 2 (optional)")
YAX = InputBox("Enter maximum depth for Y-Axis")
NAMEser = InputBox("Would you like to manually name each series? (Yes/No)")
If NAMEser = "Yes" Or NAMEser = "yes" Or NAMEser = "YES" Then
SCount = InputBox("How many series in each chart?")
'Getting all the series names
Set srs = CreateObject("Scripting.Dictionary")
For i = 1 To SCount
srs(i) = InputBox("Name of series" & i)
Next
LED = True
Else
LED = False
End If
LOGOs = InputBox("Would you like to add a logo? (Yes/No)")
If LOGOs = "Yes" Or LOGOs = "yes" Or LOGOs = "YES" Then
logo = True
Else
logo = False
End If
prnt = InputBox("Would you like to print resulting charts? (Yes/No)")
If prnt = "Yes" Or prnt = "yes" Or prnt = "YES" Then
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
prnts = True
Else
prnts = False
End If
'Counting Title Lengths
t1s = 1
t1e = Len(JobNo & " - " & JobName)
t2s = t1e + 1
t2e = t1e + Len(SubT1)
t3s = t2e + 1
t3e = t2e + Len(SubT2)
'Loop Through all charts in Workbook
For Each cht In ActiveWorkbook.Charts
cht.Activate
'Setting chart print area
With ActiveChart.PageSetup
.Orientation = xlPortrait
.CenterHorizontally = True
.PaperSize = xlPaperLetter
.TopMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.BottomMargin = Application.InchesToPoints(0.75)
.FooterMargin = Application.InchesToPoints(0.3)
End With
'Adding Titles
Set cht = ActiveChart
cht.HasTitle = True
cht.ChartTitle.Text = JobNo & " - " & JobName & Chr(10) & SubT1 & Chr(10) & SubT2
cht.ChartTitle.Font.Bold = True
cht.ChartTitle.Font.Name = "Calibri"
cht.ChartTitle.Characters(t1s, t1e).Font.Size = 16
cht.ChartTitle.Characters(t2s, t3e).Font.Size = 14
'Naming series if selected
If LED = True Then
For i = 1 To SCount
cht.SeriesCollection(i).Name = srs(i)
Next
End If
'Setting Axes to General (getting rid of sci. not.)
cht.Axes(xlCategory, xlPrimary).TickLabels.NumberFormat = "general"
'Deleteing Legend if series not named, Moving Legend if they are
If LED = False Then
cht.HasLegend = False
Else
cht.HasLegend = True
cht.Legend.Position = xlLegendPositionBottom
End If
'Setting Y-Axis
cht.Axes(xlValue).MaximumScale = YAX
'Adding Logo
If logo = True Then
'''''''''NOTE! Save included logo file to your computer''''''''
'''''''''and set the path to it below where you see hashes'''''
With cht.Pictures.Insert("##########\Logo.jpg")
.Left = cht.ChartArea.Left + 1000
.Top = cht.ChartArea.Top + 1000
.Placement = 1
End With
End If
'Printing, if selected
If prnts = True Then
chtName = cht.Axes(xlCategory).AxisTitle.Caption
ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
GetFolder & "/" & chtName, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
Next cht
Application.EnableEvents = True
End Sub
最佳答案
好吧......在搞砸了一整天之后,我设法找到了一个烦人的解决方案。
为了解决这个问题,我将 ExportAsFixedFormat block 从主格式化循环中取出,将其放入第二个循环中,并强制 excel 在运行 ExportAsFixedFormat 之前在屏幕上显示每个图表一秒钟。
因此,发生的事情归结为图表没有重新定向以响应 PageSetup.Orientation 中的更改,直到每个图表都显示一秒钟。
代码:
'updating chartsheets
Application.ScreenUpdating = True
For Each cht In ActiveWorkbook.Charts
cht.Select
cht.Activate
cht.Refresh
cht.Visible = True
With ActiveChart.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Application.Wait Now + TimeSerial(0, 0, 1)
Next cht
Application.ScreenUpdating = False
'Printing, if selected
If prnts = True Then
chtName = cht.Axes(xlCategory).AxisTitle.Caption
ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
GetFolder & "/" & chtName, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
Next cht
关于excel - 用于将 Chartsheets 打印到 PDF 的 VBA 宏以奇怪的比例生成截止图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54580511/
我在为 MacOSX 构建的独立包中添加 DMG 背景的自定义图标时遇到问题。我在项目的根目录中添加了一个包。正在从中加载自定义图标,但没有加载 DMG 背景图标。我正在使用 Java fx 2.2.
Qt for Symbian 和 Qt for MeeGo 有什么区别?我知道 Qt 是一个交叉编译平台。这是否意味着如果我使用来自 Qt 的库,完全相同的库可以在所有支持 Qt 的设备(例如 Sym
我正在尝试使用 C# .NET 3.5/4.0 务实地运行 SQL Server 数据库的备份。我已经找到了如何完成此操作,但是我似乎找不到用于备份的命名空间库。 我正在寻找 Microsoft.Sq
我最近在疯狂学习 Java,但我通常是一名 .NET 开发人员。 (所以请原谅我的新手问题。) 在 .Net 中,我可以在不使用 IIS 的情况下开发 ASP.Net 页面,因为它有一个简化的 Web
这post仅当打印命令中有字符串时才有用。现在我有大量的源代码,其中包含一条声明,例如 print milk,butter 应该格式化为 print(milk,butter) 用\n 捕获行尾并不成功
所以我的问题是: https://gist.github.com/panSarin/4a221a0923927115584a 当我保存这个表格时,我收到了标题中的错误 NoMethodError (u
如何让 Html5 音频在点击时播放声音? (ogg 用于 Firefox 等浏览器,mp3 用于 chrome 等浏览器) 到目前为止,我可以通过 onclick 更改为单个文件类型,但我无法像在普
如果it1和it2有什么区别? std::set s; auto it1 = std::inserter(s, s.begin()); auto it2 = std::inserter(s, s.en
4.0.0 com.amkit myapp SpringMVCFirst
我目前使用 Eclipse 作为其他语言的 IDE,而且我习惯于不必离开 IDE 做任何事情 - 但是我真的很难为纯 ECMAScript-262 找到相同或类似的设置。 澄清一下,我不是在寻找 DO
我想将带有字符串数组的C# 结构发送到C++ 函数,该函数接受void * 作为c# 结构和char** 作为c# 结构字符串数组成员。 我能够将结构发送到 c++ 函数,但问题是,无法从 c++ 函
我正在使用动态创建的链接: 我想为f:param附加自定义转换器,以从#{name}等中删除空格。 但是f:param中没有转换器
是否可以利用Redis为.NET创建后写或直写式缓存?理想情况下,透明的高速缓存是由单个进程写入的,并且支持从数据库加载丢失的数据,并每隔一段时间持久保存脏块? 我已经搜查了好几个小时,也许是goog
我正在通过bash执行命令的ssh脚本。 FILENAMES=( "export_production_20200604.tgz" "export_production_log_2020060
我需要一个正则表达式来出现 0 到 7 个字母或 0 到 7 个数字。 例如:匹配:1234、asdbs 不匹配:123456789、absbsafsfsf、asf12 我尝试了([a-zA-Z]{0
我有一个用于会计期间的表格,该表格具有期间结束和开始的开始日期和结束日期。我使用此表来确定何时发生服务交易以及何时在查询中收集收入,例如... SELECT p.PeriodID, p.FiscalY
我很难为只接受字符或数字的 Laravel 构建正则表达式验证。它是这样的: 你好<-好的 123 <- 好的 你好123 <-不行 我现在的正则表达式是这样的:[A-Za-z]|[0-9]。 reg
您实际上会在 Repeater 上使用 OnItemDataBound 做什么? 最佳答案 “此事件为您提供在客户端显示数据项之前访问数据项的最后机会。引发此事件后,数据项将被清空,不再可用。” ~
我有一个 fragment 工作正常的项目,我正在使用 jeremyfeinstein 的 actionbarsherlock 和滑动菜单, 一切正常,但是当我想自定义左侧抽屉列表单元格时,出现异常
最近几天,我似乎平均分配时间在构建我的第一个应用程序和在这里发布问题!! 这是我的第一个应用程序,也是我们的设计师完成的第一个应用程序。我试图满足他所做的事情的外观和感觉,但我认为他没有做适当的事情。
我是一名优秀的程序员,十分优秀!