Instead of using the column letter you need to use the column index. The first column is 0, so B will be 1. It should look like
row(1).ToString.Trim="" as your condition
The reason I am using row is because that is what your For each is referencing to represent each row in the table that you are looping through. Then, you need to place the column index or the column name (if you use AddHeaders in your Read Range) to reference the item in the row. Finally, include .ToString.Trim to remove all end spaces and the row item will be an object so you need .ToString to look at it as a string.
That should be a good start if you implement those changes.
The other thing I will mention is once you have a new set of data and you use “Write Range” to ouput your new table, all the formatting is maintained in the Excel file to which you are outputting the table to. This will bring some issues, because it does not remove all the existing data in the Excel file, so you would need to either clear the file with “Clear All” or output the table to an empty file.
If you can code all the formatting so the process can work on its own and not need to rely on other sources to be correct, that would be ideal, however complicated. The more simpler solution would be to provide a template with all the formatting set in Conditional Formatting, therefore when you Write Range your table in, the formatting changes based on the data that is in the spreadsheet… either that or just have it pre-formatted but only if the formatting is static, like only specific columns are always bold or colored.
I hope this helps.