Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel abspeichern

Frage Entwicklung VB for Applications

Mitglied: Cadsys-Chemnitz

Cadsys-Chemnitz (Level 1) - Jetzt verbinden

31.03.2009, aktualisiert 15:59 Uhr, 4600 Aufrufe, 12 Kommentare

Wenn ich mit meinem VB Scribt meine Excel Datei abspeichern will kommt immer die Nachfrage ober die Datei überschreiben soll weil diese schon vorhanden ist.

Wie kann ich diese Meldung unterdrücken? So das er speichert ohne Nahcfrage.

Mein Speichercode:

01.
 
02.
            NB.ActiveWorkbook.Saved = True 
03.
            NB.ActiveWorkbook.SaveAs("C:\Data\Version.xls") 
04.
            NB.ActiveWorkbook.Close() 
05.
 
Mitglied: 76109
31.03.2009 um 16:31 Uhr
Hallo Cadsys-Chemnitz,

Wenn Datei schon existiert, dann reicht ".Save" und wenn es nicht sicher ist, dann in etwa so:

01.
Dim fso as Object, vPath As String 
02.
     
03.
vPath = "C:\Data\Version.xls" 
04.
     
05.
Set Fso = CreateObject("Scripting.FileSystemObject") 
06.
 
07.
With NB.ActiveWorkbook 
08.
   If Fso.FileExists(vPath) Then .Save Else .SaveAs vPath 
09.
  .Close 
10.
  .Saved = True 
11.
 End With
Gruß Dieter
Bitte warten ..
Mitglied: Seelbreaker
31.03.2009 um 16:38 Uhr
Ich weiß es zwar, nicht aber aus Neugier... in Zeile 3 steht ja "SaveAs" So heißt ja auch der Speichern Button in Office, der dich vorher einen Pfad auswählen lässt bzw. dir die Möglichkeit gibt einen neuen Dateinamen anzugeben um beispielsweise ein Kopie zu speichern.

Würde:

NB.ActiveWorkbook.Save

auch zum Ziel führen? Oder gibt es Befehl "Save" so nicht wie bei Office wo gnadenlos überschrieben wird?

Mit freundlichen Grüßen
Seelbreaker
Bitte warten ..
Mitglied: Cadsys-Chemnitz
31.03.2009 um 16:44 Uhr
Idee ist nicht schlecht leider kommt die Meldung immer noch.

Detei bereits vorhanden. Soll diese überschrieben werden ...


Ich hab mal unten das ganze Script mit deinem Eingebauten Code mit aufgeführt.


01.
 
02.
        Dim NB As Excel.Application 
03.
        Dim z As Integer 
04.
        Dim verPath As String 
05.
        Dim fso As FileSystemObject 
06.
 
07.
        If Button1.Enabled = True Then 
08.
            NB = CreateObject("Excel.Application") 
09.
            NB.Workbooks.Open("C:\Data\Version.ini") 
10.
            z = NB.ActiveWorkbook.ActiveSheet.Range("C1").Value + 5 
11.
            NB.ActiveWorkbook.ActiveSheet.Range("E" & z).Value = TextBox1.Text 
12.
            NB.ActiveWorkbook.ActiveSheet.Range("F" & z).Value = TextBox2.Text 
13.
            NB.ActiveWorkbook.ActiveSheet.Range("B" & z).Value = TextBox3.Text 
14.
            NB.ActiveWorkbook.ActiveSheet.Range("C" & z).Value = TextBox4.Text 
15.
            If CheckBox1.CheckState = CheckState.Checked Then 
16.
                NB.ActiveWorkbook.ActiveSheet.Range("D" & z).Value = "1" 
17.
            Else 
18.
                NB.ActiveWorkbook.ActiveSheet.Range("D" & z).Value = "0" 
19.
            End If 
20.
 
21.
            verPath = "C:\Data\Version.ini" 
22.
            Fso = CreateObject("Scripting.FileSystemObject") 
23.
 
24.
            With NB.ActiveWorkbook 
25.
                .Saved = True 
26.
                If Fso.FolderExists(verPath) Then .Save() Else .SaveAs(verPath) 
27.
                .Close() 
28.
            End With 
29.
        End If 
30.
 
Bitte warten ..
Mitglied: Cadsys-Chemnitz
31.03.2009 um 16:48 Uhr
Doch save gibt es aber bei Beiden fragt er nach ob er überschreiben soll ...

übrigens das würde er im Office auch tun.



Ich schätze man muss irgendwie einen Parameter setzen das die nachfrage einfach ignoriert wird, weiss nur nicht wie.
Bitte warten ..
Mitglied: 76109
31.03.2009 um 16:48 Uhr
Hallo nochmal,

ja, habe Code nochmal geändert. Müsste so gehen?

Gruß Dieter
Bitte warten ..
Mitglied: 76109
31.03.2009 um 16:51 Uhr
Bitte warten ..
Mitglied: Cadsys-Chemnitz
31.03.2009 um 17:03 Uhr
Also hiernochmal mit Deinem abgeänderten Code.

Selbe Fehlermeldung ...

01.
 
02.
        Dim NB As Excel.Application 
03.
        Dim z As Integer 
04.
 
05.
        If Button1.Enabled = True Then 
06.
            NB = CreateObject("Excel.Application") 
07.
            NB.Workbooks.Open("C:\Data\Version.ini") 
08.
            z = NB.ActiveWorkbook.ActiveSheet.Range("C1").Value + 5 
09.
            NB.ActiveWorkbook.ActiveSheet.Range("E" & z).Value = TextBox1.Text 
10.
            NB.ActiveWorkbook.ActiveSheet.Range("F" & z).Value = TextBox2.Text 
11.
            NB.ActiveWorkbook.ActiveSheet.Range("B" & z).Value = TextBox3.Text 
