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

时间:2017-12-06 21:53:49

标签: excel excel-vba excel-2010 excel-2016 vba

我正在写作,因为我在努力理解为什么在使用VBA导入图片时我得到2个不同的结果。

图像来源是: 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

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

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

Excel_2010

但是当我在Excel 2016中运行VBA代码时,我得到了一些不同的东西:

Excel_2016

这种情况下的图片更大,超出了页面限制。对于您可以在左上角看到的QR码也会发生同样的情况。垂直(和水平)分页符也已移动(我无法解释自己为什么),但我会将此问题留给另一条消息。

通常,Excel 2016中的图片比Excel 2010中的图片大1.25。Excel 2016安装在另一台具有不同屏幕分辨率的笔记本电脑上。这可能是我面临的问题的原因吗?如果是这样,你知道一种以与屏幕分辨率无关的方式修复它吗?

谢谢,Stefano

1 个答案:

答案 0 :(得分:1)

Microsoft从Excel 2010开始引入了新的图片分辨率和压缩处理流程,然后在未来几年内随着技术的快速改进而调整默认值。这可能是您的问题的原因。

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

  

即使显示器的大小不同,尝试将Windows 显示分辨率设置为两者的相同值会有所帮助,至少是暂时的。

     

步骤略有不同,具体取决于您正在运行的Windows版本,但它们对Google来说并不难。 (例如, here 是Windows 7安装的说明。)

检查两台计算机上的以下设置 查看哪些选项可用 (不是灰色) >更改任何内容,因为您需要决定两者都可用的设置。

默认分辨率设置

  • 在Excel中,点击FileOptions
  • 在对话框的左侧,选择Advanced
  • 在对话框的右侧,向下滚动到Image Size & Quality
  • 记下哪些设置已选择哪些设置可用

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

    Default Resolution(下拉列表)

options 1

对于下一步,您需要在工作表上显示图片,因此您也可以使用"问题图像"从你的例子。

  • 单击图像将其选中。这应该会显示Picture Tools / Format菜单。

  • 点击Compress Pictures

  • 在打开的对话框中,在Resolution下,记下哪些设置已选择哪些设置可用。

    < / LI>

options 2

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

正如我所提到的,可能有很多因素影响它。确保图形在两台独立计算机上的行为相同的唯一方法是,它们具有相同的软件图形硬件。

如果所有其他方法都失败并且你想尝试再拍摄一次,那么可能会影响一台或两台机器的注册机构设置

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

但是,我相信,如果您将Excel文档保存为网页,则此注册表项(及其相关的&#34;已知问题&#34) ;)也可能受到影响,所以你可以仔细检查。

注册表&#34; Hack&#34;

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

  

标准注册表警告: 如果使用注册表编辑器或使用错误地修改了注册表,则可能会出现严重问题   另一种方法。这些问题可能需要您重新安装   操作系统。微软无法保证这些问题可以解决   得到解决。 修改注册表需要您自担风险。

     
      
  1. 退出所有程序。

  2.   
  3. 点击 Windows Key Windows键,输入regedit,然后按 Enter

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

         

    <强> HKEY_CURRENT_USER\Software\Microsoft\Office\Common

  6.   
  7. 选择子项后,点击Edit菜单,点击New,然后选择DWORD Value

  8.   
  9. 键入DownRevRasterizationDPI,然后按 Enter

  10.   
  11. 右键点击DownRevRasterizationDPI,然后点击Modify

  12.   
  13. Value 数据框中,键入1300范围内的值,然后点击OK

  14.         
        

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

      
         
        
    1. File菜单上,单击Exit退出注册表编辑器。
    2.   

通常我喜欢包含指向&#34;更多信息&#34;在我的回答中,但除了源链接(上图)之外,我恐怕除了源链接之外没有

祝你好运!