CSVファイルのエクスポート 無駄な手作業を繰り返ししていないか?!


CSVファイルのエクスポート 無駄な手作業を繰り返ししていないか?!

エクセルでそのままCSVで保存すると、行と列がメチャクチャに保存されるし・・
あとで検索して、そのデータを修正整理するとなると、時間と手間が無駄にかかる・・・
パソコンに向かっていると仕事をしているように見えるが・・

実際は時間潰し!!←上司から見ると、「この人、無駄な作業ばかりして、仕事していない?」って見える?
仕事はもっと創造的なもの!! 頭を使っていろいろ工夫する!!

 

1.以下の納品伝票を売り上げデータとして出力する
売り上げデータにするためには、必要項目を単行ごとに整理をして出力しなければならない。
単行に追加する項目として、最低限、納品日、伝票番号、取引先コード、これはどうしても
データを検索させる時にキーとなる項目、さらに伝票行、商品のコードもキーとなリます。

そこでCSVにアップするにはその項目を各行に追加してアップする仕組みにします。

1.以下の納品伝票を売り上げデータとして出力する
売り上げデータにするためには、必要項目を単行ごとに整理をして出力しなければならない。
単行に追加する項目として、最低限、納品日、伝票番号、取引先コード、これはどうしても
データを検索させる時にキーとなる項目、さらに伝票行、商品のコードもキーとなリます。

そこでCSVにアップするにはその項目を各行に追加してアップする仕組みにします。

2.CSVファイルに書き出すコマンドボタンをセットし、
そこに呼び出すコードの名称を記載。

‘—————————————————————————————————————-

‘CSVOut ‘売上をCSVファイルに書き込む
Private Sub CommandButton7_Click()
Call CSVOut
End Sub

‘—————————————————————————————————————-

3.今度はその呼び出し先にコードを書きます。

書くコードは以下の通り

‘————————————————————————–

‘データをCSvファイルに出力する
Sub CSVOut()

‘変数宣言
Dim CsvPath As String
Dim LastRow, LastCol As Long
Dim FileNum As Long
Dim outDats(20) As Variant ‘取り敢えず20列で
Dim Trcd, TrDate, Dpno As String
Dim Row1 As Long
Dim Col1, StaTus As Integer

‘変数に値をセット
StaTus = 0
CsvPath = “****\****\****.csv” ‘←ここには書き込むCSVファイルのパスと名をちゃんと入力しておく
‘CsvPath = “C:\VBTest\Nouhinsho\CSVOUT\OgamaUriage.csv” ←例です
LastRow = Cells(Rows.Count, 9).End(xlUp).Row
LastCol = Cells(6, Columns.Count).End(xlToLeft).Column + 3

‘出力フォルダー内に同一Csvの有無確認
If Dir(“”” & CsvPath & “””) <> “” Then
StaTus = 0 ‘無い場合はstatusを0
Else
StaTus = 1 ‘有る場合はstatusを1
End If

‘空いているファイル番号を取得します。
FileNum = FreeFile
‘ファイルを新規・追加モードで開きます。
Select Case StaTus
Case 0 ‘無い場合は新規
Open CsvPath For Output As #FileNum
Case 1 ‘有る場合は追加
Open CsvPath For Append As #FileNum
End Select

‘伝票ヘッダー部を生成
With Sheets(“Sheet1”)
TrDate = CStr(Format(.Cells(2, 10), “yyyymmdd”)) ‘日付
Dpno = .Cells(4, 3) ‘伝票番号
Trcd = .Cells(2, 3) ‘取引先コード
End With

‘シート1の出力行をセットとします。
With Sheets(“Sheet1”)

For Row1 = 7 To LastRow
Select Case Row1

Case LastRow ‘合計行の場合
For Col1 = 0 To LastCol
Select Case Col1
Case 0: outDats(Col1) = TrDate
Case 1: outDats(Col1) = Dpno
Case 2: outDats(Col1) = Trcd
Case 3: outDats(Col1) = “99999”
Case 4: outDats(Col1) = “0000000000000”
Case 5 To 8, 11, 12: outDats(Col1) = “0”
Case 10: outDats(Col1 – 5) = .Cells(Row1, Col1 – 1).value
outDats(Col1) = .Cells(Row1, Col1).value
End Select
Next Col1

Case Else ‘商品記載行の場合
‘出力用の配列へデータをセットします。
For Col1 = 0 To LastCol
Select Case Col1
Case 0: outDats(Col1) = TrDate
Case 1: outDats(Col1) = Dpno
Case 2: outDats(Col1) = Trcd
Case Else
outDats(Col1) = .Cells(Row1, Col1 – 1).value
End Select
Next Col1
End Select

‘配列の要素をカンマで結合して出力します。
Print #FileNum, Join(outDats, “,”)
Next Row1

End With

‘入力ファイルを閉じる。
Close #FileNum
End Sub
 

‘————————————————————————–

4.実行する前に、本当に追加されるか、ファイルサイズを確認してみて

5.とりあえず伝票番号と取引先コードを変更してアップされるか確認してみます。

6.変更後CSVOutのボタンを押してアップしてみると・・

7.まずはファイルサイズが大きくなっています。追加でのアップ成功

8.中身を確認してみると・・・追加でアップされています。データも配列どおりに書き出されている。

CSVへの書き出しと読み込み・・
こういう風に使うと・・・
単なるcsvファイルが・・・
一部DBの様に使うことができる。

お金がないから、システム構築ができない!
時間がないから、システムができない!
技術がないから、システムができない!
知識がないから、システムは無理!!

<できない言い訳をしている時間が一番無駄です>
自分にできることから少しずつでも進める方が
ポジティブです。

金がないなら、頭を使え!!
頭がないなら、体を使え!!
私もこういわれて、自分でいろいろやっています。

うまく構築すると
へんなつまらないシステムより
使いやすい売り上げ管理のシステムになります。

,

コメントを残す

メールアドレスが公開されることはありません。

2021年2月
1234567
891011121314
15161718192021
22232425262728
最近の記事
カテゴリ
月別アーカイブ