Hello,
I am trying to print a dwg file in pdf using vba. Everything seems to work fine.
The pdf file is even created. However, whenever i try to open it with adobe reader, it is said that adobe can't open the pdf file.
I don't know what to do. Is there any mistake in my code ?
I am a beginner in vba programming.
Below is my vba code:
Code:
Sub Access_Autocad() 'nom de ma procédure
Dim AutoCAD As Object 'Autocad est la variable ici
Set AutoCAD = CreateObject("Autocad.Application") 'ouvre AutoCad
AutoCAD.Visible = True
Dim Path_File As String 'Chemin du fichier autocad
Path_File = "P:\Plannif_VBA_AutoCAD\PLA_TEN_C18_406_RONDES.dwg"
Set AutoCAD = AutoCAD.Documents.Open(Path_File) 'ouvre fichier ronde
'Changement de la couleur des calques des rondes
Dim layer_ronde As AcadLayer
Set layer_ronde = AutoCAD.Layers.Add("99103") 'attribuer à la ronde le nom du calque correspondant
layer_ronde.Color = acRed 'changer la couleur du calque
Dim layer_ronde1 As AcadLayer
Set layer_ronde1 = AutoCAD.Layers.Add("99103")
layer_ronde1.Color = 12
Dim layer_ronde2 As AcadLayer
Set layer_ronde2 = AutoCAD.Layers.Add("99105")
layer_ronde2.Color = 16
Dim layer_ronde3 As AcadLayer
Set layer_ronde3 = AutoCAD.Layers.Add("99106")
layer_ronde3.Color = 5
Dim DocToPrint As AcadPlot 'Objet à plotter (technically we plot before printing)
Dim DocConfigs As AcadPlotConfigurations
Dim PlotConfig As AcadPlotConfiguration
Dim pdfFile As String
pdfFile = Replace(Path_File, "dwg", "pdf")
Set DocToPrint = AutoCAD.Plot
Set DocConfigs = AutoCAD.PlotConfigurations
Set PlotConfig = DocConfigs.Add("A2", True) 'Add a new plot configuration
Set PlotConfig = DocConfigs.Item("A2")
'LAYOUT LAYOUT LAYOUT LAYOUT
Dim Layouts As AcadLayouts
Dim Layout As AcadLayout
Set Layouts = AutoCAD.Layouts
Layouts("A2").ConfigName = "DWG To PDF.pc3" 'pour choisir le layout/présentation ou on veut imprimer A2,A3,A0 et le dwg to pc3
AutoCAD.ActiveSpace = acPaperSpace
AutoCAD.Layouts("A2").StyleSheet = "Acad.ctb"
AutoCAD.Layouts("A2").UseStandardScale = False
AutoCAD.Layouts("A2").StandardScale = acScaleToFit 'échelle du tracé à la taille du papier
AutoCAD.Layouts("A2").PaperUnits = acPouces 'unités du papier
AutoCAD.Layouts("A2").PlotRotation = ac0degrees
AutoCAD.Layouts("A2").PlotType = acExtents
AutoCAD.Layouts("A2").CenterPlot = True 'Centrer le tracé
'AutoCAD.Layouts("A2").CanonicalMediaNames = "ANSI_full_bleed_A_(8.50_x_11.00_pouces) 'Format papier d'impression"
AutoCAD.Layouts("A2").RefreshPlotDeviceInfo
Dim Printing
Printing = DocToPrint.PlotToFile(pdfFile, PlotConfig.ConfigName)
'Set Printing = DocToPrint.Documents.Open(Printing)
'DocToPrint = AutoCAD.Document.Plot.DisplayPlotPreview.PlotToDevice(Printer)
End Sub