2017-05-08 9 views
2

VBAプロジェクトはデータベースのクリーニングで構成されています。CSVファイルをバックグラウンドで開き、ワークシート名を取得します。

私はUserformを使用していますが、これは今まで私が書いたコードです。

私はファイルのインポートに成功しましたが、それでもまだアクションを実行できません。

  1. 私はあなたたちはどのように私はちょうどそのワークブック名​​およびワークシート名によってデータベースを参照アクションを割り当てる開始するためにインポートされた.csvファイルのワークブック名​​およびワークシートを得ることができ、私を表示する必要があります。
  2. 私はそれをあなたがどのように上に私のユーザーフォームを維持するために私を見ることができる場合も、それを感謝し、または表示することなく、.csvファイルをインポートする方法

コード

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

は、ワークブックの変数を宣言WBを言うと、CSVを設定しますwb = Workbooks.Open Filename:= fNameAndPath次に、wbを使って作業することができます。シートと同じ:Set ws = wb.Sheets(1) – Absinthe

+0

CSVファイルはテキストファイルであり、Excelファイルではありません。 –

答えて

1

ベスト宣言された変数を使用して開いたCSVシートを参照する

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 

変数wsCSVは、現在、C SVシート、および

0

ユーザーフォームモジュール内の他のコードで参照することができますが、隠しファイルを操作するために、Excelの2番目のインスタンスを開くことができ

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 
関連する問題