Wait a moment...

コピペで作る、VBA!(2019/9/22追記)

nem12.05xem (3)
301
2
2019-09-11 22:24:59
コピペで作る、VBA!(2019/9/22追記)
~お詫びと訂正と愚痴~
 
■お詫びと訂正
    ここで紹介しております『他のファイル(主にcsv)からコピペ』するマクロですが
    文字コードの違いにより環境によってはうまく読み込めない可能性があります。許して。
 
■愚痴
    会社PCからだとネムログへアクセスブロックされてた。。。orz
    半ば自分の仕事効率化のためにこの記事書いたのに。。。
 
~~~~~~~~~~~
我々の仕事を陰から支えているエクセルマクロ。

面倒くさい作業をアプリケーションにやらせて手作業を省略するのがその意義だ。

 

しかし、案外積極的に好んで勉強したり使用している人を見ない気がする。

決してVBAが特別難しい言語というわけではない。

 

おそらくほかの言語等と文法やなんかがビミョーに違い、
例えば『ElseIf文ってELSEとIFの間にスペース入れるんだっけ?』ってなることが原因かと。

 

 

ググればすぐに出てくるけど、何回もググるのも面倒くさい。

 

そこでこの記事では一度VBAを勉強しようと志したものの

やっぱめんどくさくて挫折した人向けに、コピペ帳を公開します。

 
 
この記事は自分の勉強用も兼ねて定期的にアップデートしていこうかと。。。

■構文系

 

'if文
If (条件文) Then
'命令
 
ElseIf (条件文) Then
'命令
 
Else
'命令
 
End If

 

 

'Forループ
Dim cnt As Integer
Dim stopCount As Integer: stopCount = '←(繰り返す回数-1)の数字を入れる
 
For cnt = 0 To stopCount
'ここに繰り返す命令を記述
 
Next cnt

 

 

'Do Whileループ
Do While '←条件式を記述
'ここに繰り返す命令を記述
 
Loop

 

 

'Select Case文
Dim flag As Integer
flag = '←条件式記入
 
Select Case flag
Case 1
'命令
 
Case 2
'命令
 
Case Else
'命令
 
End Select

 

 

'他のファイル(主にcsv)からコピペ
Dim openFile As String
openFile = '←ファイル名を指定
 
Open openFile For Input As #1
Dim row As Integer
row = 1
 
Dim col As Integer
col = '←CSVの列数を指定
 
Dim buf As String
Do Until EOF(1)
Line Input #1, buf
Range(Cells(row, 1), Cells(row, col)).Value = Split(buf, ",")
row = row + 1
 
Loop
 
Close

 

 

'他のエクセルファイルを開いていろいろ処理する
Dim openFile As String
openFile = '←開くファイルのフルパス記入
 
With Workbooks.Open(openFile)
With Worksheets(1) '←適切なシート番号に書き換えて使用
'命令
 
End With
 
.Close SaveChanges:=False '←openFileへの変更を保存しない場合
'.Close SaveChanges:=True '←openFileへの変更を保存する場合
 
End With

 

 

 

 

■定数系

 

'円周率
Dim pi As Double
pi = 4 * Atn(1)

  

 

'現在のディレクトリを取得
Dim filePath As String
filePath = ThisWorkbook.Path & "\"

 

'myCol列目の最大行数を取得
Dim myCol As Integer: myCol = ’←任意の数字を入れる
Dim maxRow As Integer
maxRow = Cells(Rows.Count, myCol).End(xlUp).Row

 

'myRow行目の最大行数を取得
Dim myRow As Integer: maxRow = '←任意の数字を入れる
Dim maxCol As Integer
maxCol = Cells(myRow, Columns.Count).End(xlLeft).Column

 


Comment
ニセこんさん
ニセこんさん
2019-09-23 12:19:03ID:149386

>>YUTO::さん
これは恥ずかしいっ!笑
ご指摘ありがとうございます。

YUTO
YUTO
2019-09-23 10:39:28ID:149365

これが、どう役に立つのか、わくわくします。

検索タグの方ですけど、
ネムログプログラミング同好会
ではなく、
nemlogプログラマーズ同好会
なので、よろしくお願いします。

この記事を書いた人
こんさんのニセモノです