MSFlexGrid의 내용 저장하기(to Excel)

CommonDialog Box컨트롤과 MSFlexGrid컨트롤, File명을
인자로 넘겨주면 해당 MSFlexGrid의 내용을 Excel에서 읽을 수 있는
파일 형태로 저장하는 프로시저 입니다.


Public Sub FileSave(dlgSaveAs As CommonDialog, ByVal TableHFGrid As MSHFlexGrid, ByVal FName As String)
   
    Dim OneRec As String
    Dim i As Integer
    Dim Cnt As Long
   
    ‘ Cancel을 True로 설정합니다.
    dlgSaveAs.CancelError = True
    On Error GoTo ErrHandler
   
    dlgSaveAs.Flags = cdlOFNOverwritePrompt Or cdlOFNExplorer Or cdlOFNLongNames
    dlgSaveAs.Filter = “Comma separated values(CSV)|*.csv|모든 파일 (*.*)|*.*”
    dlgSaveAs.DialogTitle = FName & ” 자료 저장”
    dlgSaveAs.InitDir = App.Path & “\Data”
    dlgSaveAs.FileName = FName
    dlgSaveAs.ShowSave
   
    If Len(dlgSaveAs.FileName) = 0 Then Exit Sub
   
    Open dlgSaveAs.FileName For Output As #1    ‘ Open file for output.
       
        ‘/ Header(Record Field명)를 출력함  /
        OneRec = TableHFGrid.TextMatrix(0, 1)
        For i = 2 To TableHFGrid.Cols – 1
            OneRec = OneRec & “,” & TableHFGrid.TextMatrix(0, i)
        Next i
        Print #1, OneRec
   
        ‘/ Data를 출력함    /
        For Cnt = 1 To TableHFGrid.Rows – 1
            DoEvents
            OneRec = TableHFGrid.TextMatrix(Cnt, 1)
            For i = 2 To TableHFGrid.Cols – 1
                OneRec = OneRec & “,” & TableHFGrid.TextMatrix(Cnt, i)
            Next i
            Print #1, OneRec
        Next Cnt
       
    Close #1
   
    Exit Sub
   
ErrHandler:
   
    If ERR.Number = cdlCancel Then  ‘/ 취소버튼(32755)이 눌려진경우
        ‘ 취소 단추를 눌렀습니다.
    Else
        MsgBox ERR.Number & “:” & ERR.Description, vbQuestion
    End If
   
    Exit Sub


End Sub

Msflexgrid의 내용을 excel에 원하는 위치에 삽입하려할때?

기존파일에 넣는 방법이나 새파일 열어서 하는 방법이나 별로 차이점이 없으니까
엑셀의 새파일을 열어서 데이터를 넣는 소스를 만들어 봤습니다.
커멘드버튼 하나와 플렉스그리드 하나를 그리고 엑셀 오브젝트를 참조하시고
다음을 실행시켜보세요. 즐프하시고 다 주석달기가 모해서 모르는 것 있으시면 재질문 해주시길…

Option Explicit

Private Sub Command1_Click()
    Dim i As Integer
    With MSFlexGrid1
        .FixedRows = 0
        .FixedCols = 0
        .Rows = 0
        .Cols = 5
        .AddItem “aaa” & vbTab & “bbb” & vbTab & “ccc” & vbTab & “ddd” & vbTab & “eee”
        .AddItem “ggg” & vbTab & “hhh” & vbTab & “kkk” & vbTab & “eee” & vbTab & “www”
        .AddItem “ddd” & vbTab & “ooo” & vbTab & “www” & vbTab & “qqq” & vbTab & “ddd”
    End With
    Call GridToExcel
End Sub
Private Sub GridToExcel()
    Dim Xl As New Excel.Application
    Dim GridRow As Long
    Dim GridCol As Long
   
    With Xl
        .Workbooks.Add
        .Worksheets(“Sheet2”).Select
       
        For GridRow = 0 To MSFlexGrid1.Rows – 1
       
            For GridCol = 0 To MSFlexGrid1.Cols – 1
                .Cells(GridRow + 5, GridCol + 1) = MSFlexGrid1.TextMatrix(GridRow, GridCol)
            Next GridCol
           
        Next GridRow
       
        .Visible = True
    End With
   
End Sub