Excelのはとりあえず形にして会社のIさんに就業後見せ。
それから読み込ませるファイルをある分だけでもコピーしてもらおうと思っていたけど来月入って今月分をシステムが吐き出してからまとめて渡すとか。
つまりそれまでマクロ作り一時休止みたいな。
ExcelVBAちょっとはまってたのでちょっとザンネン。
それでも現段階でできることまだあるのでしばらくそれしていることに。
今日帰ってからはバグ潰しを。
一度ファイルの存在しない月の数字入力してエラーダイアログに怒られてから終了を意味する0入力したりキャンセル押すとなぜか0ってファイルはないぞゴルァ!と怒られるという意味不明なバグ見つかったので。
1ループ目では出ないし…終了確認の後ファイルの存在確認に飛ぶはずがないのに…
わからないのでとりあえずファイルの存在確認部分にif p <> 0 thanってつけて回避することに。
明日以降は進歩状況を示すプログレスバーを組み込むことしたいかな。
あと一度に読ませるファイル数9個ってことがわかったのでそれ関連追記と。
それと明日はMさんが東京出張のため機械担当一人少ないので私ががんばらなくちゃ…
しっかり遅れずついていけるようにしないとね。
現時点でのヘタレソース↓ やさしいヒトよければアドバイスくださぃな
Option Explicit ‘関数の宣言を強制。スペルミス対策
‘モジュール全体で使うため変数をココで宣言。(意味なし
Private p As Integer, t As String, e As Integer
‘p : 月入力 , t : 入力からファイル名の一部へ変換 , e : 終了確認入力
Private mypath As String, fullname As String, filename01 As String
‘mypath : 読み込むファイルのパス , fullname : パスつきファイル名 , filename01 : 読み込むファイル名
Private name01 As String, name02 As String, name03 As Integer
‘name01,name02 : ファイル名先頭の決まった部分 , name03 : 可変部分?
Private cell01 As String, cell02 As String
‘cell01 : 読み込むセルの範囲 , cell02 : 書き込むセルの範囲
Private cancel01 As String
‘cancel01 : 処理中断用変数‘ データ型の種類
‘ integer : 整数型
‘ string : 文字列型
‘ variant : バリアント型(ほとんどすべてのデータ型
‘
‘ stringにすると case 1 to 12 のようにtoが使えない
‘
‘———————————–更新履歴————————————————-
‘2005/11/27 テスト段階初版完成
‘2005/11/28 pにまだファイルの存在しない月を入れ存在しない旨伝えるダイアログの後次回pに0入れたりキャンセル押すと
‘ なぜかfileopen()の「MsgBox prompt:=p & “月のファイルは存在しない~」に飛ぶ問題を修正
‘ (原因不明のため上記MsgBox~をIf p
‘——————————————————————————————–Private Sub fileopen()
‘—————-設定ここから———————————————
mypath = “”
mypath = ThisWorkbook.Path & “\test\” ‘テスト動作時用
name01 = “test” ‘ファイル名のうち固定部分
name02 = “0”
‘(読み込むファイル名 = name01 & name02 & name03 & t & “.xls”
‘—————-ここまで————————————————-Select Case p ‘1~9月の場合それぞれアタマに0追加
Case 1: t = “01”
Case 2: t = “02”
Case 3: t = “03”
Case 4: t = “04”
Case 5: t = “05”
Case 6: t = “06”
Case 7: t = “07”
Case 8: t = “08”
Case 9: t = “09”
Case 10: t = “A” ‘10~12月の場合A,B,Cに
Case 11: t = “B”
Case 12: t = “C”
End SelectFor name03 = 1 To 2 ‘本格利用時to 9にする必要有り
Select Case name03 ‘読み込ませるファイル数9個
Case 1: cell01 = “B2:I41”: cell02 = “B2”
Case 2: cell01 = “B2:K41”: cell02 = “N2”Case Else: MsgBox “想定外のループ数です。マクロ作者に連絡ください。fileOpen()のFor name03ループ数不正”, Buttons:=vbCritical, Title:=”エラー”
End Selectfilename01 = name01 & name02 & name03 & t & “.xls” ‘ファイル名生成
fullname = mypath & filename01 ‘フルパスつきファイル名If Dir(fullname)
With Workbooks.Open(fullname, ReadOnly:=True) ‘読取専用モードでブックをロード
ThisWorkbook.Activate
.Sheets(1).Range(cell01).Copy Destination:=Sheets(2).Range(cell02) ‘開いたファイルからコピー
End With
Workbooks(filename01).CloseElse ‘ファイルがない場合の処理
If p
MsgBox prompt:=p & “月のファイルは存在しないようです。”, Buttons:=vbCritical, Title:=”エラー”
Call input01
End If
End If
Next name03 ‘ファイル読み込み処理終了Sheets(1).Range(“F5”).Value = p & “月度汚泥処理月報”
Sheets(1).Range(“R5”).Value = p & “月度汚泥処理月報”‘ mypath = ThisWorkbook.Path & “\test\” ‘開くファイルのパスを設定
‘ filename01 = namehead01 & “01” & t & “.xls” ‘ファイル名を月から生成
‘ fullname = mypath & filename01‘ If Dir(fullname)
‘1つめ
‘ With Workbooks.Open(fullname, ReadOnly:=True) ‘読取専用モードでブックをロード
‘ ThisWorkbook.Activate
‘ .Sheets(1).Range(“B2:I41”).Copy Destination:=Sheets(2).Range(“B2”) ‘開いたファイルからコピー
‘ End With
‘ Workbooks(filename01).Close‘2つめ以降はファイル有無チェックなし
‘2つめ
‘ filename01 = namehead01 & “02” & t & “.xls” ‘ファイル名を月から生成
‘ fullname = mypath & filename01
‘ With Workbooks.Open(fullname, ReadOnly:=True) ‘読取専用モードでブックをロード
‘ ThisWorkbook.Activate
‘ .Sheets(1).Range(“B2:K41”).Copy Destination:=Sheets(2).Range(“N2”) ‘開いたファイルからコピー
‘ End With
‘ Workbooks(filename01).Close‘ Sheets(1).Range(“F5”).Value = p & “月度汚泥処理月報”
‘ Sheets(1).Range(“R5”).Value = p & “月度汚泥処理月報”‘ Else ‘ココ以降に書くとX
‘ MsgBox prompt:=p & “月のファイルは存在しないようです。”, Buttons:=vbCritical, Title:=”エラー”
‘ Call input01
‘ End IfEnd Sub
Sub input01() ‘月入力メッセージボックス
p = Application.InputBox(prompt:=”何月度のファイルを参照しますか?”, Title:=”月の選択”, Type:=2)
If p
Select Case p
Case 1 To 12: Call fileopen ‘1~12の数字ならファイルオープン処理へ飛ぶCase False: Call end01 ‘キャンセル(0)が押された時は終了処理へ。
Case 0: Call end01 ‘0(キャンセル)の場合の処理(上記と同じだが念のため。Case Else ‘1~12以外の数字が入力された時用ダイアログ
MsgBox prompt:=”1~12の範囲の数字を入力してください。”, Buttons:=”64″, Title:=”警告”
Call input01 ‘ファイル読み込み部分へ飛ぶ
End Select
Else: Call end01 ‘終了確認へ飛ぶ
End IfEnd Sub
Private Sub end01() ‘終了確認
e = MsgBox(prompt:=”処理を終了していいですか?ファイルは閉じません。”, Buttons:=”36″, Title:=”確認”)
If e = 7 Then Call input01 ElseEnd Sub
アドバイスはできないけど・・・(・σ・`)
応援ならできますぅ♪♪o(・ω・´o)ファイトォ☆!