
우리 회사에는 청구 부서에 이메일로 전송되는 Excel 스프레드시트로 나오는 컴퓨터 생성 보고서가 있습니다. 그들은 이러한 보고서가 수신되는 대로 자동으로 인쇄되기를 원합니다.
나는 이미 이메일 첨부 파일을 자동으로 다운로드하는 프로그램을 찾았습니다.메일 첨부 다운로더.
이상적으로는 다음과 같은 프로그램을 원합니다.
- 다운로드된 새 XLS 스프레드시트를 선택한 폴더에서 검색하세요.
- 인쇄해 보세요.
- 해당 항목을 제거하십시오(다른 폴더로 이동하는 것이 좋습니다).
#3을 처리하기 위해 배치 파일을 작성할 수 있다는 것을 알고 있습니다. # 1은 실제로 필요하지 않습니다. 특정 시간에 프로그램을 실행하여 보이는 모든 파일을 자동으로 인쇄한 다음 배치 파일을 사용하여 파일을 다른 곳으로 이동할 수 있습니다. 그러나 Excel 스프레드시트를 자동으로 인쇄하는 프로그램을 찾는 것은 어려운 것으로 입증되었습니다.
스프레드시트를 자동으로 인쇄하는 일부 Excel 매크로를 본 적이 있지만 자동으로 열어서 모두 자체적으로 인쇄하고 싶습니다.
제가 직면한 과제 중 하나는 청구 부서에 아직 Microsoft Excel이 없다는 것입니다. 가까운 시일 내에 Excel 2010이 설치된 컴퓨터를 갖게 될 것이지만 지금은 LibreOffice만 있습니다.
답변1
저는 AutoIt을 사용하여 Excel을 열고 지정된 폴더("viat"로 시작)에서 유일한 파일("elec"로 시작)을 열고 이를 인쇄하고 Excel을 닫은 다음 배치 파일을 실행하여 파일을 보관하는 스크립트를 만들었습니다. 방금 인쇄한 파일입니다.
다음은 AutoIt 스크립트 파일의 코드입니다. 나는 이 기능이 제대로 작동하려면 절전 명령이 필요하다는 사실을 발견할 때까지 한동안 이것에 대해 고민하고 있었습니다.
Run("C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe")
WinWaitActive("Microsoft Excel")
Send("^o")
WinWaitActive("Open")
ControlClick("Open", "", 1148)
Send("c:\viat{DOWN}{ENTER}")
Sleep(1000)
Send("elec")
Sleep(1000)
Send("{DOWN}{ENTER}")
WinWaitActive("Microsoft Excel")
Send("^p")
Sleep(1000)
Send("{ENTER}")
Sleep(1000)
WinClose("Microsoft Excel")
Sleep(1000)
Run(""C:\Users\Chris\Documents\ViaTrack Archives\archiver.bat"")
archiver.bat의 코드는 다음과 같습니다.
move "C:\ViaTrack Reports\*.*" "C:\Users\Chris\Documents\ViaTrack Archives"
매우 단순한 코딩이지만 작업이 완료됩니다. 이 스크립트의 가장 큰 단점은 폴더에 파일이 없으면 Excel에서 오류가 발생한다는 것입니다. 그러나 예상치 못한 지연이 발생할 수 있으므로 파일이 일반적으로 나에게 이메일로 전송된 후 약 한 시간 후에 실행되도록 예약되어 있습니다.
파일은 일반적으로 매주 평일 오전 5시 40분에 이메일로 전송됩니다. 역사적으로, 그것은 5시 45분 이후에 도착한 적이 없습니다. 메일 첨부 파일 다운로더는 15분마다 새 첨부 파일을 확인하도록 설정되어 있습니다.
오늘 아침에는 잘 작동했습니다. 청구 부서 관리자는 와서 자신의 보고서가 프린터에 기다리고 있다는 사실을 알게 되어 기뻤고, 자신이 직접 인쇄할 필요도 없었습니다.
답변2
인쇄하려는 시스템에 Excel이 설치되어 있는 경우 스크립팅에서 Excel 자동화를 사용할 수 있습니다(배치 파일에서 또는 배치 파일 대신 시작할 수 있음).
다음은 VBScript 및 PowerShell의 몇 가지 예입니다.
VBscript .VBS(발견됨여기):
Dim XLApp
Dim XLWkbk
Dim ObjArgs
set ObjArgs = wscript.arguments
if ObjArgs.count <> 1 then
wscript.echo "Invalid passed arguments"
wscript.quit
end if
Set XLApp = CreateObject("Excel.Application")
XLApp.Visible = False
Set XLWkbk = XLApp.Workbooks.Open(objargs(0))
XLWkbk.PrintOut
XLWkbk.Close False
XLApp.Quit
Set XLWkbk = Nothing
Set XLApp = Nothing
Set ObjArgs = nothing
PowerShell .PS1에 해당:
$excelApp = New-Object -comobject Excel.Application
if ($args.Length -lt 1)
{
Write-Host "Please provide full path and filename (ie: `"c:\books\excelfile.xlsx`")"
Exit
}
$excelBook = $excelApp.Workbooks.Open($args[0])
$excelBook.PrintOut()
$excelApp.Quit()