Private Sub cmbFunc_AfterUpdate() g_Func = Trim(cmbFunc) End Sub Private Sub cmbFunc_Change() g_Func = Trim(cmbFunc) End Sub
Private Sub cmbGRNDate1_AfterUpdate() cmbGRNDate1.Value = form_date(cmbGRNDate1.Value) g_GRNDate1 = Trim(cmbGRNDate1.Value) End Sub
Private Sub cmbGRNDate2_AfterUpdate() cmbGRNDate2.Value = form_date(cmbGRNDate2.Value) g_GRNDate2 = Trim(cmbGRNDate2.Value) End Sub
Private Sub cmbManfac_AfterUpdate() g_Manfac = Trim(cmbManfac) End Sub
Private Sub txtDateFrom_AfterUpdate() txtDateFrom.Value = form_date(txtDateFrom.Value) g_DateFrom = form_date(txtDateFrom.Value) End Sub
Private Sub txtDateTo_AfterUpdate() txtDateTo.Value = form_date(txtDateTo.Value) g_DateTo = form_date(txtDateTo.Value) End Sub
Private Sub cmbCancel_Click() g_Cancel = True Unload Me End Sub
Private Sub cmbOk_Click() Save_params Unload Me End Sub
Private Sub cmbTabN_AfterUpdate() g_TabN = cmbTabN.Value End Sub
Public Sub UserForm_Activate() If cmbManfac.ListCount <= 0 Then If Not rs Is Nothing Then If rs.State Then rs.Close cmbManfac.AddItem "*" StrSql = " SELECT DISTINCT usotr.usotr_manfac " & _ " FROM zeie:maxmast.usotr usotr" Set rs = dbdll.rec(client, Forward, StrSql) With cmbManfac .List = Application.Transpose(rs.GetRows) .AddItem "*", 0 .Value = g_Manfac End With End If '------------- cmbFunc.List = Array("*", "pu10", "pu10", "pu10", "pu12", "nv00", "oe", "nv17", "nv13", _ "nv17", "pv12", "nv15", "oe", "nv00", "nv10", "pv12", "nv12", 0) '------------ g_Func = cmbFunc.Value End Sub Private Sub cmbTabN_Change() FilterFio Array(array("usotr_manfac", g_Manfac)) Application.SendKeys "{right}" End Sub Private Sub cmbTabN_Change() Application.SendKeys "{right}" End Sub Private Sub FilterFio(criteria As Variant) StrSql = " SELECT distinct usotr.usotr_manfac,usotr.usotr_tabnum, " & _ "trim(" & IIf(criteria(1) = "*", "usotr.usotr_manfac&' - '&", "") & _ "usotr.usotr_tabnum&' - '&usotr.usotr_fio) as F1" & _ " FROM zeie:maxmast.usotr usotr order by usotr.usotr_manfac,usotr.usotr_tabnum" Set rs = dbdll.rec(client, Forward, StrSql) rs.Filter = IIf(criteria(1) = "*", 0, criteria(0) & " like '" & criteria(1) & "'") With cmbTabN .List = Application.Transpose(rs.GetRows(-1, 0, 2)) .AddItem "*", 0 .Listindex = 0 End With rs.Close End Sub
[/vba][sub] upd. Исправил небольшую ошибку
ds102061, пробуйте так
[vba]
Код
Dim StrSql As String Dim rs As ADODB.Recordset
Private Sub cmbFunc_AfterUpdate() g_Func = Trim(cmbFunc) End Sub Private Sub cmbFunc_Change() g_Func = Trim(cmbFunc) End Sub
Private Sub cmbGRNDate1_AfterUpdate() cmbGRNDate1.Value = form_date(cmbGRNDate1.Value) g_GRNDate1 = Trim(cmbGRNDate1.Value) End Sub
Private Sub cmbGRNDate2_AfterUpdate() cmbGRNDate2.Value = form_date(cmbGRNDate2.Value) g_GRNDate2 = Trim(cmbGRNDate2.Value) End Sub
Private Sub cmbManfac_AfterUpdate() g_Manfac = Trim(cmbManfac) End Sub
Private Sub txtDateFrom_AfterUpdate() txtDateFrom.Value = form_date(txtDateFrom.Value) g_DateFrom = form_date(txtDateFrom.Value) End Sub
Private Sub txtDateTo_AfterUpdate() txtDateTo.Value = form_date(txtDateTo.Value) g_DateTo = form_date(txtDateTo.Value) End Sub
Private Sub cmbCancel_Click() g_Cancel = True Unload Me End Sub
Private Sub cmbOk_Click() Save_params Unload Me End Sub
Private Sub cmbTabN_AfterUpdate() g_TabN = cmbTabN.Value End Sub
Public Sub UserForm_Activate() If cmbManfac.ListCount <= 0 Then If Not rs Is Nothing Then If rs.State Then rs.Close cmbManfac.AddItem "*" StrSql = " SELECT DISTINCT usotr.usotr_manfac " & _ " FROM zeie:maxmast.usotr usotr" Set rs = dbdll.rec(client, Forward, StrSql) With cmbManfac .List = Application.Transpose(rs.GetRows) .AddItem "*", 0 .Value = g_Manfac End With End If '------------- cmbFunc.List = Array("*", "pu10", "pu10", "pu10", "pu12", "nv00", "oe", "nv17", "nv13", _ "nv17", "pv12", "nv15", "oe", "nv00", "nv10", "pv12", "nv12", 0) '------------ g_Func = cmbFunc.Value End Sub Private Sub cmbTabN_Change() FilterFio Array(array("usotr_manfac", g_Manfac)) Application.SendKeys "{right}" End Sub Private Sub cmbTabN_Change() Application.SendKeys "{right}" End Sub Private Sub FilterFio(criteria As Variant) StrSql = " SELECT distinct usotr.usotr_manfac,usotr.usotr_tabnum, " & _ "trim(" & IIf(criteria(1) = "*", "usotr.usotr_manfac&' - '&", "") & _ "usotr.usotr_tabnum&' - '&usotr.usotr_fio) as F1" & _ " FROM zeie:maxmast.usotr usotr order by usotr.usotr_manfac,usotr.usotr_tabnum" Set rs = dbdll.rec(client, Forward, StrSql) rs.Filter = IIf(criteria(1) = "*", 0, criteria(0) & " like '" & criteria(1) & "'") With cmbTabN .List = Application.Transpose(rs.GetRows(-1, 0, 2)) .AddItem "*", 0 .Listindex = 0 End With rs.Close End Sub
думается мне, что без открывания каждого файла в Excel'е будет как-то побыстрее. для работы кода нужна библиотека DSOFile
[vba]
Код
Sub sdf() Dim strFolder$ r: With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then strFolder$ = .SelectedItems(1) ElseIf MsgBox("Ничего не выбрано. Повторить?", 36, "Ну так как?") = 6 Then GoTo r Else: Exit Sub End If End With Dim strFile$ With CreateObject("DSOFile.OleDocumentProperties") strFile = Dir$(strFolder & "\*.xls*") Do While Len(strFile) .Open strFolder & "\" & strFile, , 2 With .SummaryProperties .Author = "Новый автор" .lastsavedby = "Новый автор" End With .Save: .Close strFile = Dir$ Loop End With End Sub
[/vba]
[p.s.]дата изменения фалов при работе макроса будет заменяться на текущую системную, если она должна оставаться без изменений, то нужно будет потанцевать с бубном (WINAPI)
думается мне, что без открывания каждого файла в Excel'е будет как-то побыстрее. для работы кода нужна библиотека DSOFile
[vba]
Код
Sub sdf() Dim strFolder$ r: With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then strFolder$ = .SelectedItems(1) ElseIf MsgBox("Ничего не выбрано. Повторить?", 36, "Ну так как?") = 6 Then GoTo r Else: Exit Sub End If End With Dim strFile$ With CreateObject("DSOFile.OleDocumentProperties") strFile = Dir$(strFolder & "\*.xls*") Do While Len(strFile) .Open strFolder & "\" & strFile, , 2 With .SummaryProperties .Author = "Новый автор" .lastsavedby = "Новый автор" End With .Save: .Close strFile = Dir$ Loop End With End Sub
[/vba]
[p.s.]дата изменения фалов при работе макроса будет заменяться на текущую системную, если она должна оставаться без изменений, то нужно будет потанцевать с бубном (WINAPI)krosav4ig
Мурад, нужно было еще в 1 посте уточнить, что код состоит из фиксированного количества цифр (6+2 или 2+2+2) разделенных точками, да и в названиях специальностей и направлений чисел не встречается [p.s.]Мурад, посмотри аттач, вдруг пригодится [/p.s.]
Мурад, нужно было еще в 1 посте уточнить, что код состоит из фиксированного количества цифр (6+2 или 2+2+2) разделенных точками, да и в названиях специальностей и направлений чисел не встречается [p.s.]Мурад, посмотри аттач, вдруг пригодится [/p.s.]krosav4ig
А можно немного поизвращаццо? в модуле листа [vba]
Код
Sub SheetsList() With CreateObject("adodb.connection") .Open "Provider=microsoft.ace.oledb.12.0;" & _ "data source=" & Parent.FullName & ";" & _ "extended properties=excel 12.0 macro;" .cursorlocation = 3 With .OpenSchema(19) .Filter = "table_name like '*$*' and cardinality=0 and table_name<>'" & Me.Name & "$'" [A1].Resize(.RecordCount) = Application.Transpose(.getrows(-1, 0, 2)) .Close End With .Close End With End Sub
[/vba]
А можно немного поизвращаццо? в модуле листа [vba]
Код
Sub SheetsList() With CreateObject("adodb.connection") .Open "Provider=microsoft.ace.oledb.12.0;" & _ "data source=" & Parent.FullName & ";" & _ "extended properties=excel 12.0 macro;" .cursorlocation = 3 With .OpenSchema(19) .Filter = "table_name like '*$*' and cardinality=0 and table_name<>'" & Me.Name & "$'" [A1].Resize(.RecordCount) = Application.Transpose(.getrows(-1, 0, 2)) .Close End With .Close End With End Sub