ACCESS でCSV出力ツール作ってみた(その4)
で実際にフォームでプログラムを使用する際に埋め込んでみたわけです。
まあグタグタですな。ダイアログボックスはNETで調べると案外出てます。色々調べて完成はさせてみましたが、フォーマット固定が多いんでどう使うかは考えものです。
アップローダあればアップして、いろんな人に評価して頂いてソースを綺麗にしたいです。
まあグタグタですな。ダイアログボックスはNETで調べると案外出てます。色々調べて完成はさせてみましたが、フォーマット固定が多いんでどう使うかは考えものです。
アップローダあればアップして、いろんな人に評価して頂いてソースを綺麗にしたいです。
'# '# 参照ボタンクリック(CSV取込) '# Private Sub Cmd_import_Click() '参照ボタンクリック時(データインポート) Dim j, k As Integer '複数strpass選択時のカウンタ Dim m, n As Integer 'テーブル名取得用カウンタ Dim strpass As String 'インポート対象パス Dim strVal As Boolean '関数結果受け取り Dim strFName As String 'テーブル名取得用、ファイル名入力用 Dim strpassW As String 'インポートパス分割ワーク用 Dim strMsg As String Dim strSheetName As String 'EXCEL取込時のシート名格納用 'テーブルバックアップ用 Dim strTableName As String 'テーブル名 Dim db_Dao As DAO.Database Dim TableLoop As TableDef '拡張子判別用 Dim strEXT As String '拡張子格納用 '関数受取 Dim strRtn As String '//* ダイアログでファイル選択 strpass = Dialog.MGetFile("D:\Documents and Settings\a20626\My Documents") 'ダイアログ呼び出し 'strpassを選択していない場合は何もしない If strpass = "" Then Exit Sub End If '//* テーブルバックアップ Set db_Dao = CurrentDb For Each TableLoop In db_Dao.TableDefs strTableName = TableLoop.Name 'テーブル名取得 '特殊テーブルは除外:テーブルバックアップ If Left(strTableName, 2) <> "MS" And Left$(strTableName, 3) <> "~TM" And Left$(strTableName, 4) <> "USys" Then If TableOparate.TableExists(strTableName) = True Then strVal = TableOparate.Tablebkup(strTableName) End If End If Next TableLoop j = 0 'カウンタに0をセット k = Len(strpass) '文字長を取得する 'ファイル名の文字数をカウントする Do Until k <= 0 j = InStr(k, strpass, "\") If j > 0 Then Exit Do End If k = k - 1 Loop '//* ファイルのテーブルへの取込 'テーブル用ファイル名取得 ' ①最終文字でなければ分解する ' ②フルパス文字列から改行コード直前までの文字列を取得(strpassW) ' ③フルパス文字列の改行コード以降の文字列を取得(strpass) ' ④ファイル名を取得する ' ⑤CSVインポート '砂時計開始 Application.Screen.MousePointer = 11 Do Until strpass = "" '選択したファイル名の分解) If InStr(strpass, vbCr) <> 0 Then '最終文字列を取得できるようにするための条件 '改行コードの直前までを取り出し strpassW = Left$(strpass, InStr(strpass, vbCr) - 1) '改行コードの直後から取り出し strpass = Mid$(strpass, InStr(strpass, vbLf) + 1) Else strpassW = strpass strpass = "" '最終取込後に初期化してループを抜ける様にする End If strFName = FileOparate.FileNameGet(strpassW, 5) 'テーブル名生成用 strMsg = strpassW & Chr(13) & "ファイルを取込みます。" & _ "取込テーブルは" & strFName & "となります。" & _ Chr(13) & "よろしければ、OKをクリックして下さい。" If strFName = "" Then Exit Sub End If If MsgBox(strMsg, vbOKCancel) = vbOK Then strEXT = FileOparate.FileNameGet(strpassW, 3) '拡張子取得 Select Case strEXT Case Is = ".csv", ".txt" strRtn = Csv_op.FromCSV(CONFIGTABLENAME, strFName, strpassW, strEXT) Case Is = ".xls" strSheetName = InputBox("取込EXCELのシート名を指定してください。") strRtn = FromExcel(CONFIGTABLENAME, strFName, strpassW, strSheetName) Case Else MsgBox "取込めないファイルを選択している可能性があります。" & Chr(13) & _ "TXT,CSV,XLSのいずれかのデータを選択してください。" Application.Screen.MousePointer = 0 End Select End If Loop '//* 終了 If strRtn = "True" Then Application.Screen.MousePointer = 0 MsgBox strFName & "をテーブルに取込みました。", vbInformation Exit Sub Else Application.Screen.MousePointer = 0 MsgBox "処理を中断しました。もう一度やり直してください。", vbCritical End If End Sub Private Sub b_Sort_Click() '# '# 並替ボタンクリック(データ並替) '# Dim strIname As String Dim strOname As String Dim strRtn As String strIname = InputBox("取込んだファイルの名前を入力してください。") strOname = InputBox("出力するテーブル名を入力してください。") If strIname <> "" And strOname <> "" Then strRtn = DataSort.Sorter(TRASFERTABLENAME, strIname, strOname) Else MsgBox ("ファイル名を入力してください。") Exit Sub End If If strRtn = "True" Then MsgBox ("処理が完了しました。") Else MsgBox "処理を中断しました。もう一度やり直してください。" & Chr(13) & "取込ファイル名が誤っている可能性が考えられます。", vbCritical End If End Sub Private Sub Cmd_export_Click() '保存ボタンクリック(データエクスポート) '# '# 保存ボタンクリック(EXCELにエクスポート) '# Dim strac As String Dim varFlname As String Dim strMsg As String Dim strOext As String Dim strSheetName As String '関数受取 Dim strRtn As String strac = InputBox("出力テーブル名を入力してください。") '出力テーブルの指定 If strac <> "" Then varFlname = oDialog.GetFile("") strMsg = strac & " を、ファイルへ出力します。" & _ "出力先は" & Chr(13) & varFlname & "です。" & _ "よろしければ、OKをクリックして下さい。" Else MsgBox ("出力テーブル名が入力されていません。") Exit Sub End If If varFlname = "" Then Exit Sub End If If MsgBox(strMsg, vbOKCancel) = vbOK Then '砂時計開始 Application.Screen.MousePointer = 11 strOext = FileOparate.FileNameGet(varFlname, 3) '//拡張子取出 Select Case strOext Case Is = ".csv", ".txt" strRtn = Csv_op.ToCsv(strac, varFlname, strOext) Case Is = ".xls" '出力シートの指定 strSheetName = InputBox("出力先のシート名を入力してください。") strRtn = Excel_op.ToExcel(strac, varFlname, strSheetName) Case Else MsgBox "出力できないファイルを選択している可能性があります。" & Chr(13) & _ "TXT,CSV,XLSのいずれかのデータを選択してください。" Application.Screen.MousePointer = 0 Exit Sub End Select End If If strRtn = "True" Then Application.Screen.MousePointer = 0 '//* バックアップテーブル削除 Call TableOparate.TableDel MsgBox strac & "データを出力しました。", vbInformation Exit Sub Else Application.Screen.MousePointer = 0 MsgBox "処理を中断しました。もう一度やり直してください。" & Chr(13) & "出力したいテーブル名が誤っている可能性が考えられます。", vbCritical End If End Sub
コメント