EXCEL超初心者マクロ(5)-追加でcsvを取り込みたいとき-
以前csv取り込みのサンプルをUPしましたが、今回はcsvを追加で取込むマクロを紹介します。
複数のcsvファイルを取込むときに使えると思います。
取込む位置を決めて、そこに追加していくやりかたです。
【条件】基準項目は必ず存在する。
以下マクロの内容です。
MSG_FLG = MsgBox("サンプルファイル" & vbCrLf & "★追加 取込み処理実行OK?", vbYesNo) If MSG_FLG = vbNo Then Exit Sub End If Const cnsTITLE = "○SAMPLEデータ、取込み処理" Const cnsFILTER = "SAMPLE csvファイル (*.csv),*.csv" ' ***対象シートセット*** ' Dim vFILENAME As Variant ' OPENするファイル名(フルパス) With CreateObject("WScript.Shell") .CurrentDirectory = Worksheets("KANRI").Range("B2") End With Sheets("DATA").Select Range("A1").Select If Worksheets("DATA").Range("A1") = "" Then '### 新規(空のとき) **** Application.StatusBar = "初回" WK_START01 = "A1" Else '### 追加とき **** MAXLOW1 = Cells(Rows.Count, 1).End(xlUp).Row ’対象列(この場合1列目)の一番下の位置を取得します。 Set set_data01 = Worksheets("DATA").Range("A1") '...取込むシートのA1をセット Set set_data01 = set_data01.Offset(MAXLOW1, 0) '...A1からMAXLOW1分だけ下に移動 WK_START01 = set_data01.Address(RowAbsolute:=False, ColumnAbsolute:=False) '...今いる位置をWK_START01へセット...AAA End If MsgBox ("取り込み位置: " & WK_START01) vFILENAME = Application.GetOpenFilename(FileFilter:=cnsFILTER, title:=cnsTITLE) If VarType(vFILENAME) = vbBoolean Then MsgBox ("キャンセル") Exit Sub End If With ActiveSheet.QueryTables.Add(Connection:= "TEXT;" & vFILENAME, Destination:=ActiveSheet.Range(WK_START01)) ’...AAAの位置から追加(以下通常取込みと一緒) ''...省略... .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 2, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Range("A1").Select MSG_FLG = MsgBox("取り込み終了" & vbCrLf & vbCrLf & "(^^)") Application.StatusBar = "追加 取込み終了"
Discussion
New Comments
No comments yet. Be the first one!