EXCEL超初心者マクロ(1)-CSVファイル取込み-
マクロの詳細はネットでぐぐると
先人達が分かりやすく説明しているサイトが沢山あります。
ただ、いきなりでは難しいので、そこにたどり着くまで力になれたらと思います。
-office2016ベースに説明致します。-
最初に、VBE(Visual Basic Editor)を起動します。マクロを書くところですね。
起動する前に、いろいろな起動方法があるのですが取り急ぎオーソドックスな方法で行きます。
開発タブが上のリボン(※絵がいっぱい書いてあるところ)をクリック。
※無かったら以下方法で出してください。
Office アプリケーションで [開発] タブを表示する方法。
1. [ファイル] タブをクリックします。
2. [オプション] をクリックします。
3. [リボンのユーザー設定] をクリックします。
4. [リボンのユーザー設定] および [メイン タブ] の下の [開発] チェック ボックスをオンにします。
VisualBasicボタンを押します。
VBEが開きます。
開きましたでしょうか?
一点、以下を設定してください。
1.[ツール]-[オプション]
2.[オプション]ダイアログボックスの[編集]タブで
3.[変数の宣言を強制する]チェックボックスをオンにしてください。
【説明】指定しなくてもマクロを組むことは可能ですが、指定すると変数の指示が必須になり、きれいでトラブルの少ないマクロが組めます。
※変数とは、数字や文字列等を保存しておく場所です。
これで準備完了です。
後は、好きなようにプログラミングをして下さい….。
おいおいですね。初めてのときは色々な説明聞いても分かる人のが珍しいんですね。自分は文章解読苦手なんで結構はまります。
かといって、何がしたいのか分からないので、始める事もできません。
持論ですが、一番の近道は「人まね」だと思います。
いくつかサンプルをご紹介しますが、その前に、自分の基本スタイルをお伝えします。
1.起動はEXCELシート上に、ボタンを作って、そこからマクロ(VBE)のフォームを起動する。
2.VBEのフォームにボタンやテキスト等を配置してそこから実行します。
今、適当なのがないのでとりあえず、私が作ったもののイメージです。
これは、ヤマト運輸ビジネスメンバーズのB2クラウドへの連携データ作成用に以前作ったものです
代金引換(コレクト払い)用です。
ここに、データを入力したり、ボタンをクリックしたりしてマクロを動かします
SAMPLE
1.CSVテキストファイルの取込
→フォーマットが固定(いつも同じ)なCSVファイルをEXCELシートに取り込む。
→取り込むファイルのフォルダ位置を変えられるようにする
→取り込むファイルを選択できるようにする
→取り込む前に、フィルタを解除する。解除しないとデータがおかしくなることがあるため
まず、以下を追加します
挿入/ユーザーフォーム ・・・ 追加
挿入/標準モジュール ・・・ 追加
UserForm1を選択 (ダブルクリック)
以下のようにボタンを配置してください(名前はなんでも大丈夫です)
次に
Module1を選択 (ダブルクリック)
多分、Option Explicit のみが表示されていると思いますので
以下をまるっと貼り付けてください。
↓ ここから ↓
Option Explicit '### テキストエリア ### Public TEXT01 As String Public TEXT02 As String '### テキストエリア ### Public CLEAR001 '### カウントエリア ### Public CNT01 Public CNT02 Sub userform1_call() UserForm1.Show 'UserForm1.Show vbModeless ‘モードレス End Sub Sub 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 End Sub
↑ ここまで ↑
説明がまだるっこしくなってきたので、CSVファイル取込サンプルをUPします。
・CSVファイルのフォルダのアドレステキストをコピーして下さい。※ファイルの場所です。
・STARTシートの画像にuserform1_callを登録してありますのでクリックしてください。
・SAMPLE_1.csvファイルを選択して取り込んでください。
こんな感じです。
csv取込ボタンには、以下が書いてあります
'※※※処理を進めてよいかの確認ダイアログBOXです。 NOを押すと何もせず終わります。 MSG_FLG = MsgBox("サンプルファイル" & vbCrLf & "取込み処理実行OK?", vbYesNo) If MSG_FLG = vbNo Then Exit Sub End If ' ***クリア処理*** '※※※CSV取り込みをする際に、フィルタがかかっていると、うまくいかないことがあります。表示されている全シートを解除します。標準モジュールの読み込みです。 '### シートフィルタ解除サブプロシジー ### sheet_clear '※※※取込むシートの中を削除します。 Sheets("DATA").Select Cells.Select Selection.Delete Shift:=xlUp Sheets("DATA").Select Range("A1").Select '※※※ダイアログです。取り込むときに見て下さい。 Const cnsTITLE = "○SAMPLEデータ、取込み処理" Const cnsFILTER = "SAMPLE csvファイル (*.csv),*.csv" '※※※取込むファイルのフォルダへ移動 With CreateObject("WScript.Shell") .CurrentDirectory = Worksheets("KANRI").Range("B2") End With vFILENAME = Application.GetOpenFilename(FileFilter:=cnsFILTER, Title:=cnsTITLE) If VarType(vFILENAME) = vbBoolean Then MsgBox ("キャンセル") Exit Sub End If <span style="color: #ff0000;">※※※データの取込み方指示です。</span> 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 .TextFileColumnDataTypes = Array(2, 2, 1, 1) <span style="color: #ff0000;">※※※ ↑ の数字は取込むCSVの項目数 2・・・テキスト 1・・・数字</span> .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Range("A1").Select MSG_FLG = MsgBox("取込み終了" & vbCrLf & vbCrLf & "(^^)") Application.StatusBar = "SAMPLEデータ 取込み終了" 'EXCELの下バーへメッセージ表示。
CSV取り込みマクロは以上です。
EXCELを取り込みたいときもありますよね。
こちらでご紹介します。
https://www.bookservice.jp/2018/03/29/post-551/
ディスカッション
コメント一覧
まだ、コメントがありません