Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1724to1728
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
Ordner erstellen und Tabs darin abspeichern
21.11.2019 16:37:45
Thomas
Hallo Excel-Freund,
versuche schon länger den Code so umzuschreiben das er vorher einen Ordner erstellt den Namen in A1 Tabelle 1 als Namen nimmt und dann die Tabs darin abspeichert.
Kann mir da bitte jemand behilflich sein?

Private Sub CommandButton1_Click()
Dim i As Long
Application.ScreenUpdating = False
For i = 2 To Worksheets.Count
Worksheets(i).Copy
With ActiveSheet
.Cells.Copy
.Range("A1").PasteSpecial Paste:=xlPasteValues
.Parent.SaveAs Filename:=ThisWorkbook.Path & "\" & _
ActiveSheet.Name & ".xls", FileFormat:=xlNormal
Application.DisplayAlerts = False
.Parent.Close
End With
Next i
End Sub

Danke.
Gruß Thomas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner erstellen und Tabs darin abspeichern
21.11.2019 17:10:16
UweD
Hallo
so?
    Dim LW As String, OD As String, i As Long
    LW = ThisWorkbook.Path & "\"
    OD = Worksheets("Tabelle1").Range("A1")
    If Dir(LW & OD, vbDirectory) = "" Then
        MkDir LW & OD
    End If
    Application.ScreenUpdating = False
    
    For i = 2 To Worksheets.Count
        Worksheets(i).Copy
        With ActiveSheet
            .UsedRange.Value = .UsedRange.Value
        End With
        With ActiveWorkbook
            Application.DisplayAlerts = False
            .SaveAs Filename:=LW & OD & "\" & _
                ActiveSheet.Name & ".xls", FileFormat:=xlNormal
            .Close True
            Application.DisplayAlerts = True
            
        End With
    Next i

LG UweD
Anzeige
AW: Ordner erstellen und Tabs darin abspeichern
21.11.2019 17:15:04
Nepumuk
Hallo Thomas,
teste mal:
Option Explicit

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long

Private Sub CommandButton1_Click()
    Dim i As Long
    Dim strFolederPath As String
    strFolederPath = Worksheets("Tabelle1").Cells(1, 1).Text
    If Right$(strFolederPath, 1) <> "\" Then strFolederPath = strFolederPath & "\"
    Call MakeSureDirectoryPathExists(strFolederPath)
    Application.ScreenUpdating = False
    For i = 2 To Worksheets.Count
        Worksheets(i).Copy
        With ActiveSheet
            .Cells.Copy
            .Range("A1").PasteSpecial Paste:=xlPasteValues
            .Parent.SaveAs Filename:=strFolederPath & _
                ActiveSheet.Name & ".xls", FileFormat:=xlNormal
            .Parent.Close
        End With
    Next i
End Sub

Gruß
Nepumuk
Anzeige
AW: Ordner erstellen und Tabs darin abspeichern
21.11.2019 17:36:03
Thomas
Danke euch für die schnelle Hilfe. Funktioniert schonmal supi :)
Wie könnte das aussehen, wenn man ein pfad angeben möchte.
Danke und Gruß
Thomas
AW: Ordner erstellen und Tabs darin abspeichern
21.11.2019 17:39:57
Nepumuk
Hallo Thomas,
dann schreib mal einen Pfad in A1 und teste mit meinem Code.
Gruß
Nepumuk
Fehlermeldung
21.11.2019 19:07:25
Thomas
Hallo Nepumuk,
ich danke dir erstmal für die Hilfe.
Leider funzt der Code nicht...Fehlermeldung:
"Der Code in diesem Projekt muss für die Anwendung auf 64 Bit Systemen aktualisiert werden. Überarbeiten und aktualisieren Sie Declare-Anweisungen, und makieren sie sie mit PtrSafe-Atrtribut."
Was könnte das sein?
Danke dir.
Gruß Thomas
Anzeige
AW: Fehlermeldung
21.11.2019 19:22:34
Nepumuk
Hallo Thomas,
ändere die Funktion so:
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long

Gruß
Nepumuk
Anzeige
AW: Fehlermeldung
21.11.2019 19:23:13
volti
Hallo Thomas,
auf 64-Bit Systemen müssen API-Deklarationen mit dem Schlüssel PtrSafe versehen werden und teilweise Long durch LongPtr ersetzt werden, wie es ja auch in der Fehlermeldung steht.
Versuch es mal damit:
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
viele Grüße
Karl-Heinz
A1 ersetzen durch Ablagepfad
21.11.2019 20:56:34
Thomas
Hallo Nepumuk,
muss mich echt für die Geduld bedanken.
Folgendes:
Option Explicit
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
Private Sub CommandButton1_Click()
Dim i As Long
Dim strFolederPath As String
strFolederPath = Worksheets("Tabelle1").Cells(1, 1).Text
If Right$(strFolederPath, 1)  "\" Then strFolederPath = strFolederPath & "\"
Call MakeSureDirectoryPathExists(strFolederPath)
Application.ScreenUpdating = False
For i = 2 To Worksheets.Count
Worksheets(i).Copy
With ActiveSheet
.Cells.Copy
.Range("C:\Users\xyz\Desktop\Test\Abholordner").PasteSpecial Paste:=xlPasteValues
.Parent.SaveAs Filename:=strFolederPath & _
ActiveSheet.Name & ".xls", FileFormat:=xlNormal
.Parent.Close
End With
Next i
End Sub
bei dem Part .Range("C:\Users\....usw. kommt jetzt ein Laufzeitfehler.
Hast du das so gemeint mit dem ersetzen?
Gruß Thomas
Anzeige
AW: A1 ersetzen durch Ablagepfad
22.11.2019 07:49:04
Nepumuk
Hallo Thomas,
wie kommst du auf die Idee da den Pfad reinzuschreiben? Lass das auf A1. Der Pfad muss in Zelle A1 der Tabelle 1.
Gruß
Nepumuk
AW: A1 ersetzen durch Ablagepfad
22.11.2019 08:37:07
Thomas
Guten Morgen Nepumuk,
dann hab ich dich falsch verstanden. sorry.
Stimmt jetzt funktionierte es, aber ich wollte eigentlich ein Pfad angeben wo der Ordner mit dem Namen in A1 erstellt wird.
geht das überhaupt?
Danke und Gruß
Thomas
AW: A1 ersetzen durch Ablagepfad
22.11.2019 09:06:56
Nepumuk
Hallo Thomas,
das könntest du so machen:
Option Explicit

Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long

Private Sub CommandButton1_Click()
    Const FOLDER_PATH As String = "C:\Users\xyz\Desktop\Test\Abholordner\" 'Anpassen !!!
    Dim i As Long
    Dim strFolder As String
    strFolder = FOLDER_PATH & Worksheets("Tabelle1").Cells(1, 1).Text
    If Right$(strFolder, 1) <> "\" Then strFolder = strFolder & "\"
    Call MakeSureDirectoryPathExists(strFolder)
    Application.ScreenUpdating = False
    For i = 2 To Worksheets.Count
        Worksheets(i).Copy
        With ActiveSheet
            .Cells.Copy
            .Range("A1").PasteSpecial Paste:=xlPasteValues
            .Parent.SaveAs Filename:=strFolder & _
                ActiveSheet.Name & ".xls", FileFormat:=xlNormal
            .Parent.Close
        End With
    Next i
End Sub

Gruß
Nepumuk
Anzeige
Vielen Dank
22.11.2019 09:23:01
Thomas
Hallo Nepumuk,
PERFEKT, jetzt funzt es prima...vielen vielen Dank
Schönes Wochenende
Gruß Thomas

191 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige