我正在创建一个包含许多化学品和数据库的数据库。关联的.pdf文件及其信息。
每种化学品都有一个唯一的ID,并且在同一行中有一个指向网络上.pdf文件的链接。
此外,每种化学品都有一个分配给它的位置。
我的目标是能够在每个位置打印与化学品相关的所有.pdf。
例如:
ID Chemical Location PDF-link
1 Acetone Lab-A A:/folder/1.pdf
2 Fire Lab-A A:/folder/2.pdf
1 Acetone Lab-B A:/folder/1.pdf
3 Sponge Lab-B A:/folder/3.pdf
4 Candy Lab-B A:/folder/4.pdf
如果我指定Lab-A,我希望它能同时打印PDF:1.pdf,2.pdf。
如果我指定Lab-B,我希望它能打印相应的.pdf文件。
当然我也希望能够打印所有这些,但我想如果我弄清楚如何做到这一点,我可以设法做到这一点。
感谢您的帮助。
答案 0 :(得分:2)
看看这个:http://www.jpsoftwaretech.com/open-or-print-files-in-vba/
我已经通过在表单上放置一个命令按钮来成功使用它,例如:
在一个模块中,我把它放在:
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
我的一个命令按钮的OnClick事件是:
PathName1 = "Full path.pdf"
PathName2 = "Full path.rtf"
ExecuteFile PathName1, printfile
ExecuteFile PathName2, printfile
您需要设置Select Case
或If Then Else
语句来打印您真正想要的内容。
答案 1 :(得分:2)
执行此操作的代码如下所示:
Sub PrintMyPdf()
Dim rst As DAO.Recordset
Dim strSQL As String
strSQL = "select * from tblChem where Location = '" & Me.txtLocation & "'"
Set rst = CurrentDb.OpenRecordset(strSQL)
Do While rst.EOF = -False
Call PrintOnePdf(rst![PDF-link])
rst.MoveNext
Loop
rst.Close
End Sub
Sub PrintOnePdf(strF As String)
CreateObject("Shell.Application").Namespace(0).ParseName(strF).InvokeVerb ("Print")
End Sub
上面的代码假设你在txtLocation的形式上有一个文本框,然后上面的代码可以放在按钮点击后面(或者只需点击按钮点击上面的代码即可。
上述代码假设您有某种类型的PDF阅读器可以进行打印。