【備忘録】CSV取込 意図しない区切り文字 EXCELの忖度。
コロン(:)が区切り文字で入ってしまう。
マクロでCSV取り込みを作成したのだが、作業者のEXCELによって区切り文字が入ってしまう。自分で使用する際は問題ないのだが、最近提供することが多くなったので忘れないよう記録します。
自分はEXCELの忖度と言っています(^-^;。
使用者が手動で作業した時に、その情報をEXCELが初期値として保持してしまうことがあります。
保存すると別の作業者にも影響する場合があり、他の機能だと、グラフなどをマクロで作成すると作成する度に微妙に違ったりします。
解決方法としては、各設定をマクロ上で全て設定が必要です。
CSV取込回避方法
CSV取込はSplitを使用する方法もありますが、その場合影響を受けません。自分はあまり好きでは無いので使用してません。
以下のCSV取込は、マクロの記録で出来たものを一部張り付けて作成する方法です。
MSG_FLG = MsgBox(" CSV取込み処理実行OK?", vbYesNo) If MSG_FLG = vbNo Then Exit Sub End If '#### sheet_clear For CLEAR001 = 1 To Worksheets.Count If Sheets(Worksheets(CLEAR001).Name).AutoFilterMode Then Sheets(Worksheets(CLEAR001).Name).Range("A1").AutoFilter End If Next '#### Sheets("SAMPLE").Select Cells.Select Selection.Delete Shift:=xlUp Sheets("SAMPLE").Select Range("A1").Select Const cnsTITLE = "○CSVデータ、取込み処理" Const cnsFILTER = "csvファイル (*.csv),*.csv" With CreateObject("WScript.Shell") .CurrentDirectory = Worksheets("KANRI").Range("B1") End With vFILENAME = Application.GetOpenFilename(FileFilter:=cnsFILTER, title:=cnsTITLE) If VarType(vFILENAME) = vbBoolean Then MsgBox ("キャンセル") Exit Sub End If WORK01 = vFILENAME With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;" & vFILENAME, Destination:=ActiveSheet.Range("A1")) ''...省略... '#### マクロ記録で作成 ここから .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 .TextFileOtherDelimiter = False '←###その他の区切り文字### .TextFileColumnDataTypes = Array(2, 2, 2, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False '#### マクロ記録で作成 ここまで End With Range("A1").Select MSG_FLG = MsgBox("取込み終了" & vbCrLf & vbCrLf & "(^^)") Application.StatusBar = " CSV 取込み終了" 'EXCELの下バーへメッセージ表示。
Discussion
New Comments
No comments yet. Be the first one!