VBS解决桌面上的文件

时间:2017-12-07 13:56:51

标签: vbscript desktop

我是VBS noob,请原谅这个简单的问题。我创建了一个脚本来在桌面上打开.xlsx文档,并运行各种操作。我想将脚本移植到其他用户。也就是说,我如何创建一个适用于所有用户的路径,即用户桌面变量。在PowerShell中,我可以'$env:USERPROFILE + '\Desktop'',它将解决当前用户的桌面问题。是否有VBS等价物?

到目前为止我所拥有的:

Set xl = CreateObject("Excel.application")
xl.Application.Visible = True

Dim wb1
Set wb1 = xl.Application.Workbooks.Open("C:\Users\Username\Desktop\Missed_Scans\Reports\Report.xlsx")
Dim wb2
Set wb2 = xl.Workbooks.Add

wb1.Sheets("Incomplete_ASINs").Range("$A$1:$J$52951").AutoFilter 1, "SDF8"
wb1.Sheets("Incomplete_ASINs").Columns("B:D").Copy
wb2.Worksheets(1).Paste
wb2.Worksheets(1).Rows(1).AutoFilter
wb2.SaveAs "C:\Users\Username\Desktop\Missed_Scans\Reports\Missed_Scans.xlsx", 51, , , , False
wb2.Close
wb1.Close False
xl.Quit
Set xl = Nothing

第5行和第13行是需要使用某种类型的用户环境变量的区域。我了解environ("UserName")可以提供用户名,但我不确定如何合并。

1 个答案:

答案 0 :(得分:1)

只需使用ExpandEnvironmentStrings

Set osh = CreateObject("wscript.shell")
xl.workbooks.open osh.ExpandEnvironmentStrings("%userprofile%\Desktop\Missed_Scans\Reports\Report.xlsx")

对于第13行,您可以编写如下内容:

wb2.SaveAs osh.ExpandEnvironmentStrings("%userprofile%\Desktop\Missed_Scans\Reports\Missed_Scans.xlsx"), 51, , , , False

<强>更新

注意:我没有对任何逻辑进行任何更改。刚刚删除了错误。

Set xl = CreateObject("Excel.application")
xl.Application.Visible = True

Dim wb1
Set osh = CreateObject("wscript.shell")
Set wb1 = xl.Workbooks.Open(osh.ExpandEnvironmentStrings("%userprofile%\Desktop\Missed_Scans\Reports\Report.xlsx"))
Dim wb2
Set wb2 = xl.Workbooks.Add

wb1.Sheets("Incomplete_ASINs").Range("$A$1:$J$52951").AutoFilter 1, "SDF8"
wb1.Sheets("Incomplete_ASINs").Columns("B:D").Copy
wb2.Worksheets(1).Paste
wb2.Worksheets(1).Rows(1).AutoFilter
wb2.SaveAs osh.ExpandEnvironmentStrings("%userprofile%\Desktop\Missed_Scans\Reports\Missed_Scans.xlsx"), 51, , , , False
wb2.Close
wb1.Close False
xl.Quit
Set xl = Nothing