Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
@fcs: Datenexport in anderes Tabellenblatt
23.05.2018 10:41:52
arek
Hallo fcs,
auf meinen Beitrag (Ich habe einen Button mit einem Macro programmiert, welcher mir wenn man ihn drückt das Tabellenblatt kopiert und dieses in einem Ordner mit "Monat/Jahresangabe" abspeichert und zwar unter dem Dateinamen mit "Name Tabellenblatt/Datum". Jetzt würde ich gerne das Macro noch um folgendes ergänzen: Wenn der Button gedrückt wird, soll nachwievor die Kopie des Tabellenblattes erstellt werden und gleichzeitig soll aber Zelle IM11 in ein Tabellenblatt "Overview" in Zelle B3 gespeichert werden (dieses Tabellenblatt ist Teil eines Excelsheets auf meinem Desktop)...Hat hierzu jemand eine Idee?Vielen Dank!!) vom 09.05.2018 hast du mit folgenden Code geantwortet:
Option Explicit
' Button drücken und Excelsheet erstellen
Private Sub CommandButton1_Click()
Dim sWBName As String
Dim SubPathName As String
Dim NewWBName As String
Dim sh As Shape, lX As Long
GetMoreSpeed True
SubPathName = "\" & Format(Cells(1, 1), "MMMM YYYY") & "\"
NewWBName = Me.Name & "_" & Cells(1, 1).Text & ".xlsx"
UsedRange.Copy
MakeSureDirectoryPathExists (ThisWorkbook.Path & SubPathName)
Workbooks.Add
With ActiveWorkbook
With .Worksheets(1)
.Name = Me.Name
.Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
.Cells(1, 1).PasteSpecial Paste:=xlPasteColumnWidths
' Diagramme auch übernehmen
On Error Resume Next
For Each sh In Me.Shapes
If Left(sh.Name, 6) = "Chart " Then
sh.Copy
.PasteSpecial Format:="Bild (GIF)", Link:=False, DisplayAsIcon:=False
Do While Err.Number  0
Application.Wait (Now + TimeValue("0:00:01"))
Err.Clear
.PasteSpecial Format:="Bild (GIF)", Link:=False, DisplayAsIcon:=False
Loop
lX = lX + 1
.Shapes(lX).Left = sh.Left
.Shapes(lX).Top = sh.Top
End If
Next sh
On Error GoTo 0
Application.CutCopyMode = False
Call subSaveIM11(.Range("IM11").Value)                 '### neu  ####
End With
Application.DisplayAlerts = False
Do While .Worksheets.Count > 1
.Worksheets(2).Delete
Loop
Application.DisplayAlerts = True
sWBName = ThisWorkbook.Path & SubPathName & NewWBName
.SaveAs sWBName
.Close
End With
Application.CutCopyMode = False
MsgBox "Daten gespeichert unter" & vbCrLf & _
sWBName, vbOKOnly + vbInformation
GetMoreSpeed False
End Sub
Sub subSaveIM11(varIM11)
Dim wkbOverview As Workbook
Set wkbOverview = Application.Workbooks.Open(Filename:="C:\Users\arek\Desktop\Beispiel.xlsx")
wkbOverview.Worksheets("Overview").Range("B3").Value = varIM11
wkbOverview.Close savechanges:=True
End Sub Dieser funktioniert auch einwandfrei. Jetzt hätte ich gerne noch folgende Ergänzungen und hoffe du könntest mir nochmals weiterhelfen:
Ich würde gerne die Zellen IM11, IM19, IM24, IM29 in das Tabellenblatt "Overview" in dem Excel Sheet auf dem Desktop speichern und zwar IM11 in Spalte A, IM19 in Spalte B, IM24 in Spalte C und IM29 in Spalte D. Dabei soll bei jedem Drücken des Buttons dann eine neue Zeile entstehen, wo die entsprechenden Daten aus den vier Zellen übertragen werden und zu sehen sind.
Ist das realisierbar? Vielen Dank nochmal für deine Hilfe!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 11:17:56
Werner
Hallo Arek,
ein Versuch, teste mal:
Private Sub CommandButton1_Click()
Dim sWBName As String
Dim SubPathName As String
Dim NewWBName As String
Dim sh As Shape, lX As Long
GetMoreSpeed True
SubPathName = "\" & Format(Cells(1, 1), "MMMM YYYY") & "\"
NewWBName = Me.Name & "_" & Cells(1, 1).Text & ".xlsx"
UsedRange.Copy
MakeSureDirectoryPathExists (ThisWorkbook.Path & SubPathName)
Workbooks.Add
With ActiveWorkbook
With .Worksheets(1)
.Name = Me.Name
.Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
.Cells(1, 1).PasteSpecial Paste:=xlPasteColumnWidths
' Diagramme auch übernehmen
On Error Resume Next
For Each sh In Me.Shapes
If Left(sh.Name, 6) = "Chart " Then
sh.Copy
.PasteSpecial Format:="Bild (GIF)", Link:=False, DisplayAsIcon:=False
Do While Err.Number  0
Application.Wait (Now + TimeValue("0:00:01"))
Err.Clear
.PasteSpecial Format:="Bild (GIF)", Link:=False, DisplayAsIcon:=False
Loop
lX = lX + 1
.Shapes(lX).Left = sh.Left
.Shapes(lX).Top = sh.Top
End If
Next sh
On Error GoTo 0
Application.CutCopyMode = False
.Range("IM11,IM19,IM24,IM29").Copy '### neu ###
Call subSaveIM11                   '### geändert  ####
End With
Application.DisplayAlerts = False
Do While .Worksheets.Count > 1
.Worksheets(2).Delete
Loop
Application.DisplayAlerts = True
sWBName = ThisWorkbook.Path & SubPathName & NewWBName
.SaveAs sWBName
.Close
End With
Application.CutCopyMode = False
MsgBox "Daten gespeichert unter" & vbCrLf & _
sWBName, vbOKOnly + vbInformation
GetMoreSpeed False
End Sub
Sub subSaveIM11(varIM11)
Dim wkbOverview As Workbook
Dim loLetzte As Long '### neu ###
Set wkbOverview = Application.Workbooks.Open(Filename:="C:\Users\arek\Desktop\Beispiel.xlsx")
wkbOverview.Worksheets("Overview").Range("B3").Value = varIM11
'##### neu #####
With wkbOverview.Worksheets("Overview")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
.Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues 'nur Werte
Application.CutCopyMode = False
wkbOverview.Close savechanges:=True
End With
End Sub
Gruß Werner
Anzeige
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 12:13:12
arek
Hi Werner,
danke für die Antwort. Allerdings kommt leider folgende Fehlermeldung bei der Zeile "Call subSaveIM11":Fehler beim Kompilieren Argument ist nicht optional...An was kann das genau liegen?
Kannst du mir hier nochmals weiterhelfen? Vielen Dank nochmal!
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 12:22:57
Werner
Hallo Arek,
änder mal das hier
Sub subSaveIM11(varIM11)
um in
Sub subSaveIM11()
Gruß Werner
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 12:25:42
Gerd
Hi,
es muss da noch in Klammern ein Wert für Overview B3 mit übergeben werden.
Aber warum mische ich mich hier ein, obwohl du lt. Betreff nur Franz (fcs)
fragst.
Gruß Gerd
Anzeige
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 13:43:03
arek
Hi zusammen,
danke für eure Antworten! Ich habe im Betreff deshalb an Franz geschrieben gehabt, weil er mir vor 10 Tagen schon bezüglich meinem ursprünglichen Problem weitergeholfen hat...Ich wollte damit niemanden ausschließen sorry!
Leider habe ich jetzt mit euren Ergänzungen in der Tat das Problem, das ein Wert für Overview B3 übergeben werden muss...Wie kann ich das lösen?
Vielen Dank für eure Antworten nochmals!
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 13:50:59
Werner
Hallo Axel,
schmeiß diese Codezeile einfach raus
wkbOverview.Worksheets("Overview").Range("B3").Value = varIM11
Gruß Werner
Anzeige
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 14:15:04
arek
Hi Werner,
danke für deine Antwort! Jetzt funktioniert es, allerdings werden die 4 Zellen untereinander in Spalte A übertragen...Ich möchte allerdings, dass der Inhalt von Zelle IM11 in Spalte A übertragen wird, der Inhalt von IM19 in Spalte B, der Inhalt von IM24 in Spalte C und der Inhalt von IM29 in Spalte D...Und bei jedem Drücken des Buttons sollen diese Daten in eine neue Zeile untereinander eingefügt werden.
Sorry das meine Erklärungen so kompliziert sind!!
Und nochmals danke für die Antworten von euch!
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 14:31:14
Werner
Hallo Arek,
sorry, das hatte ich übersehen. Dann muß noch transponiert werden.
Ändere folgende Codezeile
.Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues
bitte um in
.Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Gruß Werner
Anzeige
AW: @fcs: Datenexport in anderes Tabellenblatt
23.05.2018 14:56:02
arek
Hi Werner,
danke für deine Antwort! Das hilft mir echt weiter...
Allerdings hätte ich jetzt noch zwei Anliegen, die mir eingefallen sind:
1) Das Übertragen der Daten in das Excelsheet mit dem Reiter Overview soll ab Zeile 2 beginnen...Wie kann das genau realisiert werden?
2) Im Moment erstelle ich eine Kopie des vorhandenen Excelsheets durch Drücken des Buttons. Allerdings werden dabei die Diagramme als Bilder in der Kopie gespeichert und die Formen, die ich in der Orginaldatei eingefügt habe, nicht in der Kopie angezeigt.
Hast du dazu noch eine Idee?
Sorry nochmal das alles so häppchenweise kommt! und nochmals Danke für deine Unterstützung!
Mein aktueller Code ist folgender:
Option Explicit
' Button drücken und Excelsheet erstellen
Private Sub CommandButton1_Click()
Dim sWBName As String
Dim SubPathName As String
Dim NewWBName As String
Dim sh As Shape, lX As Long
GetMoreSpeed True
SubPathName = "\" & Format(Cells(1, 1), "MMMM YYYY") & "\"
NewWBName = Me.Name & "_" & Cells(1, 1).Text & ".xlsx"
UsedRange.Copy
MakeSureDirectoryPathExists (ThisWorkbook.Path & SubPathName)
Workbooks.Add
With ActiveWorkbook
With .Worksheets(1)
.Name = Me.Name
.Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
.Cells(1, 1).PasteSpecial Paste:=xlPasteColumnWidths
' Diagramme auch übernehmen
On Error Resume Next
For Each sh In Me.Shapes
If Left(sh.Name, 6) = "Chart " Then
sh.Copy
.PasteSpecial Format:="Bild (GIF)", Link:=False, DisplayAsIcon:=False
Do While Err.Number  0
Application.Wait (Now + TimeValue("0:00:01"))
Err.Clear
.PasteSpecial Format:="Bild (GIF)", Link:=False, DisplayAsIcon:=False
Loop
lX = lX + 1
.Shapes(lX).Left = sh.Left
.Shapes(lX).Top = sh.Top
End If
Next sh
On Error GoTo 0
Application.CutCopyMode = False
.Range("IM11,IM19,IM24,IM29").Copy
Call subSaveIM11
End With
Application.DisplayAlerts = False
Do While .Worksheets.Count > 1
.Worksheets(2).Delete
Loop
Application.DisplayAlerts = True
sWBName = ThisWorkbook.Path & SubPathName & NewWBName
.SaveAs sWBName
.Close
End With
Application.CutCopyMode = False
MsgBox "Daten gespeichert unter" & vbCrLf & _
sWBName, vbOKOnly + vbInformation
GetMoreSpeed False
End Sub
Sub subSaveIM11()
Dim wkbOverview As Workbook
Dim loLetzte As Long
Set wkbOverview = Application.Workbooks.Open(Filename:="C:\Users\feigeral\Desktop\Beispiel.xlsx")
With wkbOverview.Worksheets("Overview")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
.Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
wkbOverview.Close savechanges:=True
End With
End Sub
Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige