Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
560to564
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
560to564
560to564
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Arbeitsblatt ohne Symbolleisten anzeigen

Arbeitsblatt ohne Symbolleisten anzeigen
03.02.2005 12:44:34
Josef
Hallo,
gibt es eine Möglichkeit ein Excel Arbeitsblatt ohne Symbolleisten anzeigen zu lassen. Ich möchte damit erreichen das der Benutzer das Blatt nur mit einem Makro Speichern kann.
Ohne Zugriff auf die Menüleisten.
Damit das Blatt garantiert mit einem festgelegten Namen abgespeichert wird.
Danke schon mal für die Hilfe
Josef

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsblatt ohne Symbolleisten anzeigen
03.02.2005 12:48:02
Matthias
Hallo Josef,
da ist es aber besser, du fängst das Speichern mit der BeforeSave-Prodedur ab:
In DieseArbeitsmappe:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
'Hier Deine Speicher-Routine
End Sub
Dann kann der Benutzer den gewohnet Save-Button weiterbenutzen.
Gruß Matthias
AW: Arbeitsblatt ohne Symbolleisten anzeigen
03.02.2005 15:06:32
Josef
Hallo Matthias,
danke erst einmal für die schnelle Antwort,
das Problem ist nur ich kann das Blatt nur mit dem Befehl save as Speichern. Da ich den Pfad zum Speicherplatz immer mit angeben muss (Variabel). Und das wir dann wenn ich es so wie unten versuche unterbunden.
Josef

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
Application.Dialogs(xlDialogSaveAs).Show ActiveSheet.[b1].Value
End Sub

Anzeige
AW: Arbeitsblatt ohne Symbolleisten anzeigen
03.02.2005 15:15:14
Matthias
Hallo Josef,
aber mit dem Dialog zwingst du den User doch zu gar nix, du schlägst nur einen Namen vor!
Mit Cancel=True wird der Vorgang (hier Speichern) abgebrochen, d.h. du musst für das Speichern selbst sorgen.
Wenn du es weglässt, wird von Excel selbst gespeichert.
Gruß Matthias
AW: Arbeitsblatt ohne Symbolleisten anzeigen
03.02.2005 15:38:07
Josef
Hallo Matthias,
also mein Gedankengang war folgender, da ich den Pfad zum Speichern immer mit angeben muss der name von der Arbeitsmappe aber ein bestimmter sein soll der sich aus der Arbeitsmappe generiert. Wollte ich das mit dem Save as machen.
Damit der Benutzer aber Garantiert den Save Butten benutzt damit halt der Name vorgeschlagen wird. Wollte ich die Menüleiste unzugänglich machen.
Ich bin nun auch kein Profi für Excel, und weiß nun auch nicht ob man das auch anders regeln kann.
Sorry, falls wir aneinander vorbei schreiben ... :-)
Josef
Anzeige
AW: Arbeitsblatt ohne Symbolleisten anzeigen
03.02.2005 15:40:20
Matthias
Hallo Josef,
Was hältst du davon?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim s, i
Dim pfad As String, fn As String
Cancel = True
s = Application.GetSaveAsFilename(ActiveSheet.[b1].Value, "Excel-Dateien,*.xls", , "Ordner auswählen!")
If s = False Then Exit Sub 'Abbrechen geklickt
i = InStrRev(s, "\")
pfad = Left(s, i) 'Pfad isolieren
fn = Mid(s, i + 1) 'Datei isolieren
fn = Left(fn, Len(fn) - 4) 'und .xls abschneiden
If fn <> [b1].Value Then
MsgBox "Der Dateiname bleibt aber bei " & [b1].Value & "!"
fn = [b1].Value
End If
Application.EnableEvents = False
ThisWorkbook.SaveAs filename:=fn
Application.EnableEvents = True
End Sub
Gruß Matthias
Anzeige
AW: Arbeitsblatt ohne Symbolleisten anzeigen
03.02.2005 15:55:05
Matthias
Hallo Josef,
Oder, noch etwas verfeinert:
in "DieseArbeitsmappe":
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim pfad As String, fn As String
fn = ActiveSheet.[B1]
Cancel = True
pfad = Ordnerauswahl(ThisWorkbook.Path, "Bitte Speicherort für " & fn & " auswählen")
If pfad = "" Then Exit Sub 'Abbrechen geklickt
If Right(pfad, 1) <> "\" Then pfad = pfad & "\"
On Error Resume Next
Application.EnableEvents = False
MsgBox pfad & fn
ThisWorkbook.SaveAs Filename:=pfad & fn
If Err.Number > 0 Then
MsgBox "Datei konnte nicht gespeichert werden!", vbCritical, "Fehler beim Speichern"
Err.Clear
Else
MsgBox "Datei wurde unter " & ThisWorkbook.FullName & " gespeichert."
End If
Application.EnableEvents = True
End Sub

und in ein normales Modul:
Private Type BROWSEINFO
hWndOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpFn As Long
lParam As String
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (ByRef lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Const WM_USER As Long = &H400
Private Const BIF_RETURNONLYFSDIRS As Long = 1
Private Const BFFM_INITIALIZED As Long = 1
Private Const BFFM_SETSELECTION As Long = (WM_USER + 102)
Private Const MAX_PATH As Long = 260
Public Function GetFolderInternal(ByVal Caption As String, _
ByVal default As String) As String
Dim BI As BROWSEINFO
Dim ListIdx As Long
Dim Path As String
With BI
.lpszTitle = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpFn = MakeFktnPtr(AddressOf BrowseCallbackProc)
.lParam = default
End With
Path = String$(MAX_PATH + 1, vbNullChar)
ListIdx = SHBrowseForFolder(BI)
If SHGetPathFromIDList(ListIdx, Path) Then
GetFolderInternal = Left$(Path, InStr(Path, vbNullChar) - 1)
End If
CoTaskMemFree ListIdx
End Function
Private Function BrowseCallbackProc(ByVal hWnd As Long, _
ByVal Msg As Long, _
ByVal lParam As Long, _
ByVal lpData As Long) As Long
On Error Resume Next
If Msg = BFFM_INITIALIZED Then
SendMessage hWnd, BFFM_SETSELECTION, 1&, lpData
End If
End Function
Private Function MakeFktnPtr(ByVal FktnPtr As Long) As Long
MakeFktnPtr = FktnPtr
End Function
Function Ordnerauswahl(default As String, Optional Msg)
If IsMissing(Msg) Then Msg = "Ordner auswählen:"
Dim Verzeichnis As String
Dim verzeichnis2 As String
Verzeichnis = default
verzeichnis2 = GetFolderInternal(Msg, Verzeichnis)
Ordnerauswahl = verzeichnis2
End Function
(letzerer Code ist nicht von mir, hab ich irgendwo aus dem Web)
Gruß Matthias
Anzeige
AW: Arbeitsblatt ohne Symbolleisten anzeigen
03.02.2005 15:55:55
Josef
Hallo Matthias,
ja das ist PERFEKT..... :-)
Genau so etwas wollte ich eigentlich erreichen.
Danke noch einmal für die super schnelle Hilfe.
Josef

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige