Страницы: 1
RSS
Ошибка при работе с буфером обмена " objClpb As New DataObject " из книги макросов работает, а из локального файла нет
 
Добрый день, уважаемые форумчане.
Есть следующий код:
Код
Function PrevMonthName$()
  PrevMonthName = Split("декабрь январь февраль март апрель май июнь июль август сентябрь октябрь ноябрь декабрь")(Month(Now) - 1)
End Function

Sub ген()

Dim mes As String, objClpb As New DataObject  

otv2 = InputBox("ввести месяц в формате 1, 2 и т.д. (13-по умолчанию прошлый) иначе вводить номер требуемого месяца", "ввод месяца", "13")
                Select Case otv2
    Case "01"
mes = "январь"
    Case "2"
mes = "февраль"
    Case "3"
mes = "март"
    Case "4"
mes = "апрель"
    Case "5"
mes = "май"
    Case "6"
mes = "июнь"
    Case "7"
mes = "июль"
    Case "8"
mes = "август"
    Case "9"
mes = "сентябрь"
    Case "10"
mes = "октябрь"
    Case "11"
mes = "ноябрь"
    Case "12"
mes = "декабрь"
    Case "13"
mes = PrevMonthName

 End Select
  
   Range("A1:A14").Select
   Selection.ClearContents

    Cells(1, 1) = "отопление_" & mes

    sStr = Cells(1, 1)
    objClpb.SetText sStr
    objClpb.PutInClipboard
End Sub
Он работает без ошибок, если его сохранять в глобальной книге макросов (PERSONAL.XLSB), а если я его сохраняю в файле ( исходный текст), то этот код при запуске генерирует следующую ошибку:
user-defined type not defined
и в компиляторе подсвечивает  следующий кусок кода:
Код
, objClpb As New DataObject
Прошу подсказки уважаемых форумчан, как пофиксить проблему? Ну чтобы код работал из файла при переносе между машинами, и не был привязан к PERSONAL.XLSB.

Спасибо.
 
Добрый день.
Применяйте так:
Код
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText sStr : .PutInClipboard
End With

А objClpb As New DataObject вообще выкиньте.
Изменено: Hugo - 08.09.2020 12:03:57
 
Цитата
Hugo написал:
Применяйте так:
Благодарю Вас!
Все четко работает.
 
john22255, получается, в вашей книге макросов нужная библиотека подключена (раннее связывание), а в файле нет — а вы обращаетесь к ней. Метод отHugo называется позднее связывание и не зависит от того, подключена библа или нет (создаёт на лету)
У обоих методов есть плюсы и минусы — имейте это ввиду
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
получается, в вашей книге макросов нужная библиотека подключена
ага. я уже погуглил про страшный ключ {1C3B4210-F441-11CE-B9EA-00AA006B1A69} и вспомнил, что какие то галочки расставлял в References.
Страницы: 1
Наверх