Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Grundsatzfrage Add-In

Forumthread: Grundsatzfrage Add-In

Grundsatzfrage Add-In
ChrisL
Liebe Kollegen/innen
Ich habe eine spezielle Speicher-Prozedur per Makro programmiert. Diese möchte ich gerne über einen neuen Menupunkt mehreren Usern zur Verfügung stellen.
Mit Add-Ins kenne ich mich leider schlecht aus und wäre deshalb um einen grundsätzlichen Wegbeschrieb dankbar.
Soviel ist mir mal klar. Zusätzlich muss ich den Menu-Punkt programmieren und vermutlich per Workbook_Open Ereignis in die Applikation einfügen. Die Datei wäre dann wohl als *.xla zu benennen.
Nun spricht ja der neu kreierte Menu-Punkt das Makro an (OnAction). Aber wo liegt das Makro bzw. wie bringe ich es auf den Computer der jeweiligen User. Hätte nötigenfalls auch ein gemeinsames Server-Laufwerk zur Verfügung, wo ich den Code zentral ablegen kann.
Oder studiere ich vielleicht zu weit bzw. habe ich allenfalls die Funktion von Add-Ins fehlinterpretiert.
Im Voraus besten Dank und Gruss
Chris
Hier übrigens noch das Makro...
Option Explicit

Sub CSVExport()
Dim sFile As Variant, msgAntwort As Variant
Dim Daten As Range, Zeile As Object, Zelle As Object
Dim strTemp As String
With ActiveSheet
sFile = Application.GetSaveAsFilename(InitialFilename:="Location Management " & .Range("A2") & ".csv", _
FileFilter:="CSV-Datei (*.csv), *.csv")
If sFile = False Then Exit Sub
If Dir(sFile) <> "" Then
msgAntwort = MsgBox("Die Datei '" & sFile & "' besteht bereits. Möchten Sie die bestehende Datei ersetzen?", _
vbQuestion + vbYesNo, "Warnung")
If msgAntwort = vbNo Then Exit Sub
End If
Set Daten = .UsedRange
Close
Open sFile For Output As #1
For Each Zeile In Daten.Rows
If Zeile.Row > .Range("A65536").End(xlUp).Row Then Exit Sub
For Each Zelle In Zeile.Cells
If (Zelle.Column = 4 Or Zelle.Column = 5) And Zelle <> "" Then
strTemp = strTemp & CStr(Format(Zelle, "DD") & "/" & Format(Zelle, "MM") _
& "/" & Format(Zelle, "YY")) & ";"
Else
If Zelle.Column >= 22 And Zelle.Column <= 38 And Zelle <> "" Then
strTemp = strTemp & CStr(Format(Zelle, "0")) & ";"
Else
strTemp = strTemp & CStr(Zelle.Text) & ";"
End If
End If
Next Zelle
Print #1, strTemp
strTemp = ""
Next Zeile
Close #1
End With
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Grundsatzfrage Add-In
Russi
Hallo Chris!
Du sprichst in Deinem Makro das ActiveSheet an. Das ist völlig korrekt, da damit immer das aktuelle Tabellenblatt angesprochen wird. Das Tabellenblatt eines Addins ist unsichtbar.
Das Makro musst Du in einem neu eingefügten Modul unterbringen. Dann sollte es funktionieren.
Wenn nicht - sag Bescheid.
Viele Grüße
Russi
Anzeige
AW: Grundsatzfrage Add-In
ChrisL
Hallo Russi
Vielen Dank. Es hat alles perfekt funktioniert.
Nachstehend noch den vollständigen Code fürs Archiv.
Gruss
Chris

Private Sub Workbook_Open()
Dim cbmCommandBarMenu As CommandBar
Dim cbmDemoMenu As CommandBarPopup
Dim cbmCommandBarMenuCascade As CommandBarPopup
' Clear the way for new menu.
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar") _
.Controls("&Location Management").Delete
' Identify built-in menu bar to work with.
Set cbmCommandBarMenu = Application _
.CommandBars("Worksheet Menu Bar")
' Add the new menu.
With cbmCommandBarMenu.Controls
Set cbmDemoMenu = _
.Add(Type:=msoControlPopup)
' Set caption for new menu.
With cbmDemoMenu
.Caption = "&Location Management"
.Visible = True
' Add single menu item and set properties.
With .Controls.Add(msoControlButton)
.OnAction = "CSVExport"
.Caption = "&CSV Export"
.Visible = True
End With
End With
End With
End Sub

Option Explicit
Sub CSVExport()
Dim sFile As Variant, msgAntwort As Variant
Dim Daten As Range, Zeile As Object, Zelle As Object
Dim strTemp As String
On Error GoTo errorhandler
With ActiveSheet
sFile = Application.GetSaveAsFilename(InitialFilename:="Location Management " & .Range("A2") & ".csv", _
FileFilter:="CSV-Datei (*.csv), *.csv")
If sFile = False Then Exit Sub
If Dir(sFile) > "" Then
msgAntwort = MsgBox("Die Datei '" & sFile & "' besteht bereits. Möchten Sie die bestehende Datei ersetzen?", _
vbQuestion + vbYesNo, "Warnung")
If msgAntwort = vbNo Then Exit Sub
End If
Set Daten = .UsedRange
Close
Open sFile For Output As #1

For Each Zeile In Daten.Rows

If Zeile.Row > .Range("A65536").End(xlUp).Row Then
MsgBox "Die Datei wurde erfolgreich exportiert.", vbInformation, "Export erfolgreich"
Exit Sub
End If

For Each Zelle In Zeile.Cells
If (Zelle.Column = 4 Or Zelle.Column = 5) And Zelle > "" Then
strTemp = strTemp & CStr(Format(Zelle, "DD") & "/" & Format(Zelle, "MM") _
& "/" & Format(Zelle, "YY")) & ";"
Else
If Zelle.Column >= 22 And Zelle.Column = 38 And Zelle > "" Then
strTemp = strTemp & CStr(Format(Zelle, "0")) & ";"
Else
strTemp = strTemp & CStr(Zelle.Text) & ";"
End If
End If
Next Zelle

Print #1, strTemp
strTemp = ""

Next Zeile
Close #1
End With
MsgBox "Die Datei wurde erfolgreich exportiert.", vbInformation, "Export erfolgreich"
Exit Sub
errorhandler:
MsgBox "Es ist ein Fehler aufgetreten. Die Datei konnte nicht vollständig exportiert werden.", vbCritical, "Fehlermeldung"
End Sub
Anzeige
AW: Grundsatzfrage Add-In
Bernhard
Ich würde das in der personl.xla unterbringen. Makro zentral speichern, von jedem Arbeitsplatz aus in die personl.xla importieren.
Falls diese nicht vorhanden ist:
Extras, Makros aufzeichnen.... Speichern in: Persönliche Arbeitsmappe
irgendwas aufzeichenen, Makrorecorder beenden. Nu steht die personl.xla zur Verfügung und wird bei jedem Start geladen. Aber das musst Du halt bei jedem Arbeitsplatz (User) einmal machen.
Bernhard
Anzeige
AW: Grundsatzfrage Add-In
ChrisL
Hallo Bernhard
Danke auch Dir. Inzwischen habe ich den Code schon fertig gestellt (siehe anderer Thread) und es funktioniert, weshalb ich jetzt nicht mehr ändere.
Dein Input finde ich aber trotzdem gut und ich bin sicher dass ich dies in einem anderen Zusammenhang wieder verwenden kann.
Gruss
Chris
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige