excellVBAでCSVファイル出力
Excellでロボットのシーケンス制御を書き連ねたCSVファイルを出力しようとしました。ちょっとしたジャンプとタイマーとフラグ制御で誰でも編集できるものですが、保存しようとすると警告が何度も出ます。これはCSVファイルがExcellの全てのデータを保存できないというものですが、そんなものは分かりきっているので無視したいのですがなかなか難しいみたいです。
VBAやVBは全く触ったことがなかったので適当にネットからコピペして読み込み・保存するマクロを作り、ボタンを配置して編集できるようにしました。大分楽になったかな!
Dim file_name As String Dim exe_file_name As String Sub 角丸四角形1_Click() file_name = Application.GetOpenFilename( _ FileFilter:="CSVファイル(*.csv),*.csv" _ , FilterIndex:=1 _ , MultiSelect:=False _ ) Cells.Clear Dim line_no As Integer Dim buffer As String Dim data As Variant Dim i As Integer line_no = 1 Open file_name For Input As #1 Do Until EOF(1) Line Input #1, buffer data = Split(buffer, ",") For i = LBound(data) To UBound(data) Cells(line_no, i + 1) = data(i) Next i line_no = line_no + 1 Loop Close #1 End Sub Sub 角丸四角形3_Click() Dim columns_length As Long Dim i, j As Integer Dim column(6) As Variant columns_length = Range("A65536").End(xlUp).Row + 1 Open file_name For Output As #2 For i = 1 To columns_length For j = 0 To 6 column(j) = Cells(i, j + 1) Next j Print #2, Join(column, ",") Next i Close #2 End Sub Sub 名前を付けて保存() file_name = Application.GetSaveAsFilename( _ FileFilter:="CSVファイル(*.csv),*.csv" _ , FilterIndex:=1) Dim columns_length As Long Dim i, j As Integer Dim column(6) As Variant columns_length = Range("A65536").End(xlUp).Row + 1 Open file_name For Output As #3 For i = 1 To columns_length For j = 0 To 6 column(j) = Cells(i, j + 1) Next j Print #2, Join(column, ",") Next i Close #3 End Sub Sub ダンプする() If exe_file_name = "" Then exe_file_name = Application.GetOpenFilename( _ FileFilter:="EXEファイル(*.exe),*.exe" _ , FilterIndex:=1 _ , MultiSelect:=False _ ) End If Shell """" & exe_file_name & """ """ & file_name & """", 1 End Sub