2016-09-28 4 views
0

Я обращаюсь к каждому после поиска многого для решения. У меня есть код, который отлично работает в Excel 2013, но когда я пытаюсь запустить тот же код в excel 2016, он дает мне ошибку компиляции.Код VBA отлично работает в Excel 2013, но дает ошибку в excel 2016 - Ошибка компиляции

Этот код был разработан кем-то еще, и я просто выполнял незначительные изменения. Ниже приведен код. Ошибка происходит из-за переменной Environ $. Потому что это то, что выделено, когда я нажимаю кнопку ok на данном снимке экрана.

Function RangetoHTML(rng As Range) 
Dim fso As Object 
Dim ts As Object 
Dim TempFile As String 
Dim TempWB As Workbook 

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 
    .Cells(1).Select 
    Application.CutCopyMode = False 
    On Error Resume Next 
    .DrawingObjects.Visible = True 
    .DrawingObjects.Delete 
    On Error GoTo 0 
End With 

'Publish the sheet to a htm 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

Я также прилагаю экран ошибка выстрел.

Environ$ variable compile error

Любая быстрая помощь будет гораздо appriciated.

+4

Нажмите «Инструменты-ссылки» в редакторе VB и посмотрите, какой из отмеченных элементов имеет префикс «MISSING:» – Rory

+0

Знают, что если «xlCellTypeVisible» представляет собой набор несмежных диапазонов, вам необходимо работать с [ Свойство Range.Areas] (https://msdn.microsoft.com/en-us/library/office/ff196243.aspx)? – Jeeped

+0

Хотя вы можете размещать несколько версий Excel на одной машине, вы можете иметь только одну версию Outlook. Если вы обновили Outlook до 2016 года, ссылки на Outlook 2013 больше недействительны. – Jeeped

ответ

0

Произошла такая же ошибка у Рона де Бруина rangetohtml(rng as range).

Я решил.

Если вы вернетесь к коду до Об ошибке Продолжайте читать и прокомментируйте.

бежать, и вы увидите, что он не может найти drawingobjects.visible.

для исправления.

пойти file/options/formulas/

убедитесь, что он не R1C1 - снимите этот флажок.

Шахта работала нормально после этого.

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