2012-11-23 4 views
7

.csv 형식의 파일이 있고 A-S 열에서 테이블과 같은 일부 레코드가 있습니다. 내 전체 프로그램을 삽입/제거/일부 행, 열 및 편집 셀 값 등 추가 할 것입니다. 내가 필요한 모든 작업을 코드 관리, 지금은 GUI와 통합하려고 해요.VBA 양식에 Excel 부분 표시 방법

내가 원하는 것은 VBA 사용자 폼에 레코드가있는 마지막 열까지 Ax1의 셀을 표시하는 것입니다. 내가 어떻게 할 수 있니?

* 추신 : 다시, 내 파일의 형식은 .CSV 내가 당신은 데이터를 표시하는 다중 열 목록 상자를 사용할 수 있습니다 엑셀 2007

답변

17

사용하고 있습니다. 임시 시트

LOGIC

  1. 가져 오기 텍스트 파일 (CSV)는
  2. 는 여러 열리스트 박스
  3. 의 데이터가 사용자 정의 폼 언로드 이벤트에 임시 시트를 삭제하는 것이보기

임시 시트에 텍스트 (Csv) 파일 가져 오기

Private Sub CommandButton1_Click() 
    Dim wb As Workbook, wbTemp As Workbook 
    Dim wsTemp As Worksheet 

    Set wb = ThisWorkbook 
    Set wbTemp = Workbooks.Open("C:\MyCsv.Csv") 

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count) 

    Set wsTemp = ActiveSheet 

    wbTemp.Close SaveChanges:=False 
End Sub 

이제 여러 열 목록 상자에 해당 데이터를 표시 할 수 있습니다.

쇼 그 여러 열리스트 박스

내가 3 열의 예와 적용

Private Sub CommandButton1_Click() 
    Dim wb As Workbook, wbTemp As Workbook 
    Dim wsTemp As Worksheet 

    Set wb = ThisWorkbook 
    Set wbTemp = Workbooks.Open("C:\MyCsv.Csv") 

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count) 


    Set wsTemp = ActiveSheet 

    wbTemp.Close SaveChanges:=False 

    With ListBox1 
     .ColumnCount = 3 
     .ColumnWidths = "50;50;50" 
     .RowSource = wsTemp.Range("A1:C20").Address 
    End With 
End Sub 

SCREENSHOT로 최대 견인까지 20 변경을 복용하고 데이터

enter image description here

당신이 UserForm_QueryClose 경우에 그 액세스 할 수 있도록 코드의 상단에 wsTemp를 선언, 임시 시트를 삭제하려면 사용자 정의 폼 언로드 이벤트

에 임시 시트를 삭제합니다. 이 완전한 예제를 참조하십시오

Option Explicit 

Dim wsTemp As Worksheet 

Private Sub CommandButton1_Click() 
    Dim wb As Workbook, wbTemp As Workbook 


    Set wb = ThisWorkbook 
    Set wbTemp = Workbooks.Open("C:\MyCsv.Csv") 

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count) 


    Set wsTemp = ActiveSheet 

    wbTemp.Close SaveChanges:=False 

    With ListBox1 
     .ColumnCount = 3 
     .ColumnWidths = "50;50;50" 
     .RowSource = wsTemp.Range("A1:C20").Address 
    End With 
End Sub 

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    Application.DisplayAlerts = False 
    wsTemp.Delete 
    Application.DisplayAlerts = True 
End Sub 

HTH