我的最终目标是生成一个工具来预测字符串的宽度,以便在MS Access 2010中打印报表时可以避免文本溢出.类似CanGrow
的选项没用,因为我的报表不能有不可预测的分页符.我无法切断文字.
为此,我WizHook.TwipsFromFont
在Access中发现了未记录的函数.在给定字体和其他特征的情况下,它返回字符串的缇宽度.它已被证明是非常有用的起点.基于各种用户生成的指南,我在Access中开发了以下内容:
Public Function TwipsFromFont(ByVal sCaption As String, ByVal sFontName As String, _ ByVal lSize As Long, Optional ByVal lWeight As Long = 400, _ Optional bItalic As Boolean = False, _ Optional bUnderline As Boolean = False, _ Optional lCch As Long = 0, _ Optional lMaxWidthCch As Long = 0) As Double 'inspired by http://www.team-moeller.de/?Tipps_und_Tricks:Wizhook-Objekt:TwipsFromFont WizHook.Key = 51488399 Dim ldx As Long Dim ldy As Long Call WizHook.TwipsFromFont(sFontName, lSize, lWeight, bItalic, bUnderline, lCch, _ sCaption, lMaxWidthCch, ldx, ldy) 'Debug.Print CDbl(ldx) TwipsFromFont = CDbl(ldx) 'TwipsFromFont = 99999 End Function
但是,最终将在Excel中生成的数据最初将在Excel 2010中生成.因此,我想在Excel中调用此函数,因此我可以在创建时检查字符串.为此,我在Excel中开发了以下内容:
Public Function TwipsFromFontXLS() As Double Dim obj As Object Set obj = CreateObject("Access.Application") With obj .OpenCurrentDatabase "C:\MyPath\Jeremy.accdb" TwipsFromFontXLS = .Run("TwipsFromFont", sCaption = "Hello World!", _ sFontName = "Arial Black", lSize = 20) .Quit End With Set obj = Nothing End Function
当我debug.Print TwipsFromFont("Hello World!","Arial Black",20)
在Access中运行时,我回到2670.当我debug.Print TwipsFromFontXLS()
在Excel中运行时,我回到585.
在Access中,如果我设置TwipsFomFont = 9999
,则debug.Print TwipsFromFontXLS()
返回9999
.
关于我的断开连接的想法?