使用 VBA 将 excel 中的文件保存在计算机 HD 上的某个位置

Saving a file in excel in a location on the computer HD using VBA

我想让这段代码从单元格中的值保存图像名称。例如,如果 "cat" 在单元格 Y36 中,我希望它被称为 cat.jpg。

下面的代码在我没有 & FileNumber &FileNumber = Range("Y36").

时有效
Sub ExportCellsAsPicture()


    FileNumber = Range("Y36")

    Const FName As String = "HD:Users:User:Desktop:" & FileNumber & ".jpg"


    Dim pic_rng As Range
    Dim ShTemp As Worksheet
    Dim ChTemp As Chart
    Dim PicTemp As Picture


    Application.ScreenUpdating = False

    Set pic_rng = Worksheets("QR Code").Range("Y50:AS70") 'Set your range here
    Set ShTemp = Worksheets.Add
    Charts.Add
    ActiveChart.Location Where:=xlLocationAsObject, Name:=ShTemp.Name
    Set ChTemp = ActiveChart
    pic_rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    ChTemp.Paste
    Set PicTemp = Selection
    With ChTemp.Parent
        .Width = PicTemp.Width + 10
        .Height = PicTemp.Height + 10
    End With

    ChTemp.Export Filename:="HD:Users:User:Desktop:" & FileNumber & ".jpg", FilterName:="jpg"
    Application.DisplayAlerts = False
    ShTemp.Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

更新:工作代码

Sub whatsup()

Dim pic_rng As Range
Dim ShTemp As Worksheet
Dim ChTemp As Chart
Dim PicTemp As Picture
Dim fileCon As String

fileCon = "JK"
Application.ScreenUpdating = False
Set pic_rng = Worksheets("QR Code").Range("Y50:AS70") 'Set your range here
Set ShTemp = Worksheets.Add
Charts.Add
ActiveChart.Location Where:=xlLocationAsObject, Name:=ShTemp.Name
Set ChTemp = ActiveChart
pic_rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
ChTemp.Paste
Set PicTemp = Selection
With ChTemp.Parent
.Width = PicTemp.Width + 8
.Height = PicTemp.Height + 8
End With


    'Here I want the .jpg to be called test_yyyy_mm_dd.jpg


ChTemp.Export Filename:="HD:Users:User1:Desktop:" & fileCon & ".jpg"
Application.DisplayAlerts = False
ShTemp.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

将 Const 更改为变量。根据定义,Const(ant) 不能更改,但您可以像使用变量一样使用它。将其更改为这两行:

Dim FName As String 
FName = "HD:Users:User:Desktop:" & FileNumber & ".jpg"

您还应该在设置 FileNumber 之前声明它。

Dim FileNumber As Long 'if this is a number. If not, string
FileNumber = Range("Y36")

最后,将所有内容显式化并编译以确保至少您的语法是正确的总是好的。这将有助于减少许多简单但容易遗漏的错误。将它放在模块的最顶部:

Option Explicit

然后在调试之前编译并更正任何语法错误。

要进行调试,请在您的第一个可执行行(不是 Dim 语句)上设置一个断点,然后逐行检查它是否按预期工作。