Exel datei öffnen - kleiner fehler im code?

symax

Mitglied
Wenn ich Exel mit VB öffnen lasse, erscheint mit meinem code in exel immer 2 fenster, 1 das ich will (saleshistory.csv) und ein anderes mit dem Namen "Object". Ich kann aber dieses Fenster nicht brachen, im Moment schalte ich immer Manuell wieder zu saleshistory.csv (deswegen auch sichtbar).
Das Problem ist, das er das auch vorm speichern macht (wieder zu "object" springt) und mit dann immer eine leere Tabelle abspeichert.

1.) geht es irgendwie dies auszuschalten, damit ich auch auf "unsichtbar" schalten kann und das VB auch die richtige Datei abspeichert?

2.) kann ich eine Ladezeit (leerlaufzeit) nach dem öffnen ausführen (10-20sec etwa), damit VB nicht immer "nichts" ausließt weil exel noch nicht offen ist; habt ihr einen Tipp für mich wie das Funktioniert? (wir hatten noch keine timer-funktionen in der schule und mein exel hat leider keine hilfedatei intus, google liefert viel, aber nicht so dass ichs versteh)



unter OPTION EXPLICIT habe ich

'EXEL
Dim objExcel As Object
Dim ExcelSheet As Object

----------------------------------------------------------------------------------------------

unter OPEN habe ich

Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.open FileName:="d:\SalesHistory.csv"

Set ExcelSheet = CreateObject("Excel.Sheet")
ExcelSheet.application.Visible = True

--------------------------------------------------------------------------------------------
unter Speichern habe ich

Set objExcel = CreateObject("Excel.Application")
Set ExcelSheet = CreateObject("Excel.Sheet")
ExcelSheet.SaveAs "d:\Export.csv"


P.S.: Hab ein neues Thema aufgemacht, da anderes mit "Trennen von Strings" zu tun hatte, denke dies ist ein anderes Thema

Vielen Dank für eure Hilfe ^^

MFG
Symax
 
THX für die info

Klappt soweit (öffnen), nun hab ich aber das problem, das ich die zeilen mit meinem folgenden Code nicht auslesen kann (variable nicht definiert):

bisher war ja der code:
Code:
Set ExcelSheet = CreateObject("Excel.Sheet")
ExcelSheet.application.Visible = True


so nun hab ich das in: (THX JensG)
Code:
objExcel.Visible = True
geändert


später les (bzw. schreib) ich die zeilen mit z.B.
Code:
Z1 = ExcelSheet.application.cells(1, 1).Value




da ich aber nun die Variable
Code:
exelsheet
nicht mer definiert habe, wie kann ich dies auch auf die andere Variante umstellen? Bin für jede Hilfe dankbar :(


MFG
Symax
 
Danke dir JensG! hat perfekt funktioniert.

nun habe ich aber das Problem: wie schließe ich die Exeldatei und speichere sie ab?
a) selben namen (quit;save)
b) anderen namen (quit;save as d:\lala.xls)

gibt es eine möglichkeit beim Öffnen zu kontrollieren ob die Exeldatei vorhanden ist und wenn nicht, eine Fehlermeldung auszugeben ("nicht verfügbar/ausführbar ect.) ? Oder gar das ich die Datei zum Öffnen (und speichern?) auswählen kann (explorermenü)?

Vielen Dank für eure Hilfe

MFG
Symax
 
Zuletzt bearbeitet:
Hallo Symax,

hier mal ein kleines Beispiel.

Ich hoffe es das was du suchst und es ist verständlich.
Habe mir schnell was aus meinen VB6 Zeiten (schon etwas her)
zusammen gesucht und gebastelt.

Mehr Zeit habe ich Moment leider beim besten Willen nicht.

Jens
 

Anhänge

  • Excel.zip
    8,5 KB · Aufrufe: 24
Danke dir JensG

bin noch am Fehler suchen ^^
makiert mit immer "Datei=" an und sagt "typ oder programm nicht deklariert"

aber wenn du keine Zeit hast is schon ok ^^
geht auch wie gesagt mit fester Einstellung


MFG
Symax
 
Mein Fehler...

ändere mal den folgenden Code so ab.

Code:
With ofd
     .Filter = "Excel *.csv|*.csv"
     .InitDir = "C:\"
                           
     .ShowOpen
                           
     Select Case .DlgError.Number
            Case 0
                 '// öffnen
                 objExcel.Workbooks.Open Filename:=.Filename
                 
                 Set fdlg = Nothing
                                          
            Case Else
                 Set fdlg = Nothing
                 Exit Sub
                              
     End Select
End With

Jens
 

Neue Beiträge

Zurück