Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Перебрать открытые экземпляры ExceL и открыть файл в соседнем приложении
 
Нашел интересный код от KukLP  
Declare Function GetCurrentProcessId Lib "kernel32" () As Long  
 
Public Function Kill_Proc() As Boolean  
Dim Process As Object, wb As Workbook, PID&  
PID = GetCurrentProcessId  
For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")  
If Process.Caption Like "EXCEL.EXE" And Process.Processid <> PID Then  
Process.Terminate  
End If  
Next  
End Function  
 
 
Как закрывать процесс с номером PID - не совпадающим с "родным" номером  - это понятно, а вот как заставить его открыть файл?  
 
Типа    
 
Option Explicit  
Declare Function GetCurrentProcessId Lib "kernel32" () As Long  
 
Public Sub Open_File()  
   Dim Process As Object, wb As Object, PID&  
     
   PID = GetCurrentProcessId  
   For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")  
       If Process.Caption Like "EXCEL.EXE" And Process.Processid <> PID Then  
           Set wb = Process.Workbooks.Open("C:\1.xls")  
дает ошибку - 438- не поддерживается метод...  
 
       End If  
   Next  
End Sub
Универсальный открыватель любых файлов из Excel через VBA и немножечко API
 
Поставили задачу:  
1. Организовать из файла Excel открытие любого типа файлов  
2. Файл должен открываться в отдельном, родном для него приложении  
3. Если файл уже открыт, то просто перейти к открытому файлу  
4. Если файл поврежден, то его приложение закрывается  
 
Реализовал выбор и открытие для следующих типов файлов:  
 
flac видео dwt автокад  
flv видео dxf автокад  
mkv видео dwg автокад  
mp4 видео cdr Корел  
ogg видео cdt Корел  
ogm видео clk Корел  
dvr-ms видео cmx Корел  
asx видео wmf Графика  
wax видео emf Графика  
m3u видео cgm Графика  
wpl видео gif Графика  
wvx видео jpg Графика  
wmx видео bmp Графика  
mid видео png Графика  
rmi видео tiff Графика  
midi видео al Adobe  
asf видео eps Adobe  
wm видео svg Adobe  
wma видео svgz Adobe  
wmv видео psd Adobe  
wmd видео pdf Adobe  
wav видео  
snd видео А еще все офисные файлы + интернет+TXT  
av видео  
aif видео  
aifc видео  
aiff видео  
wma видео  
mp3 видео  
avi видео  
wmv видео  
jpeg видео  
mpeg видео  
mpg видео  
m1v видео  
mp2 видео  
mpa видео  
mpe видео  
ifo видео  
vob видео  
 
Однако есть несколько сложностей:  
 
1. функция API, используемая в файле(Declare Function ShellExecute Lib "shell32.dll")  
- не подходит для 2010 офиса и ОСОБЕННО для 64...  
2. Не знаю как максимизировать окно открываемого приложения  
3. Не знаю как проверить повреждения файлов открываемых при помощи API  
4. Вообще не нравится как сделал проверку ошибок выполнения...  
 
Давайте доделаем и в КОПИЛКУ...
Восстановить поврежденный файл XLS
 
Бывает ситуация, когда файл все пухнет и пухнет... а мы все корректируем и корректируем его и вот при одном из сохранений файл вдруг перестает открываться. Excel пытается его восстановить и нахрен сносит при этом как форматирование, так и модули и формы... Вот и я проработав сегодня всю ночь потерял все результаты работы ... и модули и формы и текст на листе...  
 
Беру Open Office. открываю в нем файл. Залезаю в пункт Макросы - Управление диалогами. Включаю видимость модулей - выбираю нужные модули и сохраняю в файл BASIC. Получается сохранен почти готовый текст модуля или формы. Нужно только вручную заменить текст Rem - на пробел. Копируем текст. Открываем более раннюю редакцию файла в Excel- и вставляем в VBE восстановленные тексты программ. Удается скопировать только тексты модулей и форм. Естественно, что формы скопировать не удается... Восстановить текст со страницы удалось простым копированием страницы в отдельный файл XLS опять таки в OPEN OFFICE...  
 
Вот, поделился... пойду восстанавливать ручками - все что потерял- контролы на формах...
Особенности просмотра фотографий с мелким текстом в UserForm.Image
 
Для удобства менеджеров сделал небольшой фотоальбом с 72 программируемыми кнопками для просмотра слайд-шоу из 12 слайдов, с бегушим текстовой строкой...  
Сделал в Excel 2003 c выводом на UserForm.Image  
Получилось прикольно, но...  
 
выяснилось что контрол Image выводит идеально-резкое изображение и особенно это напрягает при просмотре GIF-файлов с черным текстом и прозрачным фоном.  
Буквы выглядят так, как будто в компьютере выключили "сглаживание неровностей экранных шрифтов"...кроме того на фотографиях с дешевого сотового телефона видны все пиксели...  
 
Просматриваю те же файлы в Диспетчере Рисунков MS  - на мгновение изображение мутнеет и предстает в идеальном виде. Полагаю, что производится какая то обработка изображения, типа размытия и т.п.  
 
Есть ли какая то возможность сделать это удовольствие в VBA? VB?
Как програмно изменить масштаб формы привязавшись не к разрешению экрана а к масштабу разрешения
 
На рабочем столе можно сменить не только разрешение экрана, но и "масштабный коэфициент" - количество точек на дюйм.    
Специально посмотрел 5 компов - сотрудники при одинаковом разрешении выставили:  
96  
133  
144  
150  
96  
Всем удобно по разному.    
Родилась идея - как не лазить в VBE при распространении приложения по офисам.  
Делаем форму для стандартного разрешения стандартного 19 дюймового монитора.  
При первоначальной загрузке через API определяется разрешение и МАСШТАБ.  
Если разрешение совпадает с разрешением "РАЗРАБОТЧИКА", то полученный через API масштабный коэфициент (количество точек на дюйм) присваиваем свойству ZOOM нашей формы и приблизительно ПОПАДАЕМ В ТОЧКУ.  
 
ЕСЛИ разрешение не совпадает, то запускаем специальную настроечную форму с "ПРЯМОУГОЛЬНИКОМ", который методом "подкручивания ручечек" на настроечной форме нужно подогнать. Значения координат и размеров формы запоминаются здесь же в файле... 1 раз и до следующего изменения разрешения и масштабирования экрана...  
 
Вот только знаний у меня не хватает...
Как сгенерировать на форме временный ListBox а потом его убрать?
 
Как сгенерировать кодом VBA на форме временный ListBox    
1. с заданным именем "ListBox_001"  
2. с 5 колонками  
3. Как "ListBox_001" убить не закрывая форму?
Страницы: 1
Наверх