2017-05-08 1 views
2

Mein VBA-Projekt besteht darin, Datenbanken zu bereinigen.CSV-Datei im Hintergrund öffnen und den Namen des Arbeitsblatts abrufen

Ich benutze eine Benutzerform, und das ist der Code, den ich bis jetzt geschrieben habe.

Ich konnte erfolgreich eine Datei importieren, aber ich kann immer noch keine Aktionen ausführen.

  1. Ich brauche euch, mir zu zeigen, wie kann ich den Namen der Arbeitsmappe und Arbeitsblätter aus der CSV-Datei erhalte ich auf die Datenbank nur importiert Zuweisen von Aktionen zu starten, indem Sie seine Arbeitsmappe Namen und Arbeitsblatt-Namen verweist.
  2. Ich würde schätzen es auch, wenn Sie mir zeigen können, wie meine Userform an der Spitze zu halten, oder wie die CSV-Datei zu importieren, ohne es anzuzeigen

Code

Dim fNameAndPath As Variant 

Private Sub importedworkbook_Click() 
MsgBox "imported workbook : " & _ 
fNameAndPath 
End Sub 


Private Sub Importbutton_Click() 

fNameAndPath = Application.GetOpenFilename(FileFilter:="CSV Files Only (*.CSV), *.XLS", Title:="Select File To Be Opened") 
If fNameAndPath = False Then Exit Sub 
Workbooks.Open Filename:=fNameAndPath 
End Sub 
+2

zu arbeiten, sagen, wb, und stellen Sie die csv Datei, die Sie öffnen: Setzen Sie wb = Workbooks.Open Dateiname: = fNameAndPath, dann können Sie wb verwenden, um damit zu arbeiten. Gleiches gilt für Blätter: Set ws = wb.Sheets (1) – Absinthe

+0

Eine CSV-Datei ist eine Textdatei, keine Excel-Datei. Sie verkomplizieren Dinge, indem Sie Excel hier einbeziehen –

Antwort

1

Beste deklarierten Variablen zu verwenden, die geöffneten CSV Blatt

Private wsCSV as Worksheet 

Private Sub Importbutton_Click() 
    Dim wb as Workbook 
    fNameAndPath = Application.GetOpenFilename(FileFilter:="CSV Files Only (*.CSV), *.XLS", Title:="Select File To Be Opened") 
    If fNameAndPath = False Then Exit Sub 
    Set wb = Workbooks.Open(Filename:=fNameAndPath) 
    Set wsCSV = wb.Worksheets(1) ' A csv file will only ever have one sheet 
End Sub 

Variable wsCSV bezieht sich nun auf die C zu referenzieren SV Blatt und kann in anderen Code in der Userform Modul referenziert werden

0

Sie können eine zweite Instanz von Excel öffnen mit der versteckten Datei Variable eine Arbeitsmappe Deklarieren

Dim objExcel As Excel.Application 
    Dim wb As Workbook 
    fNameAndPath = Application.GetOpenFilename(FileFilter:="CSV Files Only (*.CSV), *.XLS", Title:="Select File To Be Opened") 
    If fNameAndPath = False Then Exit Sub 

    Set objExcel = New Excel.Application 
    Set wb = objExcel.Workbooks.Open(fNameAndPath) 
    Set wsCSV = wb.Worksheets(1) 

    MsgBox wsCSV.Name 
    ' do stuff 

    'close second instance 
    wb.Close False 
    objExcel.Quit 
    Set objExcel = Nothing 
Verwandte Themen