2017-12-07 2 views
0

저는 VBS 놈입니다. 간단한 질문을 용서하십시오. 바탕 화면에서 .xlsx 문서를 열고 다양한 작업을 실행하는 스크립트를 만들었습니다. 스크립트를 다른 사용자에게 포팅하고 싶습니다. 즉, 모든 사용자, 즉 사용자 데스크톱 변수에서 사용할 수있는 경로를 만들려면 어떻게해야합니까? PowerShell에서 나는 '$env:USERPROFILE + '\Desktop''을 할 수 있으며 현재 사용자의 데스크톱 주소를 지정합니다. VBS에 상응하는 프로그램이 있습니까? 내가 지금까지 무엇을 가지고데스크톱에서 파일을 주소 지정하는 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

당신이 찾고있는 것은 CreateObject ("WScript.Shell"). SpecialFolders (SpecialFolderName)입니다. 다음과 같은 특수 폴더를 사용할 수 있습니다. AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, 바탕 화면, 즐겨 찾기, 글꼴, MyDocuments, NetHood, PrintHood, 프로그램, 최근, SendTo, StartMenu, 시작 프로그램, 템플릿. –

+0

@RegisDesrosiers : 답변으로 작성해야합니다. –

답변

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 
+0

안녕하세요 @ Gurman, 저는 당신의 아이디어를 시험하고 있지만 성공하지 못하고 있습니다. 그것은 올바르게 문서를 열어 보이지만 내 스크립트의 나머지 부분은 작동하지 않습니다. 귀하의 추가로 전체 스크립트를 다시 게시 해주십시오. 나는 뭔가를 놓거나 뭔가를 놓쳤을지도 모른다. – Garrett

+1

오케이. 귀하의 주요 문제는 다른 userprofiles에 대한 경로를 일반화하는 것이라고 생각하여 Excel을 열고 솔루션을 게시했습니다. 당신이 얻고있는 오류는 정확히 무엇입니까? – Gurman

+0

vbs 스크립트가 PowerShell을 통해 실행되고 있으므로 PS 오류가 발생합니다 : Microsoft VBScript 런타임 오류 : 필요한 개체 : ' 권장 사항에 따라 vbs 스크립트가'report.xlsx '문서를 열고 나머지는 수행하지 않습니다. 단계 (필터 col, 복사 및 붙여 넣기 및 필터 추가 후 w/o 프롬프트 닫기). – Garrett

관련 문제