Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как правильно вставлять рисунок в эксель
 
Я давно заметил в excel одну вещь, если вставляешь изображение через CTRL-V скопированное из другого редактора, то оно вставляется как несжатое (а-ля *.bmp). Если же это делать через Специальную вставку -> рисунок, то изображение вставляется в сжатом формате (без потерь), объем файла при этом уменьшается значительно.
Раньше для борьбы с подобными проявлениями, если специальная вставка не срабатывала (особенно в ворде), я использовал редактор Microsoft Photo Editor (https://ru.wikipedia.org/wiki/Microsoft_Photo_Editor), просто вставляя и затем копируя из него изображение в буфер для последующей вставки в excel/word. Сейчас он имеет другое имя и я не знаю как он работает.

Если объект для вставки копируется из векторного редактора (например adobe Illustrator), то вставку лучше делать как Метафайл Windows, так изображение займет еще меньший размер, потому что объект будет импортирован как векторный, по крайней мере в word так было. Правда при большом увеличении видно небольшие отклонения в векторных кривых, возможно это связано как-то с разрешением редактируемого иллюстратором pdf документа (максимум 2400 dpi), я так и не смог побороть этот момент.
Изменено: xseed - 11 Ноя 2018 12:36:21
Отслеживание перерасчета в ячейке формулой
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rDependents As Range

    On Error Resume Next
    Set rDependents = Target.Dependents
    If Err.Number > 0 Then
        Exit Sub
    End If
    If Not Application.Intersect(rDependents, Range("C1:C10")) Is Nothing Then
        Call abc
    End If
End Sub

Private Sub abc()
    MsgBox """abc()"" is running now"
End Sub
Нашел готовое решение
Изменено: xseed - 11 Ноя 2018 08:17:43
Отслеживание перерасчета в ячейке формулой
 
Добрый вечер. Есть рабочий макрос
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("MI2:MI20"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

выводящий текущую дату в соседний столбец при изменении значения ячейки пользователем.

Проблема в том, что он не работает, если значение в ячейке изменяется формулой, а не вводится вручную.
Например если в MI2 указать =MH2, то при изменении значения в MH2 дата в MJ2 не напечатается.


Что нужно поправить в макросе, чтобы он работал с отображаемым результатом, а не с вводимым значением?
Как найти Минимальное ненулевое значение
 
=MIN(SMALL(CU2:CU71,COUNTIF(CU2:CU71,"<0"))*-1,LARGE(CU2:CU71,COUNTIF(CU2:CU71,">0")))
(абсолютное)
Изменено: xseed - 8 Ноя 2018 20:18:49
Изменить URL в запросе автоматически
 
Уже смотрю, спасибо
==
Upd: Помогло создание таблицы params в текущем worksheet, с указанием параметров в запросе в ввиде переменных "&Excel.CurrentWorkbook(){[Name="params"]}[Content]{0}[Код валюты]&"
Изменено: xseed - 8 Ноя 2018 12:15:12
Изменить URL в запросе автоматически
 
День добрый. Есть запрос вида

Код
let
    Source = Json.Document(Web.Contents("https://api.binance.com/api/v1/klines?symbol=BTCUSDT&interval=1w&limit=50")),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), "#(tab)"), type text}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter("#(tab)", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7", "Column1.8", "Column1.9", "Column1.10", "Column1.11", "Column1.12"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type number}, {"Column1.2", type text}, {"Column1.3", type text}, {"Column1.4", type text}, {"Column1.5", type text}, {"Column1.6", type text}, {"Column1.7", type number}, {"Column1.8", type text}, {"Column1.9", Int64.Type}, {"Column1.10", type text}, {"Column1.11", type text}, {"Column1.12", Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column1.1", "Open time"}, {"Column1.2", "Open"}, {"Column1.3", "High"}, {"Column1.4", "Low"}, {"Column1.5", "Close"}, {"Column1.6", "Volume"}, {"Column1.7", "Close time"}, {"Column1.8", "Quote asset volume"}, {"Column1.9", "Number of trades"}, {"Column1.10", "Taker buy base asset volume"}, {"Column1.11", "Taker buy quote asset volume"}, {"Column1.12", "Ignore"}})
in
    #"Renamed Columns"

загружающий данные из веб-источника.

Возникла потребность оперативного изменения URL в запросе. Хотелось бы это сделать, чтобы URL вводился в ячейку на листе (например, A1), а запрос считывал бы данные из этой ячейки и использовал в качестве источника.

Возможно ли подобное? Пробовал записать макрос, но он не пишет действия из Power Query. Может быть это можно сделать в самом коде запроса или как-то по-другому?
Изменено: xseed - 8 Ноя 2018 11:06:23
Как сделать отправку в Telegram из макроса VBA Excel, Telegram из макроса VBA Excel
 
MyString = "text+1%0D%0Atext+2%0D%0A"
           Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
           Url = "https://api.telegram.org/bot_name:key/sendmessage?chat_id=38548645468&text="; & MyString

получилось
воспользовался url-encode-decode()com, видимо что-то не так закодировал
Изменено: xseed - 5 Ноя 2018 12:44:54
Как сделать отправку в Telegram из макроса VBA Excel, Telegram из макроса VBA Excel
 
Отправить символ перевода строки не получилось, я пробовал передавать CRLF в URL-Encoded запросе в виде %0D%0A, но символ не передается в сообщении.

Кстати, интересует обратная возможность импорта telegram сообщения бота в ячейку используя vba и telegram api
Нашел этот метод, но пока не вкурил как им пользоваться в vba:

Нашел следующий метод

https://api.telegram.org/bot{Токен}/getUpdates?offset={порядковый ID сообщения}&timeout={время ожидания перед возвратом в секундах}

https://api.telegram.org/bot"bot_key"/getUpdates?chat_id=@"channel_name"

Я так понимаю эти линки возвращают json файл, попробую импортировать его в Excel через  Power Query.  
Изменено: xseed - 22 Окт 2018 00:27:46
Как сделать отправку в Telegram из макроса VBA Excel, Telegram из макроса VBA Excel
 
Извините, что вновь подымаю тему, а запрос через "прокси" (IP, порт) никто не знает как прописать в макросе? А то напрямую отправить не получается...
==
PS: Вот, нашел вроде, правда работает только с https proxy, SOCKS (1080 которые) выдает ошибку. Cервер нужен надежный (с высоким uptime) и ненашинский

Код
 Sub sender()

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL="...api.telegram.org..."
objHTTP.Open "POST", Url, False
objHTTP.setProxy 2, "197.159.198.190:50592"
objHTTP.setProxyCredentials "anonymous", "anonymous"
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")

End Sub
Изменено: xseed - 20 Окт 2018 14:16:20
Method 'Saveas' of object '_workbook' failed
 
Цитата
The_Prist написал:
ActiveWorkbook.Sheets(1).Copy
Спасибо!
А как работает эта команда? Просто копирует лист или же копирует книгу? Тогда в чем причина проблемы?
Изменено: xseed - 5 Авг 2016 18:40:53
Method 'Saveas' of object '_workbook' failed
 
А можно тогда, если уж макрос не получается выполнить на запаролленом файле, не выполнять его вообще? То есть, можно ли предварительно перед выполнением макроса проверить файл на защиту и если она установлена - не выполнять макрос? Как это сделать?
Изменено: xseed - 5 Авг 2016 18:33:47
Method 'Saveas' of object '_workbook' failed
 
Это не мой файл, пароля не знаю.
Может быть, потому, что в 1.xls установлен VBAProject Password, макрос в файле xls2txt не отрабатывает?
Тогда экспорт вручную в txt на этом файле 1.xls почему тогда работает?
Изменено: xseed - 5 Авг 2016 18:29:52
Method 'Saveas' of object '_workbook' failed
 
The_Prist, нет, файл 1.txt тут ни причем. Если вы выполните мой макрос с обычным xls файлом, никаких ошибок не возникнет, файл сохранится как txt, даже если он существует. Проблема возникнет, только если выполнить макрос с прикрепленным файлом 1.xls (причем его надо поместить в каталог C:\nnCron\thebat!)

PS: прикрепил файл с макросом xls2txt.xls
Изменено: xseed - 5 Авг 2016 18:12:04
Method 'Saveas' of object '_workbook' failed
 
Цитата
The_Prist написал:
Вы пытаетесь сохранить файл, который уже открыт под тем же именем
Я открываю файл xls2txt.xls. Выполняю в нем макрос1. Открывается файл 1.xls, сохраняется как 1.txt. Где тут сохранение под тем же именем? Имя то же. но расширение txt. причем, когда я делал запись макроса, excel спрашивал меня. что файл 1.txt уже существует. заменить? Я согласился, нажав Да.
Изменено: xseed - 5 Авг 2016 17:59:30 (ошибка)
Method 'Saveas' of object '_workbook' failed
 
Добрый день! Есть файл xls2txt с макросом, экспортирующий другой файл xls в текст:

Код
Sub Макрос1()
'
' Макрос1 Макрос
    Workbooks.Open Filename:="C:\nnCron\thebat!\1.xls"
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:="C:\nncron\thebat!\1.txt", FileFormat:= _
        xlUnicodeText, CreateBackup:=False
    ActiveWorkbook.Save
    Application.DisplayAlerts = True
    ActiveWindow.Close False
    Windows("xls2txt.xls").Activate
    Application.Quit
End Sub


при попытке выполнить который выдается это сообщение: Run-time error '1004': Method 'Saveas' of object '_workbook' failed

Debug переходит на строку
Код
     ActiveWorkbook.SaveAs Filename:="C:\nncron\thebat!\1.txt", FileFormat:= _
        xlUnicodeText, CreateBackup:=False
Суть проблемы в том, если файл 1.xls не запаролен, он отрабатывает успешно, без ошибок. Но когда я пытаюсь запустить файл, имеющий запароленный макрос, вываливается эта ошибка. При этом, если сохранять вручную, никаких проблем не возникает. Проблемный файл 1.xls прилагаю.
Изменено: xseed - 5 Авг 2016 18:07:23
Страницы: 1
Наверх