2017-11-29 16 views
3

VBA (사용자 지정 UI 편집기가 아님)를 사용하여 사용자 지정 리본을 만들었으므로 셀 A1의 값을 보여주는 간단하고 정적 인 텍스트가 있어야하지만 그에 대한 XML 코드를 찾을 수 없습니다.사용자 지정 리본의 텍스트 값

모든 버튼이 잘 작동
Sub LoadCustRibbon() 

Dim hFile As Long 
Dim path As String, fileName As String, ribbonXML As String, user As String 

hFile = FreeFile 
user = Environ("Username") 
path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\" 
fileName = "Excel.officeUI" 

'ribbonXML = ribbonXML + "<mso:ribbon startFromScratch='true' />" & vbNewLine 

ribbonXML = "<customUI  xmlns='http://schemas.microsoft.com/office/2009/07/customui'>" & vbNewLine 
ribbonXML = ribbonXML + " <ribbon startFromScratch = 'true'>" & vbNewLine 
ribbonXML = ribbonXML + " <qat/>" & vbNewLine 
ribbonXML = ribbonXML + " <tabs>" & vbNewLine 


ribbonXML = ribbonXML + "  <tab id='Menu' label='Menu' insertBeforeQ='mso:TabFormat'>" & vbNewLine 
'grupo geral 
ribbonXML = ribbonXML + "  <group id='geral' label='Geral' autoScale='true'>" & vbNewLine 
ribbonXML = ribbonXML + "   <button id='capa' label='Capa' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='RmsNavigationBarHome'  onAction='Capa1'/>" & vbNewLine 


ribbonXML = ribbonXML + "   <button id='resumo' label='Resumo' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='ChartChangeType'  onAction='resumo1'/>" & vbNewLine 
ribbonXML = ribbonXML + "  </group>" & vbNewLine 
'grupo performance 

ribbonXML = ribbonXML + "  <group id='performance' label='Performance' autoScale='true'>" & vbNewLine 
ribbonXML = ribbonXML + "   <button id='prom' label='Prom' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='CopyToPersonalContacts'  onAction='prom1'/>" & vbNewLine 

ribbonXML = ribbonXML + "   <button id='super' label='Super' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='WorkgroupAdmin'  onAction='super1'/>" & vbNewLine 

ribbonXML = ribbonXML + "   <button id='ranking' label='Ranking' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='Numbering'  onAction='ranking1'/>" & vbNewLine 

ribbonXML = ribbonXML + "  </group>" & vbNewLine 


'Cliente 
ribbonXML = ribbonXML + "  <group id='cliente' label='Cliente' autoScale='true'>" & vbNewLine 
ribbonXML = ribbonXML + "   <button id='Responsible' label='Responsible' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='OrganizationChartInsert'  onAction='responsavel1'/>" & vbNewLine 

ribbonXML = ribbonXML + "   <button id='des' label='Des' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='GroupJunkEmail'  onAction='des1'/>" & vbNewLine 
ribbonXML = ribbonXML + "  </group>" & vbNewLine 

'relatorios novo 
ribbonXML = ribbonXML + "  <group id='relatorios1' label='Relatorios' autoScale='true'>" & vbNewLine 
ribbonXML = ribbonXML + "   <button id='an' label='An' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='TrustCenter'  onAction='historico1'/>" & vbNewLine 

ribbonXML = ribbonXML + "   <button id='causas' label='Causas' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='GroupContactOptions'  onAction='causas1'/>" & vbNewLine 

ribbonXML = ribbonXML + "   <button id='reenvios' label='Reenvios' " & vbNewLine 
ribbonXML = ribbonXML + "imageMso='ProposeNewTime'  onAction='reenvios1'/>" & vbNewLine 

ribbonXML = ribbonXML + "  </group>" & vbNewLine 


'reenvios 
'ribbonXML = ribbonXML + "  <group id='reenvios' label='Reenvios' autoScale='true'>" & vbNewLine 
'ribbonXML = ribbonXML + "   <button id='reenvios' label='Reenvios' " & vbNewLine 
'ribbonXML = ribbonXML + "imageMso='AppointmentColor8'  onAction='reenvios1'/>" & vbNewLine 
' 
'ribbonXML = ribbonXML + "  </group>" & vbNewLine 



ribbonXML = ribbonXML + "  </tab>" & vbNewLine 
'ribbonXML = ribbonXML + " <tab mso:tab label ='Inserir' visible='false'>" 
ribbonXML = ribbonXML + " </tabs>" & vbNewLine 

ribbonXML = ribbonXML + " </ribbon>" & vbNewLine 
ribbonXML = ribbonXML + "</customUI>" 

ribbonXML = Replace(ribbonXML, """", "") 

Open path & fileName For Output Access Write As hFile 
Print #hFile, ribbonXML 
Close hFile 

End Sub 

가, 나는 많은 코드를 편집 가능한 상자를 추가하는 방법을 보여주는, 그러나 아무도 셀에서 간단한 정적 상자 보여주는 값을 보여주는 발견이 내가 가진 것입니다.

답변

1

예에서 onAction-events처럼 VBA 함수에 대한 콜백을 포함하는 editBox-control 또는 labelControl이 필요합니다.

샘플 코드가 작동하지 않아 일반적인 예입니다. labelControl을 원하면 동일한 getText -sub가 작동하지만 XML 코드가 다릅니다.

XML :

<editBox id="txt1" getText="GetText" getEnabled="GetEnabled' /> 
<labelControl id="lbl1" getLabel="GetText" /> 

VBA :

'***** Callback for txt1 getText 
Sub GetText(control As IRibbonControl, ByRef returnedVal) 
    '***** Return the value in cell A1 in sheet #1 in the workbook that holds the code 
    returnedVal = ThisWorkbook.Sheets(1).Cells(1, 1).Value 
End Sub 

'***** Callback for txt1 getEnabled 
Sub GetEnabled(control As IRibbonControl, ByRef returnedVal) 
    '***** Return wheter you want the editBox to be enabled or not 
    returnedVal = True 
End Sub