Add-In erstellen

  • #1
N

nok106

Bekanntes Mitglied
Themenersteller
Dabei seit
10.09.2005
Beiträge
108
Reaktionspunkte
0
Ort
Brunsbüttel
Hallo Excelaner,

kann man den folgenden Code ändern, so dass er als Add-In deklariert werden könnte.

Code:
'Spaltenbreite 10,38 Spaltenhöhe 12,75 Druckertreiber Canon S400
 
Sub Format_Spalten_Zeilen_mm()
Dim sBreite, zhöhe, sAktuell, zAktuell As Single
Dim strText, strAntwort As String

Dim Mldg, Stil, Titel, Antwort, Text1
Mldg = Sollen Zeilen und Spalten geändert werden ?
Stil = vbYesNo + vbQuestion + vbDefaultButton1
Titel = Zeilenhöhe und Spaltenbreite ändern
Antwort = MsgBox(Mldg, Stil, Titel)
If Antwort = vbYes Then
Text1 = ja

Spalte = Selection.ColumnWidth
sAktuell = (Selection.ColumnWidth + 0.71) / 4.45 * 10
strText = Aktuelle Spaltenbreite =  & _
Format(sAktuell, ###0.00 mm) & Chr(13) & Chr(13) & Chr(13) & Chr(13) _
& Spaltenbreite in mm angeben:
strAntwort = InputBox(strText, Neue Spaltenbreite festlegen, _
Format(sAktuell, ###0.00))
If strAntwort <>  Then
sBreite = Val(strAntwort)
Selection.ColumnWidth = -0.71 + 4.45 * sBreite / 10
End If

zAktuell = Selection.RowHeight
Faktor = 2.8
zAktuell = zAktuell / Faktor
strText = Aktuelle Zeilenhöhe =  & _
Format(zAktuell, ###0.00 mm) & Chr(13) & Chr(13) & Chr(13) & Chr(13) _
& Zeilenhöhe in mm angeben:
strAntwort = InputBox(strText, Neue Zeilenhöhe festlegen, _
Format(zAktuell, ###0.00))
If strAntwort <>  Then
zhöhe = CSng(strAntwort)
Selection.RowHeight = Faktor * zhöhe
End If
    End If
End Sub


Es wäre Klasse wenn jemand helfen könnte .........
 
  • #2
Hallo nok106,

kann man den folgenden Code ändern, so dass er als Add-In deklariert werden könnte.

Den Code braucht man nicht zu ändern. Du meinst glaub ich eher, wie kann man das Makro als AddIn verpacken.

Soll das Makro
- nur zur Verfügung stehen
- soll es beim Start von Excel ausgeführt  werden
- soll beim Start von excel ein Menü-Punkt erstellt werden
- ???

Wie man grundsätzlich ein Add-In erstellt ist auf Schmittis Seite gut beschrieben.
http://www.schmittis-page.de/excel/vba/t18.htm

Gruß Matjes :)
 
  • #3
Hallo Matjes,

für die schnelle Antwort besten Dank.

Das Makro soll beim Start von Excel ausgeführt  werden und in den Add-Ins verfügbar sein.

Ist das machbar ?
 
  • #4
Hallo nok106,

ich hab dir den Code für ein Add-In zusammengestellt.

Den Code packe bitte in eine Modul in einer neuen Arbeitsmappe und verfahre dann wie auf schmittis-Seite beschrieben.

Beim Start legt das AddIn unter->Format' einen Button->Spalten_Zeilen_mm' an und löscht ihn wieder beim Schliessen.

Den Makro schon beim Start des Addin aufzurufen klappt nicht, weil zu diesem Zeitpunkt noch keine Mappe geöffnet ist.

Gruß Matjes :)

Code:
Option Explicit
 ->Spaltenbreite 10,38 Spaltenhöhe 12,75 Druckertreiber Canon S400

Private Const c_MENUBUTTON_NAME = Spalten_Zeilen_mm

'************************************************************************
Public Sub Auto_Open()
 ->Startroutine des Add-In:
 -> 1) Menu-Eintrag erstellen
  Dim myMenuBar As Office.CommandBarPopup
  Dim myMenuButton As Office.CommandBarButton
  On Error Resume Next
 ->Im Hauptmenue->Format' finden
  Set myMenuBar = Application.CommandBars(1).FindControl(, 30006)
 ->Button anfügen
  Set myMenuButton = myMenuBar.Controls.Add(msoControlButton)
 ->Button benennen
  myMenuButton.Caption = c_MENUBUTTON_NAME
  myMenuButton.BeginGroup = True
 ->Button mit Hauptprogramm verknüpfen
  myMenuButton.OnAction = ThisWorkbook.Name & ! & Format_Spalten_Zeilen_mm
  Set myMenuButton = Nothing: Set myMenuBar = Nothing
  On Error GoTo 0
End Sub
'************************************************************************
Public Sub Auto_Close()
 ->Startroutine des Add-In:
 -> 1) Menu-Eintrag löschen
  Dim myMenuBar As Office.CommandBarPopup
    
  On Error Resume Next
 ->Im Hauptmenue->Format' finden
  Set myMenuBar = Application.CommandBars(1).FindControl(, 30006)
 ->Button löschen
  myMenuBar.Controls(c_MENUBUTTON_NAME).Delete
  Set myMenuBar = Nothing
  On Error GoTo 0
End Sub
'************************************************************************
Public Sub Format_Spalten_Zeilen_mm()
  Dim dAktuell As Double, dFaktor As Double
  Dim strAntwort As String, dAntwort As Double
  Dim sTmp As String, bNok As Boolean

  If vbYes <> MsgBox( _
                Sollen Zeilen und Spalten geändert werden ?, _
                vbYesNo + vbQuestion + vbDefaultButton1, _
                Zeilenhöhe und Spaltenbreite ändern) _
              Then Exit Sub

 ->*** Spaltenbreite
  dAktuell = (Selection.ColumnWidth + 0.71) / 4.45 * 10
  bNok = True
  Do While bNok
    strAntwort = InputBox( _
                    Aktuelle Spaltenbreite =  & Format(dAktuell, ###0.00 mm) & _
                    String(4, 13) & Spaltenbreite in mm angeben:, _
                    Neue Spaltenbreite festlegen, _
                    Format(dAktuell, ###0.00))
    If strAntwort =  Then Exit Sub
    On Error Resume Next: dAntwort = strAntwort: Err.Clear: On Error GoTo 0
    sTmp = dAntwort
    If sTmp = strAntwort Then bNok = False Else MsgBox Wert unzulässig:  & strAntwort
  Loop
  
 ->*** Zeilenhöhe
  dFaktor = 2.8
  dAktuell = Selection.RowHeight / dFaktor
  bNok = True
  Do While bNok
    strAntwort = InputBox( _
                    Aktuelle Zeilenhöhe =  & Format(dAktuell, ###0.00 mm) & _
                    String(4, 13) & Zeilenhöhe in mm angeben:, _
                    Neue Zeilenhöhe festlegen, _
                    Format(dAktuell, ###0.00))
    If strAntwort =  Then Exit Sub
    On Error Resume Next: dAntwort = strAntwort: Err.Clear: On Error GoTo 0
    sTmp = dAntwort
    If sTmp = strAntwort Then bNok = False Else MsgBox Wert unzulässig:  & strAntwort
  Loop
  Selection.RowHeight = dFaktor * dAntwort

End Sub
 
  • #5
Hallo Matjes,

vorweg, für deine Mühe herzlichen Dank.

Es klappt mit der Eingabe Menü => Format bestens.

Nur muss im Makro ein Fehler sein, denn die Breite der Zellen werden nicht geändert.

Mit der Zeilenhöhe keine Probleme.

Da du den ursprünglichen Code etwas geändert hast, finde ich den Fehler nicht !!!

Ich bitte dich, den Code nochmal anzuschauen,

bis dann
 
  • #6
hubs, da ist beim Editieren eine Zeile flöten gegangen. Tschuldige  ::)

Zeile ist gekennzeichnet.

Gruß Matjes :)
Code:
Option Explicit
 ->Spaltenbreite 10,38 Spaltenhöhe 12,75 Druckertreiber Canon S400

Private Const c_MENUBUTTON_NAME = Spalten_Zeilen_mm

'************************************************************************
Public Sub Auto_Open()
 ->Startroutine des Add-In:
 -> 1) Menu-Eintrag erstellen
  Dim myMenuBar As Office.CommandBarPopup
  Dim myMenuButton As Office.CommandBarButton
  On Error Resume Next
 ->Im Hauptmenue->Format' finden
  Set myMenuBar = Application.CommandBars(1).FindControl(, 30006)
 ->Button anfügen
  Set myMenuButton = myMenuBar.Controls.Add(msoControlButton)
 ->Button benennen
  myMenuButton.Caption = c_MENUBUTTON_NAME
  myMenuButton.BeginGroup = True
 ->Button mit Hauptprogramm verknüpfen
  myMenuButton.OnAction = ThisWorkbook.Name & ! & Format_Spalten_Zeilen_mm
  Set myMenuButton = Nothing: Set myMenuBar = Nothing
  On Error GoTo 0
End Sub
'************************************************************************
Public Sub Auto_Close()
 ->Enderoutine des Add-In:
 -> 1) Menu-Eintrag löschen
  Dim myMenuBar As Office.CommandBarPopup
    
  On Error Resume Next
 ->Im Hauptmenue->Format' finden
  Set myMenuBar = Application.CommandBars(1).FindControl(, 30006)
 ->Button löschen
  myMenuBar.Controls(c_MENUBUTTON_NAME).Delete
  Set myMenuBar = Nothing
  On Error GoTo 0
End Sub
'************************************************************************
Public Sub Format_Spalten_Zeilen_mm()
  Dim dAktuell As Double, dFaktor As Double
  Dim strAntwort As String, dAntwort As Double
  Dim sTmp As String, bNok As Boolean

  If vbYes <> MsgBox( _
                Sollen Zeilen und Spalten geändert werden ?, _
                vbYesNo + vbQuestion + vbDefaultButton1, _
                Zeilenhöhe und Spaltenbreite ändern) _
              Then Exit Sub

 ->*** Spaltenbreite
  dAktuell = (Selection.ColumnWidth + 0.71) / 4.45 * 10
  bNok = True
  Do While bNok
    strAntwort = InputBox( _
                    Aktuelle Spaltenbreite =  & Format(dAktuell, ###0.00 mm) & _
                    String(4, 13) & Spaltenbreite in mm angeben:, _
                    Neue Spaltenbreite festlegen, _
                    Format(dAktuell, ###0.00))
    If strAntwort =  Then Exit Sub
    On Error Resume Next: dAntwort = strAntwort: Err.Clear: On Error GoTo 0
    sTmp = dAntwort
    If sTmp = strAntwort Then bNok = False Else MsgBox Wert unzulässig:  & strAntwort
  Loop
  Selection.ColumnWidth = -0.71 + 4.45 * dAntwort / 10->### die fehlte
  
 ->*** Zeilenhöhe
  dFaktor = 2.8
  dAktuell = Selection.RowHeight / dFaktor
  bNok = True
  Do While bNok
    strAntwort = InputBox( _
                    Aktuelle Zeilenhöhe =  & Format(dAktuell, ###0.00 mm) & _
                    String(4, 13) & Zeilenhöhe in mm angeben:, _
                    Neue Zeilenhöhe festlegen, _
                    Format(dAktuell, ###0.00))
    If strAntwort =  Then Exit Sub
    On Error Resume Next: dAntwort = strAntwort: Err.Clear: On Error GoTo 0
    sTmp = dAntwort
    If sTmp = strAntwort Then bNok = False Else MsgBox Wert unzulässig:  & strAntwort
  Loop
  Selection.RowHeight = dFaktor * dAntwort

End Sub
 
  • #7
Hallo Matjes,

wie schon gesagt, besten Dank.

Diesmal alles in Butter.  :1

Wünsche noch einen schönen Abend.
 
Thema:

Add-In erstellen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben