Общее·количество·просмотров·страницы

понедельник, 5 марта 2012 г.

Обработка эксель файлов из outlook с помощью vba

В данной статье я рассмотрю вопрос автоматизации обработки данных книг excel, которые вложены в письма outlook. Найболее вероятным использованием этих данных является их загрузка в базу данных или в другую книгу.
1. Обработка входящих сообщений.
Для обработки входящих сообщений Outlook необходимо поместить следующий код в ThisOutlookSession.



2.Обработка входящих файлов excel. Для того чтобы начать обрабатывать файлы excel из приложения outlook необходимо для начала выбрать между ранним и поздним связыванием. Учитывая то, что данный код предполагается использовать на разных компьютерах с разной программной конфигурацией выбор падает на позднее связывание.


Sub ImportNesesseryFields(ByVal sFileFullPath As String)
   
    Dim AppEx As Object
    Dim test As String
    Dim wkbk As Object, sht As Object

    On Error Resume Next
    Set AppEx = CreateObject("Excel.Application")
    'On Error GoTo 0

    AppEx.Visible = True

    Set wkbk = AppEx.Workbooks.Open(sFileFullPath)

    Set sht = GetObject(, "Excel.Application").ActiveSheet

        With sht

        End With
 
        wkbk.Close
        AppEx.Quit
        Set AppEx = Nothing

    Exit Sub

ErrHandler:

    Debug.Print (Err.Description)
    AppEx.Quit
    Set AppEx = Nothing

End Sub


воскресенье, 19 февраля 2012 г.

Програмное закрытие экселя.


Sub Close_Excel()
Dim strClsExl As String
strClsExl = "TASKKILL /F /IM Excel.exe"
Shell strClsExl, vbHide

End Sub 
findsarfaraz.blogspot.com 

четверг, 16 июня 2011 г.

Reference object by codename

wkbk - workbook.codename
Reference to workbook:
wkbk.[properties/methods of workbook]
sh - worksheets.codename
Reference to worksheet:
sh.[properties/methods of worksheet]
Reference to specific worksheet of specific workbook:
wkbk.VBProject.VBComponents(sh)

четверг, 5 мая 2011 г.

Личная книга макросов для разных экселей.

Если у вас на компьютере установлены разные версии Microsoft Excel. Например Excel 2003 & Excel 2007, то при открытии Excel 2003 может возникнуть проблема для считывания файла личной книги макросов. Для того, чтобы excel 2007 мог читать файл личной книги макросов, без проблем для excel 2003, нужно поместить эти файлы C:\Program Files\MS Office 2007\Office12\XLSTART.

четверг, 12 августа 2010 г.

О нуляхи и сущетвовании

Значит так, господа, давайте разбиремся, что такое ноль, пустой, существут и заполнен...

0 - это ноль, число. [Такое же число, как и любое другое]
"" - это пустая строка. [Такая же строка, как и любая другая]
Null - переменная (ячейка) существует, но значения не имеет
Nothing - переменная (объект) не существует, но существовал когда-то раньше или может существовать в будущем.
Dose Not Exist - переменная не существует, никогда не сущесвовала и не может существовать в будщем.

Для меня, переменная заполнена, если она существует и Not IsNull.

пятница, 6 августа 2010 г.

Вставить данные из одной таблицы в другую по коду товара

Option Base 1
Dim LastColumnI As Integer, LastRowI As Variant
Dim TemplateFullNameS As String, TemplateSheetS As String, TemplateNameS As String
Dim TemplateDataArrV() As Variant, OrderDataArrV() As Variant
Sub Consolidation()
'On Error Resume Next
'открываем щаблон
Set FSO = CreateObject("Scripting.FileSystemObject")
ThisWorkbook.Worksheets("data").Range("a1").Select
TemplateFullNameS = ActiveCell.Offset(0, 1)
Set File = FSO.GetFile(TemplateFullNameS)

TemplateSheetS = ActiveCell.Offset(1, 1)
TemplateNameS = File.Name
Workbooks.Open Filename:=TemplateFullNameS
ActiveWorkbook.Worksheets(CStr(TemplateSheetS)).Range("a1").Select
LastRowI = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
LastColumnI = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Column
TemplateDataArrV = ActiveCell.CurrentRegion.Offset(1, 0).Resize(LastRowI - 1, LastColumnI)
Workbooks(TemplateNameS).Close
'============================================================================================
TemplateFullNameS = ActiveCell.Offset(2, 1)
TemplateSheetS = ActiveCell.Offset(3, 1)
TemplateNameS = File.Name
Workbooks.Open Filename:=TemplateFullNameS
ActiveWorkbook.Worksheets(CStr(TemplateSheetS)).Range("a1").Select
LastRowI = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
LastColumnI = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Column
OrderDataArrV = ActiveCell.CurrentRegion.Offset(1, 0).Resize(LastRowI - 1, LastColumnI)
ActiveWorkbook.Close
a = UBound(OrderDataArrV, 1)
b = UBound(TemplateDataArrV, 1)
c = LBound(TemplateDataArrV, 1)
For i = 1 To a
For j = 1 To b
'For k = 1 To c
If OrderDataArrV(i, 1) = TemplateDataArrV(j, 7) And OrderDataArrV(i, 2) = TemplateDataArrV(j, 8) Then
TemplateDataArrV(j, 2) = OrderDataArrV(i, 1)
End If
'Next c
Next j
Next i
End Sub

ссылка на задчку

среда, 28 июля 2010 г.

Deleting All VBA Code In A Project

Deleting All VBA Code In A Project

This code will delete ALL VBA code in a VBProject.

Sub DeleteAllVBACode()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule

Set VBProj = ActiveWorkbook.VBProject

For Each VBComp In VBProj.VBComponents
If VBComp.Type = vbext_ct_Document Then
Set CodeMod = VBComp.CodeModule
With CodeMod
.DeleteLines 1, .CountOfLines
End With
Else
VBProj.VBComponents.Remove VBComp
End If
Next VBComp
End Sub