excel - VBA中的不同外观生成具有相同字体和单元格属性的工作表
问题描述
我正在尝试根据以前的模板自动准备基于 Excel 的内部报告。宏创建并填充新工作表,匹配模板的字体名称、大小、颜色等设置,以及行高 - 列宽。尽管为字体、高度、宽度等提供了完全相同的值,但 VBA 生成的工作表的字体与原始模板不匹配。我相信如果我们能弄清楚为什么 VBA 生成的文本是“像素化”的,这个问题就可以解决。
由于我不熟悉 SO 的文件共享最佳实践,我将包括用于重现新工作表的代码以及两张工作表的某些属性的比较。我将在评论中包含指向包含两张表的文件的链接。我相信拥有一份原始模板的副本来回答这个问题可能很重要。
这是一个如何更改单元格属性的示例,非常基本。
ws.Columns(12).EntireColumn.ColumnWidth = 9.57
ws.Rows(9).EntireRow.RowHeight = 50.25
ws.Cells(9, 12).Font.Name = "Segoe UI"
ws.Cells(9, 12).Font.Size = 11
这是我比较两张纸的一些属性,因为我不知道我在寻找什么,两张纸的所有属性都是相同的。
Range.AddIndent = False
Range.ColumnWidth = 9.57
Range.RowHeight = 50.25
Range.Font.Name = "Segoe UI"
Range.Font.FontStyle = "Regular"
Range.Font.Size = 11
Range.Font.ThemeFont = xlThemeFontNone
Range.Font.ThemeColor = 2
Range.Font.OutlineFont = False
Range.Font.Subscript = False
Range.Font.Superscript = False
Range.Font.Italic = False
Range.HasSpill = False
Range.Phonetics = Nothing
Range.PrefixCharacter = ""
Range.SpillingToRange = Nothing
Range.UseStandardHeight = True
Range.UseStandardWidth = False
Range.WrapText = True
Worksheet.Cells.AddIndent = False
Worksheet.EnableOutlining = False
Worksheet.Outline.AutomaticStyles = False
Worksheet.PageSetup.BottomMargin = 18 'These are different, but did not effect the outcome when equalized
Worksheet.PageSetup.LeftMargin = 50.4 'These are different, but did not effect the outcome when equalized
Worksheet.PageSetup.FooterMargin = 21.6 'These are equal for both
Worksheet.PageSetup.HeaderMargin = 21.6 'These are equal for both
Worksheet.StandardHeight = 16.5 'These are different, yet read-only
Worksheet.StandardWidth = 8.38 'These are different, yet read-only
我知道一点 HTML/CSS,我的猜测是尽管有相同的字体系列(名称),但 .woff2 或 .eot 对于这两种字体是不同的。我不知道为什么。
使用原始模板格式绘制目标单元格可以完成这项工作,复制/粘贴策略也是如此,但我的目标是一个干净的解决方案,而不在最终文件中包含模板并从头开始生成工作表。我还可以更改字体系列或单元格大小以获得可接受的输出,但在这一点上,出于好奇,我希望探索这个问题背后的原因。
解决方案
推荐阅读
- node.js - Bcrypt 3.0.1 无法在节点 v 8.12.0 上安装
- ruby-on-rails - 如何让 Active Admin 将布尔键/值的哈希值存储在序列化对象中?
- generics - 在 Kotlin 中,是否可以将函数参数限制为 2 类类型而不是 Any?
- ssl - 是否可以获得 ip:port 而不是域名的 ssl 证书?
- sql-server - 在 SQL 托管实例中使用多个文件组的性能
- r - 将 xml 文件读入从已弃用的 ImageJ 创建的 R 错误:XML 内容似乎不是 XML
- c# - 如何处理服务器(C#)和客户端(JS)之间共享数据库模型?
- mysql - mojave python 3.7 libmysqlclient.21.dylib 问题
- botframework - 如何在 Teams botframework sdk3 C# 中发送视频卡
- c++ - 如何在 C++ 中内联汇编?