2015-01-13 6 views
0

Для автоматической отправки писем из excel я использую приведенный ниже сценарий. Используя этот скрипт, иногда третий столбец заканчивается полностью справа, за пределами почтового окна получателя (пока я автоопределяю ячейки, прежде чем использовать rangetoHTML). Кажется, что ширина второго столбца установлена ​​намного шире или что третий столбец установлен более широким и выравнивается вправо.Настройка ширины столбца в диапазоне до HTML для внешнего вида

Странно, что это происходит только иногда, и я не могу выяснить, что вызывает проблему. регулировка высоты строки легко выполняется, но не ширина столбца.

Кто-нибудь знает, как сохранить константу форматирования widht в rangetoHTML? Кто-нибудь может мне помочь?

Function RangetoHTML(rng As Range) 

Dim fso As Object 
Dim ts As Object 
Dim TempFile As String 
Dim TempWB As Workbook 
Dim R As Long 

TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 

'Copy the range and create a new workbook to past the data in 
rng.Copy 
Set TempWB = Workbooks.Add(1) 
With TempWB.Sheets(1) 
    .Cells(1).PasteSpecial Paste:=8 
    .Cells(1).PasteSpecial xlPasteValues, , False, False 
    .Cells(1).PasteSpecial xlPasteFormats, , False, False 
    Application.CutCopyMode = False 
    On Error Resume Next 
    .DrawingObjects.Visible = True 
    .DrawingObjects.Delete 
    On Error GoTo 0 
End With 
'Publish the sheet to a html file 
With TempWB.PublishObjects.Add(_ 
    SourceType:=xlSourceRange, _ 
    Filename:=TempFile, _ 
    Sheet:=TempWB.Sheets(1).Name, _ 
    Source:=TempWB.Sheets(1).UsedRange.Address, _ 
    HtmlType:=xlHtmlStatic) 
    .Publish (True) 
End With 

'Read all data from the htm file into RangetoHTML 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2) 
RangetoHTML = ts.readall 
ts.Close 
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _ 
         "align=left x:publishsource=") 

'Close TempWB 
TempWB.Close savechanges:=False 

'Delete the htm file we used in this function 
Kill TempFile 

Set ts = Nothing 
Set fso = Nothing 
Set TempWB = Nothing 

End Function 

ответ

0

Попробуйте

With TempWB.Sheets(1) 
    .Cells(1).PasteSpecial Paste:=8 
    .Cells(1).PasteSpecial xlPasteValues, , False, False 
    .Cells(1).PasteSpecial xlPasteFormats, , False, False 
    Cells(1).Select 
    Cells(1).EntireRow.AutoFit 
    Cells(1).EntireColumn.AutoFit 
0

Попробуйте

On Error GoTo 0 
End With 
TempWB.Sheets(1).UsedRange.Columns.AutoFit 
+1

Куда идет этот код? Покажите весь код при редактировании. – darrylyeo

+1

Обычно добавление немного объяснений к вашим ответам вместо того, чтобы просто «попробовать это», имеет большое значение. Объясните * почему * пользователь должен «попробовать это». Почему это лучше, чем в настоящее время? Как это решить проблему. – Mike

Смежные вопросы