вторник, 21 июля 2020 г.

[VBA][LibreOffice] Макрос вывода списка файлов определенной папки по маске

Напишем пример VBA программы в LibreOffice 6.4.4.2. Я уже писал о том, как написать простой макрос в этой статье. Перейдите по этой ссылке и посмотрите с чего начать. Наш макрос будет читать имена файлов в выбранной директории и выводить их в ячейки таблицы по определенной маске. Маска будет задаваться в коде макроса. Директория будет выбираться при помощи стандартного диалога Windows. Код сопровождается необходимыми комментариями, что бы понять работу макроса.

Рисунок 1. Результат работы макроса

Код макроса:
Sub Main
 Dim oFP As Object
 Dim DirName As String
 'Вызываем диалог выбора директории и сохраним путь папки в переменной DirName
 DirName = ""
 oFP = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
 oFP.DisplayDirectory = ConvertToURL("C:\")
 oFP.Description = "Select a directory"
 oFP.Title = "Select the backup directory"
 
 If oFP.execute = _
  com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
  DirName = oFP.Directory
 End If
 
    Dim TableHeaderRangeData(0, 2)
    Dim TableHeaderRangeObject as Object
    Dim MainDocument as Object 
    MainDocument = ThisComponent
    'Очистим весь контент
    MainDocument.CurrentSelection.ClearContents(1 OR 2 OR 4 OR 8 OR 16 OR 32 OR 64 OR 128 OR 256 OR 512)
    'Сформируем заголовки таблицы (Сканируемая папка, Фильтр, Список файлов)
    TableHeaderRangeData(0, 0) = "Scan Folder"
    TableHeaderRangeData(0, 1) = "Filter"
    TableHeaderRangeData(0, 2) = "List Files"
 
    TableHeaderRangeObject = MainDocument.Sheets(0).getCellRangebyName("A1:C1")
    TableHeaderRangeObject.charWeight = com.sun.star.awt.FontWeight.BOLD
    TableHeaderRangeObject.setDataArray(TableHeaderRangeData)
 'Сформируем маску
 ReDim TableHeaderRangeData(0, 1)
 Dim strMaskSearch as String
 strMaskSearch = "*.pdf*"
 'Выведем путь папки и фильтр в ячейки таблицы
 TableHeaderRangeData(0, 0) = DirName
    TableHeaderRangeData(0, 1) = strMaskSearch 
 TableHeaderRangeObject = MainDocument.Sheets(0).getCellRangebyName("A2:B2") 
 TableHeaderRangeObject.charWeight = com.sun.star.awt.FontWeight.NORMAL
 TableHeaderRangeObject.setDataArray(TableHeaderRangeData)
 'Выведем список файлов в ячейки таблицы
 Dim FileName As String
 Dim iCounter As Integer
 FileName = Dir(DirName & "/" & strMaskSearch, 0)
 iCounter = 0
 Do While (FileName <> "")
     iCounter = iCounter + 1
 
  MainDocument.Sheets(0).getCellByPosition(2,iCounter).String = ""
     MainDocument.Sheets(0).getCellByPosition(2,iCounter).String = FileName
     FileName = Dir()
 Loop
End Sub

вторник, 23 июня 2020 г.

Windows и Profilelist

На случай если профиль пользователя по какой-то причине повредился (не нажимается кнопка «Пуск» или еще какие-то проблемы), то можно попробовать пересоздать профиль пользователя. Посмотреть список SID профилей можно в реестре Windows по пути

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

В ветке Profilelist ищем SID профиля, который мы хотим пересоздать. SID текущего пользователя можно узнать командной:

Whoiam /user

Переименовываем необходимый SID профиля. Далее остается зайти под профилем, который мы пересоздаем и скопировать данные из старого профиля, в новый, только что созданный.


понедельник, 15 июня 2020 г.

Задействуем локальный архив в Outlook 2016 Pro Plus для архивации устаревших сообщений

Статья является руководством задействования локального архива в Outlook 2016 Pro Plus. Опубликована как "напоминалка" для автора.
Скажем нам необходимо за архивировать сообщения во всех папках месячной давности и старше. Перейдем к настройке. На ленте выбираем меню «Папка» в разделе «Свойства» нажимаем кнопку «Настройка автоархивации» (Смотрите рисунок 1).

Рисунок 1. Запуск окна настройки архивации

В свойствах папки «Входящие» на вкладке «Автоархивация» необходимо выбрать пункт «Архивировать элементы папки с настройками по умолчанию» и нажать кнопку «Настроить архив по умолчанию...»(Смотрите рисунок 2).

Рисунок 2. Архивация с настройками по умолчанию

В открывшемся окне «Архивация» необходимо установить галку «Автоархивацию каждые 1 день» (Смотрите рисунок 3 пункт 1), установить галку «Удалять элементы старше 1 месяца» (Смотрите рисунок 3 пункт 2), снять галку «Запрос перед автоархивацией» (Смотрите рисунок 3 пункт 4), нажать кнопку «Применить настройки ко всем папкам» (Смотрите рисунок 3 пункт 3).

Рисунок 3. Настройки автоархивации

Последнее что необходимо сделать это на ленте выбрать меню «Файл», потом на ленте выбрать меню «Сведения», кнопка «Инструменты» и выбрать пункт меню «Удалять старые элементы» (Смотрите рисунок 4).

Рисунок 4. Задействование параметров почтового ящика

В открывшемся окне «Архивация» необходимо выбрать пункт «Архивировать все папки согласно настройкам автоархивации» и нажать кнопку «Ok» (Смотрите рисунок 5). 

Рисунок 5. Архивация почты


Попытка установки .NET Framework 3.5 на Windows 10 64 bit выдает ошибку 0x800F0950

Столкнулся с такой проблемой, что программа AutoCad 2011 для своей установки требовала установку .NET Framework 3.5. При попытке установить .NET Framework 3.5 выдается ошибка 0x800F0950 и установка не происходит. Проблему не решила и попытка скачивания и установки .NET Framework 3.5 с сайта Microsoft. Так же не удалось установить .NET Framework 3.5 через включение и отключение компонентов Windows 10 (Смотрите рисунок 1).

Рисунок 1. Попытка установки .NET Framework 3.5 через "Включение и отключение компонентов Windows"

Проблему получилось решить воспользовавшись командным инструментом под названием Deployment Image Servicing and Management (DISM). Идея взята с сайта Microsoft. Скачайте образ полной версии Windows 10. Из это образа мы будем устанавливать .NET Framework 3.5.
Установите программу Daemon Tools Lite или Virtual CloneDrive и смонтируйте образ Windows 10. Убедитесь, что в смонтированном образе есть каталог sources\sxs. В каталоге должны находится пакеты .NET Framework 3.5 (Смотрите рисунок 2)

Рисунок 2. Обзор смонтированного образа Windows 10


Далее необходимо запустить командную строку и выполнить команду на установку (Смотрите рисунок 3).

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:d:\sources\sxs


Рисунок 3. Выполнение команды на установку .NET Framework 3.5

воскресенье, 14 июня 2020 г.

Установка родной программы сканирования для HP LaserJet M1536dnf

Часто сталкивался с такой проблемой, что при установки полнофункционального программного обеспечения и драйверов для HP LaserJet M1536, программа сканирования не устанавливалась. В таком случае программу для сканирования можно установить из командной строки. Скачайте полнофункциональное ПО и распакуйте скаченный файл с помощью архиватора 7zip. 
Используя командную строку перейдите в папку Setup\Product\Scan_App\, где лежит файл HPScanLJM1530.msi. Выполните следующую команду на установку программы для сканирования:

msiexec.exe /i HPScanLJM1530.msi /qb TRANSFORMS=HPScanLJM1530_1049.mst

Далее следуйте подсказкам мастера установки программы для сканирования. Драйвера для HP LJ M1536 на сканирование и печать должны быть уже установлены заранее.

Важно! Если при выполнение команды уставки программы сканирования вы получаете сообщение контроля учетных записей "Это приложение заблокировано в целях защиты. Администратор заблокировал выполнение этого приложения. За дополнительными сведениями обратитесь к администратору.", то вам необходимо запустить командную строку от имени администратора, т.е. в заголовке окна командной строки должно быть написано слово Администратор. Далее выполняете действия, которые описаны выше по тексту. 
Так же вы можете воспользоваться советом анонимного комментатора к этой статье, который предложил изменить текущий год в системе Windows 10 на год 2011 и потом выполнить команду установки программы сканирования. Я проверил данный способ, он рабочий.  
Так же вы можете воспользоваться информацией с сайта remontka.pro, на нем рассматриваются другие способы решения проблемы блокировки приложения.

Удалить установленную программу сканирования можно так же из командной строки. Для этого необходимо выполнить следующую команду:

msiexec.exe /x HPScanLJM1530.msi /qb

пятница, 12 июня 2020 г.

[Turbo Pascal][Dos Box] Пример кода по работе с текстовым файлом

Пример кода по записи строки в текстовый файл. Получения кода ошибки, если такая возникнет в результате работы с файлом. Создание одно секундной задержки при каждом тике таймера прерываний.

{$M $1000,0,0}
program test2;
uses crt, dos;
var	
	OldText: Procedure;
	filetext: text;
	fname: string;
	str: string;
	t: word;
 
function GetIOErrorCode:integer;
begin
	GetIOErrorCode := IOResult;
end;
 
function ConvIOErrorCodeToStrMsg(ioerrorcode:integer):string;
begin
	case ioerrorcode of 
		0: ConvIOErrorCodeToStrMsg := 'Error not found';
		3: ConvIOErrorCodeToStrMsg := 'Path not found';
		4: ConvIOErrorCodeToStrMsg := 'Too many open files';
		5: ConvIOErrorCodeToStrMsg := 'File access denied';
		12: ConvIOErrorCodeToStrMsg := 'Invalid file access code';
		16: ConvIOErrorCodeToStrMsg := 'Cannot remove current directory';
		100: ConvIOErrorCodeToStrMsg := 'Disk read error';
		101: ConvIOErrorCodeToStrMsg := 'Disk write error';
		102: ConvIOErrorCodeToStrMsg := 'File not assigned';
		103: ConvIOErrorCodeToStrMsg := 'File not open';
		104: ConvIOErrorCodeToStrMsg := 'File not open for input';
		105: ConvIOErrorCodeToStrMsg := 'File not open for output';
		106: ConvIOErrorCodeToStrMsg := 'Invalid numeric format';
		152: ConvIOErrorCodeToStrMsg := 'Drive not ready';
	end;
end;	
 
procedure savestringtofile(var f:text; var name, s:string);
begin
	writeln;
	{$I-}
	assign(f, name);
	append(f);
	writeln(f, s);
	close(f);
	write('Message savestringtofile procedure: ' + ConvIOErrorCodeToStrMsg(GetIOErrorCode));
	{$I+}
end;
 
procedure createfile(var f:text; var name:string);
begin
	writeln;
	{$I-}
	assign(f, name);
	rewrite(f);	
	close(f);
	write('Message createfile procedure: ' + ConvIOErrorCodeToStrMsg(GetIOErrorCode));
	{$I+}
end;
 
{$F+}
Procedure Text; Interrupt;
Begin
	inc(t, 11);
	if t>=100 then 
	begin
		dec(t, 100);
		savestringtofile(filetext, fname, str);
	end;
 
	Inline($9C);
	OldText;
End;
{$F-}
 
Begin
 
	fname := 'text.txt';
	str := '1234567890';
	t := 0;
 
	createfile(filetext, fname);
 
	GetIntVec($8,@OldText);
	SetIntVec($8,Addr(Text));
 
	Keep(0);
End.

четверг, 14 мая 2020 г.

HTTrack - Отличный офлайн-браузер

При помощи программы HTTrack (https://www.httrack.com/) можно скачать любой сайт из Интернета на свой локальный компьютер и просматривать скаченный сайт в любое время, даже если у вас на локальном компьютере не будет доступа в Интернет.

вторник, 7 апреля 2020 г.

Xerox Phaser 3300 MFP не умеет сканировать по сети через Abbyy FineReader

Xerox Phaser 3300 MFP не умеет сканировать по сети через Abbyy FineReader или другие сторонние программы типа XnView, Paper Port или программы "Факсы и Сканирование" в Windows 10 x86/x64.

Чтобы сканировать по сети на компьютер, вам необходимо сканировать при помощи родной программы "Сетевое сканирование", которую можно установить вместе с драйверами для Windows 7 x86/x64 с сайт Xerox по ссылке:
 https://www.support.xerox.com/support/phaser-3300mfp/file-download/ruru.html?operatingSystem=win7x64&fileLanguage=ru&contentId=105810&from=downloads&viewArchived=false.

Если вам необходимо сканирование через программу Abbyy FineReader, то вам придется подключить Xerox Phaser 3300 MFP к компьютеру по USB, только так.

Источником информации был этот сайт: https://www.alteh.ru/faq/6691/?PAGEN_1=5
Цитату из источника оставлю здесь как есть:
По сети печать без проблем. При нажатии в меню сканировать по сети пишет - сервис не доступен. Запуск программы finereader сканер как устройство видит, но при нажатии на сканирование выдает ошибку.
Ответ: Чтобы сканировать по сети, нужно установить программу Сетевое сканирование на компьютер и добавить в нее устройство (ваше МФУ), используя его IP-адрес. Сканировать с помощью finereader  можно только при локальном подключении аппарата к компьютеру. Подробно обо всех настройках описано в руководстве пользователя.
Кому нужно почитать руководство пользователя по Xerox Phaser 3300 MFP, то ссылка здесь: http://download.support.xerox.com/pub/docs/3300MFP/userdocs/any-os/ru/Phaser_3300MFP_Guide_RU.pdf

Пост опубликовал, чтобы не забыть. 




  

понедельник, 6 апреля 2020 г.

qBittorrent - отличный торрент клиент

Кому надоели вечные зависания utorrent (https://www.utorrent.com/intl/ru/) и навязчивая реклама в нем, то я рекомендовал бы установить qBittorrent (https://www.qbittorrent.org/) - отличный торрент клиент. Без проблем работает на Windows 10 64bit. 

Microsoft Outlook для Android и RDP не дружат с паролем на русском

В Microsoft Outlook для Android пароль должен быть на латинском языке, иначе будет ругаться не верный логин или пароль, с паролем на русском он не дружит.

С RDP такая же проблема.

Опубликовал, чтобы не забыть.