The only issue was that there was an underscore (continue on next line character) that seems to have broken during formatting. iLogic code window should have highlighted the issue for you.
I fixed the issue and posted the code below, but a heads up, when i tested it it crashed my inventor the first time, second time worked perfectly, third time, did something weird and replaced a reference within my assembly. I don't know if it's just an inventor 2019 drawing bug but that is my experience with it.
Sub Main()
'Check that we are in a drawing document.
If ThisDoc.Document.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then
'Get a reference to the current drawing.
Dim dwgDoc As DrawingDocument = ThisDoc.Document
'Check that we have atleast one view on the sheet.
If dwgDoc.ActiveSheet.DrawingViews.Count > 0 Then
'Get a reference to the original model in the view.
Dim compDoc As Document = dwgDoc.ActiveSheet.DrawingViews(1).ReferencedDocumentDescriptor.ReferencedDocument
'Get the filename of the replacement model
Dim newFileName As String = GetNewReference() 'Sub to show dialog and get file name.
'Open the replacement model.
Dim newFile As Document
If Not String.IsNullOrEmpty(newFileName) Then
Try
newFile = ThisApplication.Documents.Open(newFileName, False)
Catch
MessageBox.Show("Could not open target file.")
End Try
'Check to see if we have valid documents to work with.
If Not newFile Is Nothing Then
Dim okContinue As Boolean = True
If Not newFile.InternalName = compDoc.InternalName Then
'Display warning if inner names of models do not math.
msgResult = MessageBox.Show("Warning, files do not match." & vbCrLf & " Results can be unpredictable." & vbCrLf & _
"Do you want To Continue", "Copy/Replace Sheet", MessageBoxButtons.YesNo)
If Not msgResult = DialogResult.Yes Then
okContinue = False
End If
End If
If okContinue Then
Dim newDwg As DrawingDocument
Try
'Create the new drawing document.
newDwg = ThisApplication.Documents.Add(kDrawingDocumentObject, Nothing, False)
'Copy the active sheet to the new document.
Dim newSheet As Sheet = dwgDoc.ActiveSheet.CopyTo(newDwg)
'Replace the model reference on the new sheet with the replacement reference
newSheet.DrawingViews(1).ReferencedDocumentDescriptor.ReferencedFileDescriptor.ReplaceReference(newFileName)
'Copy the sheet back to the original drawing.
Dim copiedSheet As Sheet = newSheet.CopyTo(dwgDoc)
newDwg.Close(True)
'Activate the new sheet.
copiedSheet.Activate()
InventorVb.DocumentUpdate()
Catch
MessageBox.Show("Error occurred copying sheet.")
End Try
End If
End If
End If
End If
End If
End Sub
Function GetNewReference() As String
' Create a new FileDialog object.
Dim oFileDlg As Inventor.FileDialog
Call ThisApplication.CreateFileDialog(oFileDlg)
' Define the filter to select part and assembly files or any file.
oFileDlg.Filter = "Inventor Files (*.iam;*.ipt)|*.iam;*.ipt|All Files (*.*)|*.*"
' Define the part and assembly files filter to be the default filter.
oFileDlg.FilterIndex = 1
' Set the title for the dialog.
oFileDlg.DialogTitle = "Copy/Replace Sheet - Select Replacement Model"
' Set the initial directory that will be displayed in the dialog.
oFileDlg.InitialDirectory = ThisDoc.Path
' Set the flag so an error will be raised if the user clicks the Cancel button.
oFileDlg.CancelError = True
' Show the open dialog. The same procedure is also used for the Save dialog.
' The commented code can be used for the Save dialog.
Try
oFileDlg.ShowOpen
Catch
'MessageBox.Show("User cancelled out of dialog", "Replace Reference")
Finally
If Not oFileDlg.FileName = "" Then
'MessageBox.Show("File " & oFileDlg.FileName & " was selected.", "Replace Reference")
GetNewReference = oFileDlg.FileName
End If
End Try
End Function