<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Export Largest Parts List to Excel in Inventor Programming - iLogic, Macros, AddIns &amp; Apprentice</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941872#M152218</link>
    <description>&lt;P&gt;I tested it on a few other drawings. Sometimes I have rows hidden in the parts list. They are counted in the "oPL.PartsListRows.Count" but then only the visible rows are exported to Excel. That particular parts list with hidden rows will be used again on the last sheet of the drawing for the total quantity of loose components so it should be exported with all rows (even hidden lines).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there are way to export all the rows from this line of code or perhaps change the "oPL.PartsListRows.Count" to count only the visible lines? Is there a "Visible" I could use in there?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;oLongestPL&lt;/SPAN&gt;.&lt;SPAN&gt;Export&lt;/SPAN&gt;(&lt;SPAN&gt;excelName&lt;/SPAN&gt;, &lt;SPAN&gt;PartsListFileFormatEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kMicrosoftExcel&lt;/SPAN&gt;, &lt;SPAN&gt;options&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 04 May 2023 15:57:08 GMT</pubDate>
    <dc:creator>emanuel.c</dc:creator>
    <dc:date>2023-05-04T15:57:08Z</dc:date>
    <item>
      <title>Export Largest Parts List to Excel</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941247#M152204</link>
      <description>&lt;P&gt;I would like to export to excel the largest parts list found in a drawing. The reasoning is that if it's a weldment typically the parts list will be found on sheet 1 and it should automatically be the largest. If it's an assembly, usually at the end of the drawing we would have a parts list with a total quantity (parts only level) of all the loose parts in that assembly. As such I need to find which is the largest parts list on the drawing and export that.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The function RowNum returns the number of rows of each parts list on all sheets and it works well.&lt;/P&gt;&lt;P&gt;The Sub ExportPartsList also works well. Currently it's set to export the parts list from the 1st sheet, since PltoExport = 1.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm not sure how to capture the values from function RowNum in an array, compare them and have variable PLtoExport assigned the maximum value of that array.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for your help!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;()
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Not&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt; = &lt;SPAN&gt;kDrawingDocumentObject&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Hey this rule only runs in drawing documents!"&lt;/SPAN&gt;)
		&lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingDocument&lt;/SPAN&gt;
	&lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSheet&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Sheet&lt;/SPAN&gt;
	&lt;SPAN&gt;i&lt;/SPAN&gt; = 1
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oSheet&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Sheets&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oPL&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsList&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oSheet&lt;/SPAN&gt;.&lt;SPAN&gt;PartsLists&lt;/SPAN&gt;
		&lt;SPAN&gt;RowNum&lt;/SPAN&gt;(&lt;SPAN&gt;oPL&lt;/SPAN&gt;)
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSheet1&lt;/SPAN&gt; = &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Sheets&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
		&lt;SPAN&gt;i&lt;/SPAN&gt; = &lt;SPAN&gt;i&lt;/SPAN&gt; + 1
		&lt;SPAN&gt;irows&lt;/SPAN&gt; = &lt;SPAN&gt;RowNum&lt;/SPAN&gt;(&lt;SPAN&gt;oPL&lt;/SPAN&gt;)
		&lt;SPAN&gt;'MessageBox.Show("Parts List on Sheet: " &amp;amp; i &amp;amp; " has " &amp;amp; irows &amp;amp; " rows")&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;	
	&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;PLtoExport&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1
&lt;SPAN&gt;ExportPartsList&lt;/SPAN&gt;(&lt;SPAN&gt;PLtoExport&lt;/SPAN&gt;)

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;RowNum&lt;/SPAN&gt;(&lt;SPAN&gt;oPartsList&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsList&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPartList&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsList&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oPartsList&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRows&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
	&lt;SPAN&gt;oRows&lt;/SPAN&gt; = &lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListRows&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
	&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;oRows&lt;/SPAN&gt;
	
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;ExportPartsList&lt;/SPAN&gt;(&lt;SPAN&gt;PLtoExport&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;)
		
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;odrawDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingDocument&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;
	&lt;SPAN&gt;odrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Activate&lt;/SPAN&gt;
	&lt;SPAN&gt;'get the path and name of the drawing file&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fileName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;  = &lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;Path&lt;/SPAN&gt;.&lt;SPAN&gt;GetFileNameWithoutExtension&lt;/SPAN&gt;(&lt;SPAN&gt;odrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;FullFileName&lt;/SPAN&gt;)
	&lt;SPAN&gt;'Logger.Info("FileName: " &amp;amp; fileName)&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fullFileName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;odrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;FullFileName&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Dim FilePath As String = Left(FullFileName, InStrRev(FullFileName, "\"))&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;filePath&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
	&lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;filePath&lt;/SPAN&gt; = &lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;Path&lt;/SPAN&gt;.&lt;SPAN&gt;GetDirectoryName&lt;/SPAN&gt;(&lt;SPAN&gt;odrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;FullFileName&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;"\"&lt;/SPAN&gt;
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
		&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"You need to save the file first!"&lt;/SPAN&gt;, &lt;SPAN&gt;"Error: No Filename"&lt;/SPAN&gt;)
		&lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;excelName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;filePath&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"BOM for - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;fileName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;".xlsx"&lt;/SPAN&gt;
	&lt;SPAN&gt;'Logger.Info("ExcelName: " &amp;amp; excelName)&lt;/SPAN&gt;
	
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;File&lt;/SPAN&gt;.&lt;SPAN&gt;Exists&lt;/SPAN&gt;(&lt;SPAN&gt;excelName&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;'Ask to overwrite Excel File&lt;/SPAN&gt;
&lt;SPAN&gt;'		Dim result As MsgBoxResult = MessageBox.Show("The Excel file already exists: " &amp;amp; _&lt;/SPAN&gt;
&lt;SPAN&gt;'									vbCr &amp;amp; vbCr &amp;amp; excelName &amp;amp; vbCr &amp;amp; vbCr &amp;amp; "Do you want to overwrite the file?", "File Exists", _&lt;/SPAN&gt;
&lt;SPAN&gt;'									MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)&lt;/SPAN&gt;
&lt;SPAN&gt;'		If result = MsgBoxResult.Yes Then&lt;/SPAN&gt;
			&lt;SPAN&gt;Try&lt;/SPAN&gt; &lt;SPAN&gt;'So as to overwrite.&lt;/SPAN&gt;
				&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;File&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;(&lt;SPAN&gt;excelName&lt;/SPAN&gt;) 
			&lt;SPAN&gt;Catch&lt;/SPAN&gt;
				&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Is it perhaps opened?"&lt;/SPAN&gt;, &lt;SPAN&gt;"Could Not Overwrite Excel File"&lt;/SPAN&gt;)
				&lt;SPAN&gt;'drawDoc.Close(True)&lt;/SPAN&gt;
				&lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
			&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
&lt;SPAN&gt;'		Else&lt;/SPAN&gt;
&lt;SPAN&gt;'			'drawDoc.Close(True)&lt;/SPAN&gt;
&lt;SPAN&gt;'			Exit Sub&lt;/SPAN&gt;
&lt;SPAN&gt;'		End If&lt;/SPAN&gt;
	&lt;SPAN&gt;Else&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

	
	&lt;SPAN&gt;'specify the drawing sheet&lt;/SPAN&gt;
	&lt;SPAN&gt;oSheet&lt;/SPAN&gt; = &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Sheets&lt;/SPAN&gt;(&lt;SPAN&gt;PLtoExport&lt;/SPAN&gt;) &lt;SPAN&gt;' first sheet	&lt;/SPAN&gt;
	 &lt;SPAN&gt;'say there is a Partslist on the sheet.&lt;/SPAN&gt;
	&lt;SPAN&gt;oPartslist&lt;/SPAN&gt; = &lt;SPAN&gt;oSheet&lt;/SPAN&gt;.&lt;SPAN&gt;PartsLists&lt;/SPAN&gt;(1)
     
	&lt;SPAN&gt;'Create a new NameValueMap object.&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;options&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateNameValueMap&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Specify an existing template file.&lt;/SPAN&gt;
	&lt;SPAN&gt;'To use For formatting colors, fonts, etc.&lt;/SPAN&gt;
	&lt;SPAN&gt;options&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"Template"&lt;/SPAN&gt;) = &lt;SPAN&gt;"M:\Autodesk Inventor\Ilogic\BOM Template.xlsx"&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Specify the Columns To export(all columns need to be in the partslist).&lt;/SPAN&gt;
	&lt;SPAN&gt;'options.Value("ExportedColumns") = "QTY;PART NUMBER;DESCRIPTION"&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Specify the start cell.&lt;/SPAN&gt;
	&lt;SPAN&gt;options&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"StartingCell"&lt;/SPAN&gt;) = &lt;SPAN&gt;"A"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;startRow&lt;/SPAN&gt; + 4
	
	&lt;SPAN&gt;'Naming the Tab in Excel	&lt;/SPAN&gt;
	&lt;SPAN&gt;options&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"TableName"&lt;/SPAN&gt;) = &lt;SPAN&gt;"Parts List"&lt;/SPAN&gt; 
		
	&lt;SPAN&gt;'Choose to include the parts list title row.&lt;/SPAN&gt;
	&lt;SPAN&gt;options&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"IncludeTitle"&lt;/SPAN&gt;) = &lt;SPAN&gt;False&lt;/SPAN&gt;		
	
	&lt;SPAN&gt;'Choose to autofit the column width in the xls file&lt;/SPAN&gt;
	&lt;SPAN&gt;options&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"AutoFitColumnWidth"&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt;
    
	&lt;SPAN&gt;'export the Partslist to Excel with options&lt;/SPAN&gt;
	&lt;SPAN&gt;oPartslist&lt;/SPAN&gt;.&lt;SPAN&gt;Export&lt;/SPAN&gt;(&lt;SPAN&gt;excelName&lt;/SPAN&gt;, &lt;SPAN&gt;PartsListFileFormatEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kMicrosoftExcel&lt;/SPAN&gt;, &lt;SPAN&gt;options&lt;/SPAN&gt;)
	&lt;SPAN&gt;'Do you want to close the document afterwards?&lt;/SPAN&gt;
	&lt;SPAN&gt;'oDoc.Close(True)&lt;/SPAN&gt;
	
	&lt;SPAN&gt;GoExcel&lt;/SPAN&gt;.&lt;SPAN&gt;Open&lt;/SPAN&gt;(&lt;SPAN&gt;excelName&lt;/SPAN&gt;, &lt;SPAN&gt;options&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"TableName"&lt;/SPAN&gt;))
	&lt;SPAN&gt;GoExcel&lt;/SPAN&gt;.&lt;SPAN&gt;CellValue&lt;/SPAN&gt;(&lt;SPAN&gt;excelName&lt;/SPAN&gt;, &lt;SPAN&gt;options&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"TableName"&lt;/SPAN&gt;), &lt;SPAN&gt;"A1"&lt;/SPAN&gt;) = &lt;SPAN&gt;"PARTS LIST FOR"&lt;/SPAN&gt;
	&lt;SPAN&gt;GoExcel&lt;/SPAN&gt;.&lt;SPAN&gt;CellValue&lt;/SPAN&gt;(&lt;SPAN&gt;excelName&lt;/SPAN&gt;, &lt;SPAN&gt;options&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"TableName"&lt;/SPAN&gt;), &lt;SPAN&gt;"A2"&lt;/SPAN&gt;) = &lt;SPAN&gt;fileName&lt;/SPAN&gt;	
	&lt;SPAN&gt;GoExcel&lt;/SPAN&gt;.&lt;SPAN&gt;Save&lt;/SPAN&gt;
	&lt;SPAN&gt;GoExcel&lt;/SPAN&gt;.&lt;SPAN&gt;Close&lt;/SPAN&gt;
	
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 May 2023 12:31:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941247#M152204</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2023-05-04T12:31:02Z</dc:date>
    </item>
    <item>
      <title>Re: Export Largest Parts List to Excel</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941752#M152216</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/7488742"&gt;@emanuel.c&lt;/a&gt;.&amp;nbsp; I copied, then simplified and shortened the code a bit, and think I may have fixed some things along the way.&amp;nbsp; Try this version.&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;Sub Main()
	If Not ThisApplication.ActiveDocument.DocumentType = kDrawingDocumentObject Then
		MessageBox.Show("Hey this rule only runs in drawing documents!")
		Exit Sub
	End If
	Dim oDrawDoc As DrawingDocument = ThisApplication.ActiveDocument
	Dim oSheets As Inventor.Sheets = oDrawDoc.Sheets
	Dim oLongestPL As PartsList = Nothing
	Dim iMostRows As Integer = 0
	Dim iSheetNumber As Integer = 0
	For Each oSheet As Inventor.Sheet In oSheets
		Dim oPLs As PartsLists = oSheet.PartsLists
		If oPLs.Count = 0 Then Continue For
		For Each oPL As PartsList In oPLs
			If oPL.PartsListRows.Count &amp;gt; iMostRows Then
				iMostRows = oPL.PartsListRows.Count
				oLongestPL = oPL
				iSheetNumber = CInt(oSheet.Name.Split(":").Last)
			End If
		Next	
	Next
	ExportPartsList(oDrawDoc, oLongestPL)
