Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Marko Problem, Hinweisfenster automatisieren (https://www.delphipraxis.net/118761-marko-problem-hinweisfenster-automatisieren.html)

ferby 14. Aug 2008 11:01


Marko Problem, Hinweisfenster automatisieren
 
Hallo,

ich schreibe gerade in Excel ein Makro das folgendes macht:

Öffnet eine bestimmte Excel Datei (B)
Kopiert dort bestimmte Spalten in die Zwischenablage
Fügt diese Spalten in Excel Datei (A) ein
Schließt Excel Datei (B) wieder.


So jetzt mein Problem:
Wenn ich die Excel Datei B schließen will, kommen zwei Fenster:
1) Wollen sie das Excel Speichern --> Ich will das automatisch Nein gewählt wird, bzw. das Fenster gar nicht kommt
2) In der Zwischenablage gibts viel drin, soll es nach dem schließen noch verfügbar sein --> deto wie 1


kann mir wer helfen wie ich das realisiere?


Mein VBA Script bis jetzt:


Code:
Option Explicit


Sub Button_Formatieren()
    '

'  Alles löschen
    Cells.Select
    Selection.ClearContents
       
' Öffne das zu formatierend File und kopiere Inhalt herüber
    Workbooks.Open Filename:="N:\afile.xls"
    Sheets(2).Select
    Range("A5:K20000").Select
    Selection.Copy
    Windows("Transform_DB_Budget.xls").Activate
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Windows("afile.xls").Activate
    ActiveWindow.Close

' ### --> Bei der Close Anweisung kommen die Fenster ###
   
End Sub

WIng2005 14. Aug 2008 11:17

Re: Marko Problem, Hinweisfenster automatisieren
 
Probier mal: Application.DisplayAlerts=false


MFG
Steffen

ferby 14. Aug 2008 13:40

Re: Marko Problem, Hinweisfenster automatisieren
 
Hello,

danke thx funktioniert.


Ich habe jetzt alles noch ein wenig umgeschrieben und bekomme bei einer Paste Anweisung immer einen Fehler.
versteh ich überhaupt nicht....


---------------------------
Microsoft Visual Basic
---------------------------
Laufzeitfehler '1004':

Anwendungs- oder objektdefinierter Fehler
---------------------------
OK Hilfe
---------------------------


Code:
Option Explicit
Sub Button_Formatieren()

    Dim new_excel As Workbook
    Dim old_excel As Workbook
   
'  New Excel
    Set new_excel = Workbooks.Add
   
'  Spalten Namen setzen
    new_excel.Worksheets(1).Range("A1").Value = "Subsegment"
    new_excel.Worksheets(1).Range("B1").Value = "Region_NR"
    new_excel.Worksheets(1).Range("C1").Value = "GA_NR"
    new_excel.Worksheets(1).Range("D1").Value = "Financial Reporting Segment"
    new_excel.Worksheets(1).Range("E1").Value = "VTGR_ID"
    new_excel.Worksheets(1).Range("F1").Value = "ADM_ID"
    new_excel.Worksheets(1).Range("G1").Value = "PROJEKT_ID"
    new_excel.Worksheets(1).Range("H1").Value = "Optional_2"
    new_excel.Worksheets(1).Range("I1").Value = "Optional_3"
    new_excel.Worksheets(1).Range("J1").Value = "KOA_NR"
    new_excel.Worksheets(1).Range("K1").Value = "Legal Entity"
    new_excel.Worksheets(1).Range("L1").Value = "Scenario"
    new_excel.Worksheets(1).Range("M1").Value = "WJ"
    new_excel.Worksheets(1).Range("N1").Value = "Q"
    new_excel.Worksheets(1).Range("O1").Value = "Actua l"
   
' Öffne das zu formatierend File, kopiere Inhalt herüber und schließe das File wieder
    Set old_excel = Workbooks.Add(Me.TextBox_Pfad.Text)

    old_excel.Worksheets(2).Range("A5:K20000").Copy
    new_excel.Worksheets(1).Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
   
    old_excel.Application.DisplayAlerts = False
   
    old_excel.Close
   
' Actual um drei Tabellen nach rechts verschieben
    new_excel.Worksheets(1).Range("K2:K20000").Cut
    new_excel.Worksheets(1).Range("02").Paste ' !###! hier kommt der Fehler ?!?! warum klappt es nicht, habs auch mit PasteSpecial wie ein paar Zeilen darüber ausprobiert. (Und es handelt sich um garantiert um ein O und dicht um eine Null ;-)
   
' Speichern
    new_excel.SaveAs Filename:=Mid(Me.TextBox_Pfad.Text, 1, Len(Me.TextBox_Pfad.Text) - 4) + "_formatiert.xls", _
        FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
       
' Schließe neues Excel
    new_excel.Close
       
       
End Sub

WIng2005 14. Aug 2008 14:09

Re: Marko Problem, Hinweisfenster automatisieren
 
Bin jetzt nicht ganz sicher (lang lang ists her...) aber ich meine, dass dein Range falsch ist.
Versuch mal, den gleichen Bereich anzugeben : Range("O2:O2000").Paste
Bin da aber wirklich nicht sicher, schaue heute Abend mal nach...

MFG
Steffen

ferby 14. Aug 2008 15:21

Re: Marko Problem, Hinweisfenster automatisieren
 
Hallo,

daran liegts leider nicht :-(
habe ich schon ausprobiert.

Chemiker 14. Aug 2008 20:15

Re: Marko Problem, Hinweisfenster automatisieren
 
Hallo ferby,

hast Du mal versucht einen Macro aufzuzeichnen?

Und ein zweiter Hinweis, nach dem die Funktion abgearbeitet ist, die eine nicht gewollte Meldung ausgibt, sollte man die Meldungen wieder anschalten.

Bis bald Chemiker

WIng2005 15. Aug 2008 07:11

Re: Marko Problem, Hinweisfenster automatisieren
 
Guten Morgen,

Wenn du einfach nur erreichen willst, dass 3 Spalten eingefügt werden, könntest du auch einfach
folgendes probieren:

Delphi-Quellcode:
Columns("K:N").Select
Selection.Insert Shift:=xlToRight
...andernfalls probier mal:

Delphi-Quellcode:
Range("K3:K20000").Select
Selection.Cut
Range("O3").Select
ActiveSheet.Paste
MFG
Steffen

ferby 15. Aug 2008 11:31

Re: Marko Problem, Hinweisfenster automatisieren
 
Hello,

so wie du es schreibst hat es bei mir nur funktioniert, wenn ich nur ein Worksheet offen hab.
Den wie weiß VBA sonst, welches Sheet ich jetzt meine...

Ich werde deine Lösung am Montag ausprobieren, und dann bescheid geben

ferby 18. Aug 2008 08:37

Re: Marko Problem, Hinweisfenster automatisieren
 
Hallo,

funktioniert leider nicht, ich muss das Workbook mit angeben.

Aber warum funktioniert mein Code nicht, weil kurz davor mach ich auch ein paste und es geht !?


EDIT
Problem nach langer Zeit gelöst

Code:
    new_excel_sheet.Range("K2:K20000").Copy
    new_excel_sheet.Range("O2").PasteSpecial (xlPasteValues)

Es funktioiniert nur die Kombination Copy und PasteSpecial, warum?, ka!

Aber so funktionierts jetzt mal :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz