2011-11-15 6 views
1

현재 pdfcreator를 사용하여 보고서를 pdf 형식으로 변환하고 있습니다. 이것은 수동으로 pdf 파일로 보고서를 자동으로 저장하는 솔루션을 찾고 있습니다. 코드는 Access 2000 및 최신 버전에서 작동해야합니다.pdf로 보고서 저장

답변

3

.
우리는 Access 2003을 사용하며 A2000, 2002 및 2003에서 작동합니다 (A2007은 PDF를 즉시 지원합니다).

그것은 당신의 응용 프로그램 폴더 또는 %windir%\system32 폴더에있을 필요가 단지 두 개의 DLL로 구성

그들은를 등록 할 필요가 없습니다.

모든 컴퓨터에 PDF 프린터를 설치하는 것보다 파일 두 개를 복사하는 것이 더 쉽기 때문에 PDF 프린터 대신이 솔루션을 사용하는 것이 좋습니다.

1

나는 전에이 방법을 사용했습니다 : http://bytes.com/topic/access/answers/204362-howto-automate-printing-access-reports-pdf-files

이것은 내가 마이크로 소프트 액세스의 인쇄를 자동화하는 데 사용되는 방법은 PDF 형식, 즉 무인으로 성가신없이 보고서 "다른 이름으로 저장 ..." 대화 상자 더 중요한 것은 Adobe Acrobat 및 관련 API와 같은 상용 프로그램을 사용하지 않아도된다는 것입니다.

기술은 사용 고스트 스크립트 및 리디렉션 포트 모니터 - 러셀 랭에 의해 무료로 제공 PDF 문서를 만들기위한 두 가지 무료 프로그램. 실제 자동화에서는 FileSystemObject, WScript.Network (Windows 스크립트 호스트 네트워크 개체) 및 자동화를 사용하여 VBA 코딩이 필요합니다.

지침 :

1)를 설치 고스트 이 - 리디렉션 포트 모니터 - - 포스트 스크립트 언어 및 PDF http://www.cs.wisc.edu/~ghost/

2) RedMon 설치를위한 통역 프로그램에 특수 프린터 포트를 리디렉션 (예 : 고스트 스크립트) http://www.cs.wisc.edu/~ghost/redmon/

3) 가상 PDF 프린터 설정 http://masterdev.dyndns.dk/know/freepdf.html http://stat.tamu.edu/~henrik/GSWriter/GSWriter.html

4)가 구성 : - 고스트 및 Redmon 를 사용하여 여기에 위의 도구를 설치하는 방법을 설명하는 두 개의 웹 페이지입니다 - 출력 : 에서 PDF 가상 프린터로 다음 mannter을 사용 RedMon 프린터 포트 "프로그램은 출력을 처리"- 새로운 PDF 파일은 항상 C, 즉 같은 파일을 저장해야합니다 : \ 임시 \의 output.pdf

"프로그램 인수"설정에 다음을 사용하십시오. @c : \ gs \ pdfconf.txt -sOutputFile =

5) 즉를 인쇄 자신의 Visual Basic에서 코드를 작성합니다 (대신 "% 1"의 문자 파일 경로를 참고) - "C \ 임시 \의 output.pdf는" -f가 .setpdfwrite -c pdf 에보고 한 다음 FileSystemObject를 사용하여 chosing의 이름/위치로 복사하십시오. WScript.Network 개체를 사용하여 기본 프린터 을 일반 기본 프린터에서 PDF 프린터로 변경 한 다음 다시 되돌립니다.

예제 코드 (액세스 Visual Basic의) :

Sub PrintReportToPDF(strReport as String, _ 
strOutputPath as String) 

Const PDF_PRINTER as String = "PDF Printer" 
Const ORIGINAL_PRINTER as String = "\\OFFICE\HP1320" 
Const TEMP_PATH as String = "C:\temp\output.pdf" 

Dim net as WScript.Network 
Dim fso as Scripting.FileSystemObject 

Set net = new WScript.Network 
net.setDefaultPrinter PDF_PRINTER 

DoCmd.OpenReport strReport 

Set fso = New Scripting.FileSystemObject 
fso.CopyFile TEMP_PATH, strOutputPath, True 
fso.DeleteFile TEMP_PATH 
Set fso = Nothing 

net.setDefaultPrinter ORIGINAL_PRINTER 
Set net = Nothing 

End Sub 

앞의 코드가 액세스 2000 내부에서 작업하려면 Microsoft 스크립팅 런타임 및 Windows 스크립트 호스트 개체 모델에 참조를 추가해야합니다.