End Sub

Sub ExportPartsList(oDrawDoc As DrawingDocument, oLongestPL As PartsList)
	oDrawDoc.Activate
	'get the path and name of the drawing file
	Dim fileName As String  = IO.Path.GetFileNameWithoutExtension(oDrawDoc.FullFileName)
	'Logger.Info("FileName: " &amp;amp; fileName)
	Dim fullFileName As String = oDrawDoc.FullFileName
	
	'Dim FilePath As String = Left(FullFileName, InStrRev(FullFileName, "\"))
	Dim filePath As String
	Try
		filePath = IO.Path.GetDirectoryName(oDrawDoc.FullFileName) &amp;amp; "\"
	Catch
		MessageBox.Show("You need to save the file first!", "Error: No Filename")
		Exit Sub
	End Try
	
	Dim excelName As String = filePath &amp;amp; "BOM for - " &amp;amp; fileName &amp;amp; ".xlsx"
	'Logger.Info("ExcelName: " &amp;amp; excelName)
	
	If IO.File.Exists(excelName) Then
		'Ask to overwrite Excel File
'		Dim result As MsgBoxResult = MessageBox.Show("The Excel file already exists: " &amp;amp; _
'									vbCr &amp;amp; vbCr &amp;amp; excelName &amp;amp; vbCr &amp;amp; vbCr &amp;amp; "Do you want to overwrite the file?", "File Exists", _
'									MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
'		If result = MsgBoxResult.Yes Then
			Try 'So as to overwrite.
				IO.File.Delete(excelName) 
			Catch
				MessageBox.Show("Is it perhaps opened?", "Could Not Overwrite Excel File")
				'drawDoc.Close(True)
				Exit Sub
			End Try