12.
            NB.ActiveWorkbook.ActiveSheet.Range("C" & z).Value = TextBox4.Text 
13.
            If CheckBox1.CheckState = CheckState.Checked Then 
14.
                NB.ActiveWorkbook.ActiveSheet.Range("D" & z).Value = "1" 
15.
            Else 
16.
                NB.ActiveWorkbook.ActiveSheet.Range("D" & z).Value = "0" 
17.
            End If 
18.
 
19.
            Dim fso As Object, vPath As String 
20.
 
21.
            vPath = "C:\\Data\Version.ini" 
22.
 
23.
            fso = CreateObject("Scripting.FileSystemObject") 
24.
 
25.
            With NB.ActiveWorkbook 
26.
                If fso.FileExists(vPath) Then .Save() Else .SaveAs(vPath) 
27.
                .Close() 
28.
                .Saved = True 
29.
            End With 
30.
        End If 
31.
 
Bitte warten ..
Mitglied: 76109
31.03.2009 um 17:10 Uhr
Hallo,

Debuggerfehler oder Save-Fehler?

Die Klammern hinter Save, Close und Saved "..." gehören weg. Gibt sonst Debuggerfehler

Die Lösung von "Xerebus" mit Display.Alerts müsste aber auch funktionieren.

Allerdings glaube ich nicht, das Du die Datei als *.ini abspeichern kannst?

Gruß Dieter
Bitte warten ..
Mitglied: Xerebus
31.03.2009 um 17:18 Uhr
Um die Abfrage zum "Überschreiben" zu umgehen,
setze einfach DisplayAlerts = False


Sub Speichern()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "..."
Application.DisplayAlerts = True
End Sub


Gefunden bei.
http://www.digital-inn.de/ms-excel/4834-speichern-per-macro-problem.htm ...
Bitte warten ..
Mitglied: Cadsys-Chemnitz
01.04.2009 um 08:25 Uhr
Danke erstmal an alle die mitgeholfen haben bei der Lösung, diese sieht jetzt folgendermaßen aus.

01.
 
02.
        Dim NB As Excel.Application 
03.
        Dim z As Integer 
04.
 
05.
        If Button1.Enabled = True Then 
06.
            NB = CreateObject("Excel.Application") 
07.
            NB.Workbooks.Open("C:\Data\Version.ini") 
08.
            z = NB.ActiveWorkbook.ActiveSheet.Range("C1").Value + 5 
09.
            NB.ActiveWorkbook.ActiveSheet.Range("E" & z).Value = TextBox1.Text 
10.
            NB.ActiveWorkbook.ActiveSheet.Range("F" & z).Value = TextBox2.Text 
11.
            NB.ActiveWorkbook.ActiveSheet.Range("B" & z).Value = TextBox3.Text 
12.
            NB.ActiveWorkbook.ActiveSheet.Range("C" & z).Value = TextBox4.Text 
13.
 
14.
            If CheckBox1.CheckState = CheckState.Checked Then 
15.
                NB.ActiveWorkbook.ActiveSheet.Range("D" & z).Value = "1" 
16.
            Else 
17.
                NB.ActiveWorkbook.ActiveSheet.Range("D" & z).Value = "0" 
18.
            End If 
19.
 
20.
            NB.Application.DisplayAlerts = False 
21.
            NB.ActiveWorkbook.Saved = True 
22.
            NB.ActiveWorkbook.SaveAs("C:\Data\Version.ini") 
23.
            NB.ActiveWorkbook.Close() 
24.
            NB.Application.DisplayAlerts = True 
25.
        End If 
26.
 
So funktiert es wie ich es wollte und keine Fehlermeldung entsteht mehr.

Komischerweise nach einbau der Application.DisplayAlerts = False funktioniert diese Version nicht mehr.

01.
            Dim fso As Object, vPath As String 
02.
 
03.
            vPath = "C:\\Data\Version.ini" 
04.
 
05.
            fso = CreateObject("Scripting.FileSystemObject") 
06.
 
07.
            With NB.ActiveWorkbook 
08.
                If fso.FileExists(vPath) Then .Save() Else .SaveAs(vPath) 
09.
                .Close() 
10.
                .Saved = True 
11.
            End With
ist aber ja nicht weiter tragisch


Zu Didi 1954 :

01.
 
02.
Die Klammern hinter Save, Close und Saved "..." gehören weg. Gibt sonst Debuggerfehler 
03.
 
Negativ, die setzt er automatisch. Man kann Sie gar nicht wegmachen , wenn man es erzwingt geht das Programmm auch nicht mehr. Frag mich jetzt nicht warum.


Und besonderen Dank an Xerebus, dein Beitrag war das Puzzle was gefehlt hat.

Danke

Mit freundlichen Grüßen Tino
Bitte warten ..
Mitglied: Cadsys-Chemnitz
01.04.2009 um 08:27 Uhr
PS:

Ach und natürlich kann man Sie als .ini speichern das ist Excel egal. Hab in der Datei Passwörter liegen und wollte das nicht so offensichtlich machen.

Ausserdem kann ich die Excel-Datei dann auch mit Passwort sichern sodas niemand so einfach an die Passwörter kommt und ich aber gut damit arbeiten kann.
Bitte warten ..
Mitglied: 76109
01.04.2009 um 09:06 Uhr
Hallo Cadsys-Chemnitz,

manchmal sieht man vor lauter Wald die Bäume nicht.

Der Fehler ist, dass der Close-Befehl natürlich erst nach dem
Saved = True stehen muss, sonst macht Saved keinen Sinn.
Display.Alerts wird nicht gebraucht

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

Microsoft Office
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

Microsoft Office
Prüfung von Intervallen und Textausgabe in Excel (2)

Frage von traller zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...