내 경험이 지금까지 서브 루틴 DoCmd.OpenReport()는 당신이 output.pdf가있을 수 있습니다 매우 큰 보고서가있는 경우 은, 그러나 ... 매우 빠르게 PDF로 보고서를 출력 완료한다는 것입니다 때 FileSystemObject를 이동/이름 바꾸기로 이동합니다. 따라서 Windows API Sleep() 함수를 사용하는 것이 좋습니다. 독자에게 연습 문제로 남겨 여러 보고서를 출력 루틴을 작성 < http://support.microsoft.com/kb/q162150/>

참조하십시오. 개인적으로 보고서 이름을 내 VBA 모듈에 하드 코딩하는 대신 "Settings_Reports"테이블의 테이블에 내 보고서를 보관하는 것이 좋습니다.

추가 팁 :

  • 사용 DoCmd.SendObject()은 관리자에게 새로 만든 보고서의 이메일 전송을 자동화 할 수 있습니다.

  • 하나 개의 파일로 URL을 서로 다른 PDF 보고서를 병합 PDF 툴킷을 사용하여이 또한 WScript.Shell.Run() 방법을 통해 VBA 쉘() 함수를 사용하여 자동화, 또는 의 VBScript에서 할 수 http://www.accesspdf.com/pdftk

  • VBScript를 사용 Excel 또는 Word처럼 Access를 자동화 할 수 있습니다. ACC : 자동화 서버로 Microsoft Access를 사용하여이 http://support.microsoft.com/kb/q147816/

코드 조각 (VBScript를이) :

말할 필요도없이
dim acc 
set acc = CreateObject("Access.Application") 
with acc 
..OpenCurrentDatabase "C:\Reports\Sales.mdb" 

' Call the customer subroutine we defined earlier 
..Run("PrintReportToPDF", "rptSalesFigures_Monthly", _ 
"N:\Marketing\Reports\SalesSummary" _ 
& Year(Date()) & Format(Month(Date()),"00") 

[Etc...] 

, 거기에 많은 것을 할 수있다 다음 Microsoft 기술 자료 문서를 참조하십시오 접근법으로 끝내라. 그리고 가장 중요한 부분은 다른 API (일반 Windows 스크립트 호스트 및 Microsoft Scripting 런타임 라이브러리 이외의 다른 라이브러리를 배울 필요가 없다는 것입니다. 그리고 모두의 베스트는 완전 무료입니다! C에 고스트를 설치 < http://masterdev.dyndns.dk/know/freepdf.html>

  1. :에서 cribbed - 여기 설치 및 가상 PDF 프린터를 구성하기위한 자세한 지침은 다음과 같습니다 http://www.ghostscript.com/doc/AFPL/index.htm \

    는 PDF 프린터 설정

  2. 텍스트 파일 (c : \ gs \ pdfconf.txt)을 만들고 다음 텍스트를 추가하십시오.

    -ic : \ GS \ gs8.11 \ lib에; C : \ GS \ 글꼴 -sDEVICE =으로, pdfwrite -dNOPAUSE -dSAFER

참고 버전 8.11에 첫 번째 줄 포인트 고스트 스크립트. 다른 버전이 있거나 다른 위치에 설치 한 경우 적절하게 변경하십시오.

  1. 다운로드, 당신은 setup.exe를 실행하는 경우에만 메시지 상자가 표시됩니다 http://www.cs.wisc.edu/~ghost/redmon/index.htm

    • 풀고 RedMon (재 PortMonitor)를 설치합니다.
  2. Windows의 시작 버튼 아래에서 프린터/팩스 메뉴로 이동하고 새 프린터를 추가하십시오.

    • 프린터 드라이버는/color postscript/ 프린터 용이어야합니다. 나는 HP 컬러 레이저젯 4550 PS를 선택
    • 프린터 포트 RPT1로 설정 : (리디렉션 포트)
  3. 포트 구성 리디렉션 포트에 "C : \ GS \ gs8.11 \ 빈 \의 gswin32c % 1 .EXE ": @c \ GS \ pdfconf.txt -sOutputFile = 이 프로그램에 대한

인수가 (다른 경우, 고스트의 버전과 위치를 반영하기 위해이 줄을 갱신)" "-c .setpdfwrite -f -

,210

출력 : "파일 이름에 대한 프롬프트" 실행 : "보통"

  1. 이 프린터로 컬러 뭔가를 인쇄 해보십시오. 모든 것이 올바르게 작동하면 (PDF 확장자를 잊지 말것) 아래에 PDF 파일이 으로 저장 될 파일 이름을 묻는 메시지가 나타납니다. ' 희망이 있으면 도움이됩니다.

[email protected] 우리는 PDF 파일을 생성 Stephen Lebans' ReportToPDF를 사용하는

관련 문제