VCS_Report.bas 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. Option Compare Database
  2. Option Private Module
  3. Option Explicit
  4. ' --------------------------------
  5. ' Structures
  6. ' --------------------------------
  7. Private Type str_DEVMODE
  8. RGB As String * 94
  9. End Type
  10. Private Type type_DEVMODE
  11. strDeviceName(31) As Byte 'vba strings are encoded in unicode (16 bit) not ascii
  12. intSpecVersion As Integer
  13. intDriverVersion As Integer
  14. intSize As Integer
  15. intDriverExtra As Integer
  16. lngFields As Long
  17. intOrientation As Integer
  18. intPaperSize As Integer
  19. intPaperLength As Integer
  20. intPaperWidth As Integer
  21. intScale As Integer
  22. intCopies As Integer
  23. intDefaultSource As Integer
  24. intPrintQuality As Integer
  25. intColor As Integer
  26. intDuplex As Integer
  27. intResolution As Integer
  28. intTTOption As Integer
  29. intCollate As Integer
  30. strFormName(31) As Byte
  31. lngPad As Long
  32. lngBits As Long
  33. lngPW As Long
  34. lngPH As Long
  35. lngDFI As Long
  36. lngDFr As Long
  37. End Type
  38. 'Exports print vars for reports
  39. Public Sub ExportPrintVars(ByVal obj_name As String, ByVal filepath As String)
  40. DoEvents
  41. Dim fso As Object
  42. Set fso = CreateObject("Scripting.FileSystemObject")
  43. Dim DevModeString As str_DEVMODE
  44. Dim DevModeExtra As String
  45. Dim DM As type_DEVMODE
  46. Dim rpt As Report
  47. 'report must be open to access Report object
  48. 'report must be opened in design view to save changes to the print vars
  49. DoCmd.SetWarnings False
  50. DoCmd.OpenReport obj_name, acViewDesign, , , acHidden
  51. DoCmd.SetWarnings True
  52. Set rpt = Reports(obj_name)
  53. 'read print vars into struct
  54. If Not IsNull(rpt.PrtDevMode) Then
  55. DevModeExtra = rpt.PrtDevMode
  56. DevModeString.RGB = DevModeExtra
  57. LSet DM = DevModeString
  58. Else
  59. Set rpt = Nothing
  60. DoCmd.Close acReport, obj_name, acSaveNo
  61. Debug.Print "Warning: PrtDevMode is null"
  62. Exit Sub
  63. End If
  64. Dim OutFile As Object
  65. Set OutFile = fso.CreateTextFile(filepath, overwrite:=True, unicode:=False)
  66. 'print out print var values
  67. OutFile.WriteLine DM.intOrientation
  68. OutFile.WriteLine DM.intPaperSize
  69. OutFile.WriteLine DM.intPaperLength
  70. OutFile.WriteLine DM.intPaperWidth
  71. OutFile.WriteLine DM.intScale
  72. OutFile.Close
  73. Set rpt = Nothing
  74. DoCmd.Close acReport, obj_name, acSaveYes
  75. End Sub
  76. Public Sub ImportPrintVars(ByVal obj_name As String, ByVal filepath As String)
  77. On err GoTo err
  78. Dim fso As Object
  79. Set fso = CreateObject("Scripting.FileSystemObject")
  80. Dim DevModeString As str_DEVMODE
  81. Dim DevModeExtra As String
  82. Dim DM As type_DEVMODE
  83. Dim rpt As Report
  84. 'report must be open to access Report object
  85. 'report must be opened in design view to save changes to the print vars
  86. DoCmd.OpenReport obj_name, acViewDesign
  87. Set rpt = Reports(obj_name)
  88. 'read print vars into struct
  89. If Not IsNull(rpt.PrtDevMode) Then
  90. DevModeExtra = rpt.PrtDevMode
  91. DevModeString.RGB = DevModeExtra
  92. LSet DM = DevModeString
  93. Else
  94. Set rpt = Nothing
  95. DoCmd.Close acReport, obj_name, acSaveNo
  96. Debug.Print "Warning: PrtDevMode is null"
  97. Exit Sub
  98. End If
  99. Dim InFile As Object
  100. Set InFile = fso.OpenTextFile(filepath, iomode:=ForReading, create:=False, Format:=TristateFalse)
  101. 'print out print var values
  102. DM.intOrientation = InFile.readline
  103. DM.intPaperSize = InFile.readline
  104. DM.intPaperLength = InFile.readline
  105. DM.intPaperWidth = InFile.readline
  106. DM.intScale = InFile.readline
  107. InFile.Close
  108. 'write print vars back into report
  109. LSet DevModeString = DM
  110. Mid(DevModeExtra, 1, 94) = DevModeString.RGB
  111. rpt.PrtDevMode = DevModeExtra
  112. Set rpt = Nothing
  113. DoCmd.Close acReport, obj_name, acSaveYes
  114. Exit Sub
  115. err:
  116. logger "ImportPrintVars", "ERROR", "Report " & obj_name & " was not found, import print vars cancelled"
  117. End Sub