使用 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 语句)上设置一个断点,然后逐行检查它是否按预期工作。
我想让这段代码从单元格中的值保存图像名称。例如,如果 "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 语句)上设置一个断点,然后逐行检查它是否按预期工作。