'		Else
'			'drawDoc.Close(True)
'			Exit Sub
'		End If
	Else
	End If
     
	'Create a new NameValueMap object.
	Dim options As NameValueMap = ThisApplication.TransientObjects.CreateNameValueMap
	
	'Specify an existing template file.
	'To use For formatting colors, fonts, etc.
	options.Value("Template") = "M:\Autodesk Inventor\Ilogic\BOM Template.xlsx"
	
	'Specify the Columns To export(all columns need to be in the partslist).
	'options.Value("ExportedColumns") = "QTY;PART NUMBER;DESCRIPTION"
	
	'Specify the start cell.
	options.Value("StartingCell") = "A" &amp;amp; startRow + 4
	
	'Naming the Tab in Excel	
	options.Value("TableName") = "Parts List" 
		
	'Choose to include the parts list title row.
	options.Value("IncludeTitle") = False		
	
	'Choose to autofit the column width in the xls file
	options.Value("AutoFitColumnWidth") = True
    
	'export the Partslist to Excel with options
	oLongestPL.Export(excelName, PartsListFileFormatEnum.kMicrosoftExcel, options)
	'Do you want to close the document afterwards?
	'oDoc.Close(True)
	
	GoExcel.Open(excelName, options.Value("TableName"))
	GoExcel.CellValue(excelName, options.Value("TableName"), "A1") = "PARTS LIST FOR"
	GoExcel.CellValue(excelName, options.Value("TableName"), "A2") = fileName	
	GoExcel.Save
	GoExcel.Close
