代码之家  ›  专栏  ›  技术社区  ›  aragornii

使用VBA插入图片,大小在Excel 2010和Excel 2016之间不同

  •  1
  • aragornii  · 技术社区  · 7 年前

    我写这篇文章是因为我在努力理解为什么在使用VBA导入图片时会得到两个不同的结果。

    图像源为: https://maps.googleapis.com/maps/api/staticmap?size=390x280&zoom=8&maptype=terrain&markers=color:red%7Clabel:A%7C18.510516,-72.287768&key=mykey

    我用VBA代码在单元格中插入图片 Z8 :

    Range("Z8").Select
    ActiveSheet.Pictures.Insert(URL).Select
    With Selection
    .ShapeRange.ScaleWidth 0.999, msoTrue
    End With
    

    *the .ShapeRange.ScaleWidth 0.999 在这种情况下不需要,但即使我删除 With Selection 指令,我得到相同的输出。

    如果我在Excel 2010中运行VBA代码(我用来构建工作表),一切看起来都很好,如下所示:

    Excel_2010

    但当我在Excel 2016中运行VBA代码时,我得到了不同的结果:

    Excel_2016

    本例中的图片较大,超出了页面限制。同样的情况也发生在左上角的二维码上。此外,垂直(和水平)分页符也发生了移动(我无法解释原因),但我将把这个问题留到另一条消息中。

    一般来说,Excel 2016中的图片比Excel 2010中的图片大1.25。Excel 2016安装在另一台笔记本电脑上 不同的屏幕分辨率 . 这是我面临问题的原因吗?如果是这样的话,你知道一种与屏幕分辨率无关的修复方法吗?

    谢谢Stefano

    1 回复  |  直到 6 年前
        1
  •  1
  •   ashleedawg    7 年前

    从Excel 2010开始,微软推出了新的图片分辨率和压缩处理流程,然后随着技术在未来几年的快速改进,对默认值进行了调整。这可能是你的问题的原因。

    机器之间不同的显示器尺寸/分辨率也会影响默认(和可用)设置。

    尽管显示器大小不同,但尝试设置窗口还是有帮助的 显示分辨率 至少暂时是相同的值。

    这些步骤根据您运行的Windows版本略有不同,但在谷歌上搜索并不困难。(例如, here 是Windows 7安装的说明。)

    在上检查以下设置 二者都 计算机到 查看可用选项 (未灰显) 之前 改变任何事情,因为你需要决定一个在两者上都可用的设置。


    默认分辨率设置

    • 在Excel中,单击 File → Options
    • 在对话框的左侧,选择 Advanced
    • 在对话框右侧,向下滚动至 Image Size & Quality
    • 注意哪些设置是 挑选出来的 哪些是 可获得的 :

      ☑ Do not compress images in file (复选框)

      Default Resolution (下拉列表)

    options 1

    在下一步中,您需要在工作表上绘制一张图片,因此您也可以使用示例中的“问题图像”。

    • 单击图像以将其选中。这应该使 Picture Tools / Format 出现菜单。

    • 点击 Compress Pictures

    • 在打开的对话框中,在 Resolution ,注意哪些设置是 挑选出来的 哪些是 可获得的

    options 2

    希望这两台机器上都有可用的组合。将它们设置为相同后,重新启动两台机器,然后再次尝试插入图片。

    正如我所提到的,可能有很多因素影响它。确保图形在两台不同机器上表现相同的唯一方法是,如果它们有相同的软件 图形硬件。


    如果所有其他方法都失败了,而你想再尝试一次远射,那么有一个 注册表设置 这可能会影响一台或两台机器。

    很难找到Office上千个注册表设置的文档(许多默认情况下没有使用,比如这个) source 这意味着这只会影响转换为网页的Office文档中图像的分辨率。

    然而,我相信如果你 曾经 将Excel文档保存为网页时,此注册表项(及其相关的“已知问题”)也可能会受到影响,因此您可以再次检查。


    注册表“黑客”

    要解决此问题,请添加以下注册表项以防止图像大小更改。

    标准注册表警告: 如果使用注册表编辑器或 另一种方法。这些问题可能需要您重新安装 操作系统。微软不能保证这些问题能够解决 被解决。 修改注册表的风险自行承担。

    1. 退出所有程序。

    2. 点击 Windows Key Windows键,类型 regedit ,然后点击 进来 .

    3. 找到并选择以下注册表子项:

      HKEY_CURRENT_USER\Software\Microsoft\Office\Common

    4. 选择子键后,单击 Edit 菜单,单击 New 然后选择 DWORD Value .

    5. 类型 DownRevRasterizationDPI ,然后按 进来 .

    6. 右键单击 下行光栅化DPI ,然后单击 Modify .

    7. Value 数据框,键入范围为的值 1 300 然后单击 OK .

    价值 数据框中,设置要为图像指定的分辨率值。例如,如果设置 96 ,这是 Windows的默认屏幕分辨率值,并插入屏幕截图 在Excel中,屏幕截图的图像分辨率变为 96 dpi .

    1. 文件 菜单,单击 Exit 退出注册表编辑器。

    通常我喜欢在我的答案中包含指向“更多信息”的链接,但我担心 外面没什么 除了源链接(上面)。

    祝你好运