2017-01-27 1 views
0

私は現在、Excelで書かれたマクロを持っているので、強調表示された行が自動的に必要なExcelフォームフィールドに挿入されます。わかりやすさを助けるために、データベースをMicrosoft Accessに移行する必要があります。しかし、私たちは依然としてデータベースからフォームをすばやく作成できる必要があります。AccessでExcel用に書かれたVBAコードを使用してPDFフォームに自動的に記入

Accessで動作するように、以下のコードをどのように変更できますか?
(以下、単に一例である)あなたの助けを

Public Sub Billing_Information() 
    Dim sFileHeader As String 
    Dim sFileFooter As String 
    Dim PDF_FILE As String 
    Dim sFileFields As String 
    Dim sFileName As String 
    Dim sTmp As String 
    Dim lngFileNum As Long 
    Dim vClient As Variant 

    PDF_FILE = "BI.pdf" 


    ' Builds string for contents of FDF file and then writes file to workbook folder. 
    On Error GoTo ErrorHandler 

    sFileHeader = "%FDF-1.2" & vbCrLf & _ 
        "%âãÏÓ" & vbCrLf & _ 
        "1 0 obj<</FDF<</F(" & PDF_FILE & ")/Fields 2 0 R>>>>" & vbCrLf & _ 
        "endobj" & vbCrLf & _ 
        "2 0 obj[" & vbCrLf 

    sFileFooter = "]" & vbCrLf & _ 
        "endobj" & vbCrLf & _ 
        "trailer" & vbCrLf & _ 
        "<</Root 1 0 R>>" & vbCrLf & _ 
        "%%EO" 


    sFileFields = "<</T(Name)/V(---Name---)>>" & vbCrLf & _ 
        "<</T(Address)/V(---Address---)>>" & vbCrLf & _ 
        "<</T(City)/V(---City---)>>" & vbCrLf & _ 
        "<</T(Postal Code)/V(---Postal Code---)>>" & vbCrLf & _ 
        "<</T(Unit)/V(---Unit---)>>" & vbCrLf & _ 
        "<</T(Email)/V(---Email---)>>" & vbCrLf & _ 
        "<</T(Phone #)/V(---Phone #---)>>" & vbCrLf & _ 
        "<</T(Claim)/V(---Claim---)>>" & vbCrLf & _ 
        "<</T(Rate)/V(---Rate---)>>" & vbCrLf 

    'Range("A2").Select 

    vClient = Range(Selection.Row & ":" & Selection.Row) 

    Dim count As Integer 
    count = 1 

    sFileFields = Replace(sFileFields, "---Name---", vClient(1, count)) 
    count = count + 1 
    sFileFields = Replace(sFileFields, "---Address---", vClient(1, count)) 
    count = count + 1 
    sFileFields = Replace(sFileFields, "---City---", vClient(1, count)) 
    count = count + 1 
    sFileFields = Replace(sFileFields, "---Postal Code---", vClient(1, count)) 
    count = count + 1 
    sFileFields = Replace(sFileFields, "---Unit---", vClient(1, count)) 
    count = count + 1 
    sFileFields = Replace(sFileFields, "---Email---", vClient(1, count)) 
    count = count + 1 
    sFileFields = Replace(sFileFields, "---Phone #---", vClient(1, count)) 
    count = count + 1 
    sFileFields = Replace(sFileFields, "---Rate---", vClient(1, count)) 
    count = count + 1 
    sFileFields = Replace(sFileFields, "---Claim---", vClient(1, count)) 

    sTmp = sFileHeader & sFileFields & sFileFooter 


    ' Write FDF file to disk 
    sFileName = "BillingMultipule" 
    sFileName = ActiveWorkbook.Path & "\" & sFileName & ".fdf" 
    lngFileNum = FreeFile 
    Open sFileName For Output As lngFileNum 
    Print #lngFileNum, sTmp 
    Close #lngFileNum 
    DoEvents 

    ' Open FDF file as PDF 
    ShellExecute vbNull, "open", sFileName, vbNull, vbNull, SW_NORMAL 
Exit Sub 

ErrorHandler: 
    MsgBox "MakeFDF Error: " + Str(Err.Number) + " " + Err.Description + " " + Err.Source  
End Sub 

感謝。

+0

ここにはさまざまな可動部品があります。あなたは* database *と言いますが、Accessではまだありません。あなたは*フォーム*は言いますが、Excelユーザーフォームは言及していません。あなたは* PDFフォーム*について言及していますが、インターフェイスには[Adobe SDK](http://www.khk.net/wordpress/2009/03/04/adobe-acrobat-and-vba-an-introduction/)ではなくFDFマークアップを使用しますAdobeオブジェクトに変換します。適切な用語でワークフローを明確に説明してください。 – Parfait

答えて

0

Accessでフォームとレポートを使用し、pdfとして組み込みの「書き出し」機能を使用する方がよいでしょう。

フォームを使用してデータを選択し、レポートを使用してPDFのレイアウトを設計します。

初めて「手動で」エクスポートすると、エクスポート手順が保存されます。 "YES"をクリックして、この "Saved Export"をコードまたはマクロで使用して、ボタンをクリックすると希望するPDF出力ファイルを生成します。

+0

私はこれまで私が持っていたPDFフォームのように見えるだろうか? – stick797

+0

はい、あなたはおそらくそれをより良く/より簡単にする方法を見つけるでしょう。 – tahwos

+0

レコードを1つだけ(つまりテーブルの1行)表示させるにはどうすればよいですか? – stick797

関連する問題