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/











ディスカッション
コメント一覧
まだ、コメントがありません