• Guest, before posting your code please take these rules into consideration:
    • It is required to use our BBCode feature to display your code. While within the editor click < / > or >_ and place your code within the BB Code prompt. This helps others with finding a solution by making it easier to read and easier to copy.
    • Don't share a wall of code. All we want is the problem area, the code related to your issue.


    To learn more about how to use our BBCode feature, please click here.

    Thank you, Code Forum.

JavaScript I want to fix this code, but need some help

thrawn5499

New Coder
Ok I have some code I have been using but depending on what I am working on I have to modify it. I am sure it would be easy for someone who knows javascript to do this. I do not use javascript. here is the code with my comments added when I was modifying it.

javascript code:
function AutomateExcel3()
{
    //Have the user pick a table to update
    var SelOptions = pfcCreate("pfcSelectionOptions").Create  ("dwg_table");
    SelOptions.MaxNumSels = 1;
    var Selections = oSession.Select(SelOptions, null);
    
    var Table = Selections.Item(0).SelItem;
        
    //Start Excel
    var oXL = new ActiveXObject("Excel.Application");
    try
    {
        var oWB = oXL.Workbooks.Open(FileName.value);
        var oSheet = oWB.ActiveSheet;
        Base = FileName.value;
    }
    catch(er)
    {
        bottom.innerHTML = "<H2>Error:</H2>Could Not Open Specified File, \""+FileName.value+"\" for Update, please edit path and try again.";
        return;
    }
    //Look for headers in top row and check them against the already existing headers
    var nProCols = Table.GetColumnCount     ();

    var nCols=0;
    var Val = oSheet.Cells(1,nCols+1).Value;
    while (Val!=null)
    {
        nCols=nCols+15;  // default was 1 changed to 2 now it doesn't delete the column if nothing in the first row. 9 FOR V22 OR F-18 SUPER HORNET. 15 FOR SOAR
        
        //Check to see if we need to add another column
        if (nCols>nProCols)
        {
            Table.InsertColumn     (Math.round(oSheet.Cells(1,nCols).ColumnWidth+1), nCols-1, false);
            nProCols=nProCols+1;
        }
        
        //Get current XL value
        var ValXL = oSheet.Cells(1,nCols).Value;
        
        //Get current ProE value
        var cell = pfcCreate ("pfcTableCell").Create (1, nCols);
        var mode = pfcCreate("pfcParamMode").DWGTABLE_NORMAL;
        try
        {
            var ValProE = Table.GetText     (cell, mode).Item(0);
            
        }
        catch(er)
        {
            var ValProE = "";
        }
        //Overwrite ProE value with XL value if they are not equal
        if (ValProE!=ValXL)
        {
            ModifyCellText(Table, cell, ValXL);
        }
        
        Val = oSheet.Cells(1,nCols+1).Value;
    }
    
//Check to see if any columns are left that need deleting off
    //removed code and it appears to work without setting column to 15 above
      while (nCols<nProCols)
    {
        Table.DeleteColumn     (nProCols, false);
        nProCols=nProCols-1; //default was -1  (changed to -0 and crashed creo)
    }
    
    //Populate the rest of the table
    var nProRows = Table.GetRowCount();
    
    var nRows = 0;
    var Val = oSheet.Cells(nRows+1,1).Value;
    while (Val!=null)
    {
        nRows = nRows + 1;
        
        //Check to see if we need to add another row
        if (nRows>nProRows)
        {
            Table.InsertRow     (1, nRows-1, false);
            nProRows=nProRows+1;
        }
        
        //Loop around all columns for each row
        for (i=1;i<=nCols;i++)
        {
            //Get current XL value
            var ValXL = oSheet.Cells(nRows,i).Value;
        
            //Get current ProE value
            var cell = pfcCreate ("pfcTableCell").Create (nRows, i);
            var mode = pfcCreate("pfcParamMode").DWGTABLE_NORMAL;
            
            try
            {
                var ValProE = Table.GetText     (cell, mode).Item(0);
            }
            catch(er)
            {
                var ValProE = "";
            }
            
            //Overwrite ProE value with XL value if they are not equal
            if (ValProE!=ValXL)
            {
                ModifyCellText(Table, cell, ValXL);
            }
        }
        Val = oSheet.Cells(nRows+1,1).Value;
    }
    
    //Check to see if any rows are left that need deleting off
    while (nRows<nProRows)
    {
        Table.DeleteRow     (nProRows, false);
        nProRows=nProRows-1;
    }
    
    CurDwg.Regenerate     ();


the part I have to change every time is nCols=nCols+15; // default was 1 changed to 2 now it doesn't delete the column if nothing in the first row. 9 FOR V22 OR F-18 SUPER HORNET. 15 FOR SOAR. It does what I need if I change the number as shown in the comments. It is a pain to change back and forth though. any ideas what I need to do to actually make it work? thanks
 

thrawn5499

New Coder
I forgot to mention the reason that works for me is V22 and F-18 have a table with 9 columns wide, SOAR has one that is 15 columns wide. basically I want it to work no matter what the number of columns, but stop when the column is empty. if that makes since
 

Top