End Sub&lt;/LI-CODE&gt;
&lt;P&gt;If this solved your problem, or answered your question, please click &lt;SPAN&gt;&lt;STRONG&gt; ACCEPT SOLUTION &lt;/STRONG&gt;&lt;/SPAN&gt;.&lt;BR /&gt;Or, if this helped you, please click (LIKE or KUDOS) &lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@7401B55A0A518861312A0F851CD29320/emoticons/1f44d.png" alt=":thumbs_up:" title=":thumbs_up:" /&gt;.&lt;/P&gt;</description>
      <pubDate>Thu, 04 May 2023 15:24:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941752#M152216</guid>
      <dc:creator>WCrihfield</dc:creator>
      <dc:date>2023-05-04T15:24:24Z</dc:date>
    </item>
    <item>
      <title>Re: Export Largest Parts List to Excel</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941802#M152217</link>
      <description>&lt;P&gt;It works perfectly! Thank you for helping out!&lt;/P&gt;</description>
      <pubDate>Thu, 04 May 2023 15:38:01 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941802#M152217</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2023-05-04T15:38:01Z</dc:date>
    </item>
    <item>
      <title>Re: Export Largest Parts List to Excel</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941872#M152218</link>
      <description>&lt;P&gt;I tested it on a few other drawings. Sometimes I have rows hidden in the parts list. They are counted in the "oPL.PartsListRows.Count" but then only the visible rows are exported to Excel. That particular parts list with hidden rows will be used again on the last sheet of the drawing for the total quantity of loose components so it should be exported with all rows (even hidden lines).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there are way to export all the rows from this line of code or perhaps change the "oPL.PartsListRows.Count" to count only the visible lines? Is there a "Visible" I could use in there?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;oLongestPL&lt;/SPAN&gt;.&lt;SPAN&gt;Export&lt;/SPAN&gt;(&lt;SPAN&gt;excelName&lt;/SPAN&gt;, &lt;SPAN&gt;PartsListFileFormatEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kMicrosoftExcel&lt;/SPAN&gt;, &lt;SPAN&gt;options&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 May 2023 15:57:08 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941872#M152218</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2023-05-04T15:57:08Z</dc:date>
    </item>
    <item>
      <title>Re: Export Largest Parts List to Excel</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941910#M152219</link>
      <description>&lt;P&gt;I modified the main Sub with this and it seems to work now, by counting only the Visible rows.&lt;/P&gt;&lt;P&gt;If you have any input, to make it simpler or better please share it. I always appreciate it!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;()
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Not&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt; = &lt;SPAN&gt;kDrawingDocumentObject&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Hey this rule only runs in drawing documents!"&lt;/SPAN&gt;)
		&lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingDocument&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSheets&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Sheets&lt;/SPAN&gt; = &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Sheets&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oLongestPL&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsList&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;iMostRows&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 0
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;iSheetNumber&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 0
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oSheet&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Sheet&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oSheets&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPLs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsLists&lt;/SPAN&gt; = &lt;SPAN&gt;oSheet&lt;/SPAN&gt;.&lt;SPAN&gt;PartsLists&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oPLs&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; = 0 &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;Continue&lt;/SPAN&gt; &lt;SPAN&gt;For&lt;/SPAN&gt;
		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oPL&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsList&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oPLs&lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Long&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oVisibleRows&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 0
			&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oPL&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListRows&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
			
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRow&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsListRow&lt;/SPAN&gt;
				&lt;SPAN&gt;oRow&lt;/SPAN&gt; = &lt;SPAN&gt;oPL&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListRows&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oRow&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
					&lt;SPAN&gt;oVisibleRows&lt;/SPAN&gt; = &lt;SPAN&gt;oVisibleRows&lt;/SPAN&gt; + 1
				&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			&lt;SPAN&gt;Next&lt;/SPAN&gt;
			
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oVisibleRows&lt;/SPAN&gt; &amp;gt; &lt;SPAN&gt;iMostRows&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
				&lt;SPAN&gt;iMostRows&lt;/SPAN&gt; = &lt;SPAN&gt;oPL&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListRows&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
				&lt;SPAN&gt;oLongestPL&lt;/SPAN&gt; = &lt;SPAN&gt;oPL&lt;/SPAN&gt;
				&lt;SPAN&gt;iSheetNumber&lt;/SPAN&gt; = &lt;SPAN&gt;CInt&lt;/SPAN&gt;(&lt;SPAN&gt;oSheet&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;Split&lt;/SPAN&gt;(&lt;SPAN&gt;":"&lt;/SPAN&gt;).&lt;SPAN&gt;Last&lt;/SPAN&gt;)
			&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
		&lt;SPAN&gt;Next&lt;/SPAN&gt;	
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;ExportPartsList&lt;/SPAN&gt;(&lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt;, &lt;SPAN&gt;oLongestPL&lt;/SPAN&gt;)
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 May 2023 16:11:26 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941910#M152219</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2023-05-04T16:11:26Z</dc:date>
    </item>
    <item>
      <title>Re: Export Largest Parts List to Excel</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941959#M152220</link>
      <description>&lt;P&gt;I would think that this part of the code:&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;If oVisibleRows &amp;gt; iMostRows Then
	iMostRows = oPL.PartsListRows.Count
	oLongestPL = oPL
	iSheetNumber = CInt(oSheet.Name.Split(":").Last)
End If&lt;/LI-CODE&gt;
&lt;P&gt;...might need to be changed so it is not using oPL.PartsListRows.Count, and using oVisibleRows in its place, but I may b wrong in the intent there.&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;If oVisibleRows &amp;gt; iMostRows Then
	iMostRows = oVisibleRows 
	oLongestPL = oPL
	iSheetNumber = CInt(oSheet.Name.Split(":").Last)
End If&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 04 May 2023 16:20:11 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11941959#M152220</guid>
      <dc:creator>WCrihfield</dc:creator>
      <dc:date>2023-05-04T16:20:11Z</dc:date>
    </item>
    <item>
      <title>Re: Export Largest Parts List to Excel</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11942092#M152222</link>
      <description>&lt;P&gt;Hmm, I don't know why but both lines seem to give the same result...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;iMostRows = oPL.PartsListRows.Count&lt;/P&gt;&lt;P&gt;iMostRows = oVisibleRows&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 May 2023 17:01:15 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/export-largest-parts-list-to-excel/m-p/11942092#M152222</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2023-05-04T17:01:15Z</dc:date>
    </item>
  </channel>
</rss>

