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

Страницы: 1
Перебрать открытые экземпляры ExceL и открыть файл в соседнем приложении
 
А какие возможности кроме Process.Terminate - там вообще есть?  
 
Например, можно активировать окно приложения?  Выяснить имена файлов открытых данным приложением?
Перебрать открытые экземпляры 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
 
У кого-нибудь есть терминальная верстия какой-нибудь оконной программы? Проблема в следующем - чисто теоретически доступ к терминальной версии с автоматической авторизацией должен осуществляться через файл с расширением *.msi  или *.rdp  - а вот как это в действительности происходит? Может кто-нибудь попробует запустить этим файликом терминальную версию, естественно добавив в маску *.msi  или *.rdp...
Универсальный открыватель любых файлов из Excel через VBA и немножечко API
 
Спасибо, чуствую, что Ваш сайт очень поможет...  
а ссылку на статью майкрософта надо огромными буквами  
и можно сразу изменить на русскую версию  
 
Совместимость 32- и 64-разрядных версий Office 2010  
 http://msdn.microsoft.com/ru-ru/library/ee691831(v=office.14).aspx  
 
Кстати заметил огрех в своем файле - если пытаешься открыть по сети файл открытый другим пользователем - файл все равно открывается, но при помощи гиперссылки... надо немного поравить проверку...
Универсальный открыватель любых файлов из Excel через VBA и немножечко API
 
Мужики, хорош глумиться! Кто-нибудь может внятно ответить на самый главный вопрос, который всех нас прижмет в ближайшее время :    
 
КАК ПРИСПОСОБИТЬ СТАРЫЕ API-функции для 32 битной и 64 битной версии 2010 офиса.  
 
У меня ни один файл с использованием API не работает на новых компах c 2010 офисом.  
 
Где взять табличку соответствий оформления старых и новых API или что-то в таком роде...
Универсальный открыватель любых файлов из Excel через VBA и немножечко API
 
Архиватор говорите?  Файлы 2007 офиса и представляют собой файлы ZIP...
Универсальный открыватель любых файлов из Excel через VBA и немножечко API
 
Наверное для краткости назовем этот файлик ОТКРЫВАТЕЛЕМ :)  
 
Небольшое уточнение: Чтобы прямо из Excel открывать проигрыватель Windows Media и слушать заранее составленный список песен  -    
1.нужно сформировать список и сохранить его в папку. Полученный файл имеет разрешение *.WPL  
2.открыть папку и обнаружить что если просто щелкнуть по файлу списка - он не откроет проигрыватель, а предложит выбрать из списка программу для открытия.  
3. Выбираем из списка предложенных программ - проигрыватель Windows Media, в котором вы сформировали список и отмечаем галочкой пункт "использовать её для всех файлов этого типа. Нажимаем OK.  
4. В дальнейшем ОТКРЫВАТЕЛЬ или Ваш макрос, написанный на его основе поможет значительно сократить время, которое менеджер тратит на поиск нужного списка воспроизведения... И НАКОНЕЦ ТО ЗАЙМЕТСЯ РАБОТОЙ!!!)))))))))))
Универсальный открыватель любых файлов из Excel через VBA и немножечко API
 
Именно это я сейчас и делаю. И браузер прикрутил. И возможность массовых почтовых рассылок сделал. Сейчас думаю как недельный планинг на форме забабахать...
Универсальный открыватель любых файлов из 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
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
 
 
 
Небольшое изменение:    
1. формат файла для удобства: Название_ГОД_МЕСЯЦ_ДЕНЬ_ЧАС_МИНУТА.xlsb  
2 У меня параноидальное неприятие ActiveWorkbook... Ну влетел я один раз на неделю работы :)))))  
 
Так что вот так, при разработке поудобнее...  
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
 
Dim x, strpath As String  
Dim strdate As String  
'создать папку "Temp" если не существует  
If Dir(ThisWorkbook.Path & "\Temp", vbDirectory) = "" Then _  
MkDir ThisWorkbook.Path & "\Temp"  
'ОТМЕНИЛ  
'ThisWorkbook.Save  
Application.DisplayAlerts = False  
strpath = ThisWorkbook.Path & "\Temp\"  
On Error Resume Next  
x = GetAttr(strpath) And 0  
If Err = 0 Then ' если путь существует - сохраняем копию книги  
strdate = Format(Now, "yyyy_mm_DD_HH_m")  
ThisWorkbook.SaveAs FileName:=strpath & ThisWorkbook.Name & strdate & ".xlsm", FileFormat:= _  
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False  
Application.DisplayAlerts = True  
End If  
 
End Sub
Восстановить поврежденный файл XLS
 
Бывает ситуация, когда файл все пухнет и пухнет... а мы все корректируем и корректируем его и вот при одном из сохранений файл вдруг перестает открываться. Excel пытается его восстановить и нахрен сносит при этом как форматирование, так и модули и формы... Вот и я проработав сегодня всю ночь потерял все результаты работы ... и модули и формы и текст на листе...  
 
Беру Open Office. открываю в нем файл. Залезаю в пункт Макросы - Управление диалогами. Включаю видимость модулей - выбираю нужные модули и сохраняю в файл BASIC. Получается сохранен почти готовый текст модуля или формы. Нужно только вручную заменить текст Rem - на пробел. Копируем текст. Открываем более раннюю редакцию файла в Excel- и вставляем в VBE восстановленные тексты программ. Удается скопировать только тексты модулей и форм. Естественно, что формы скопировать не удается... Восстановить текст со страницы удалось простым копированием страницы в отдельный файл XLS опять таки в OPEN OFFICE...  
 
Вот, поделился... пойду восстанавливать ручками - все что потерял- контролы на формах...
всплывающий календарь, простая форма, открытый код
 
Немного изменил Дизайн.  
Спрятал летающую кнопку, но продолжаю ее использовать  
Чуть облегчил ввод вчерашней позавчерашней и завтрашней  и послезавтрашней даты.    
Поменял коэффициенты для ресайза    
Поменял шрифты на Tahoma    
Поменял цвета в контролах  с системных на цвета VB - чтобы при нестандартных настройках системной палитры не возникало проблем    
Убрал ввод пустого значения при невыбранной дате
Особенности просмотра фотографий с мелким текстом в 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" убить не закрывая форму?
Создание чертежной рамки в колонтитуле
 
В 2007 офисе есть кнопка с фотоаппаратом.  
Рисуете рамку и добавляете в нее "фотографию другого листа"  
 
или  просто рисовать можно вообще без всяких макросов.  
Лист эксель 2003 это средненький лист миллиметровки.  
Лист эксель 2007 это охрнененно большущий лист миллиметровки  
Делаете высоту и ширину всех строк на листе равными 11.  
И и при помощи обычного форматирования ячеек спокойно рисуете план квартиры, план Красной плошади с местом для посадки лунохода, чертеж реактора реформинга для каталитической перегонки нефти в 98 бензин в кипящем слое керамического катализатора с платиновым напылением...  
Хотя это конечно извращение...  
Что касается условного форматирования то в 2007 офисе его столько видов и такое количество на одну ячейку можно навесить, что можно от восторга застрелиться... Поэтому число любителей 2007 офиса крайне невелико и непрерывно сокращается...
Страницы: 1
Наверх