Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: на память: изменение шрифтов табличных форм БД
 
 автор: Йожык   (18.07.2013 в 12:52)   личное сообщение
 
 

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

За основу кода взята статья Юрия Шермана.
http://hiprog.com/index.php?option=com_content&task=view&id=442

А выглядит бонус так:
Sub ChangeShrift()
' изменяет шрифты для всех табличных форм в базе
Dim frm As Form, ctl As Control
Dim FormName As String, n As Long
'On Error Resume Next
'Перебираем все формы
For n = 0 To CurrentDb.Containers("Forms").Documents.Count - 1
FormName = CurrentDb.Containers("Forms").Documents(n).Name
SysCmd acSysCmdSetStatus, FormName
'Открываем форму в режиме конструктора
If FormName <> "СкрытаяФорма" Then
  
  DoCmd.OpenForm FormName, acDesign, , , , acHidden
      Set frm = Forms(FormName)
      
'---- этими  строчками можно дополнить код в статье ЮШ
        If frm.AllowDatasheetView=True Then
        frm.DatasheetFontName = "Arial"
        frm.DatasheetFontHeight = 9
'---------------------- 
 DoCmd.Close acForm, FormName, acSaveYes
      Else
  DoCmd.Close acForm, FormName, acSaveNo
      End If
End If
Next n 'следующая форма
SysCmd acSysCmdClearStatus
MsgBox "Обработано форм: " & n, vbInformation
End Sub
Удачи :)

  Ответить  
 
 автор: Дядя Федор   (19.07.2013 в 11:58)   личное сообщение
 
 

До кучи.
Иногда бывает полезно и в отчетах :
Вот код:

Public Sub AllReportsCyrillec()
Dim obj As AccessObject, dbs As Object
Dim k%
Dim ctl As Control
k = 0
'шрифт который меняем
Const arialcyr = "Arial Cyr"
Const newarialcyr = "Arial"
    Set dbs = Application.CurrentProject
    ' Search for open AccessObject objects in AllReports collection.
    For Each obj In dbs.AllReports
    k = k + 1
        
            ' Print name of obj.
            'debug.print k, obj.name
            debug.print   obj.name 
            If InStr(1, obj.name, "Etiketka") > 0 Then GoTo 111 'обработка исключений (этот отчет не трогать!)
            DoCmd.OpenReport obj.name, acViewDesign, , , acHidden
              With Reports(obj.name)
              For Each ctl In Reports(obj.name).Controls
                          If ctl.Properties(2) = 100 Or ctl.Properties(2) = 109 Then
              'debug.print "" & ctl.name
              'debug.print "" & ctl.Properties(2)
              On Error Resume Next
              'debug.print ""; ctl.Properties("FontName")
              If arialcyr = ctl.Properties("FontName") Then
                            ctl.Properties("FontName") = newarialcyr 'шрифт НА который меняем
                            'debug.print "заменили"
              End If
                      End If
              Next
              End With
            DoCmd.Close acReport, obj.name, acSaveYes
        
111:
    Next obj
    MsgBox Now(), , "Всего отчетов в базе " & k
End Sub

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList