ここから本文です

excelデータをCSVファイル(全社員のデータ)に飛ばし給与ソフトに読み込みをした...

アバター

ID非公開さん

2019/3/1014:32:53

excelデータをCSVファイル(全社員のデータ)に飛ばし給与ソフトに読み込みをしたいです。

【出勤簿データファイル】
★個人(1名)で1つのシートを使っています。

➀A1に氏名が記載されています
②A2に出勤日数
③A3に有給日数
④A4に規定内出勤時間
⑤A5に残業時間
⑥A6に深夜時間
↑上記内容が入力されています

【CSVファイル】
➀B列が氏名
②C列が出勤日数
③D列が有給日数
④E列が規定内出勤時間
⑤F列が残業時間
⑥G列が深夜時間

このような場合、どのような計算式を入れればCSVファイルに簡単に読み込む事ができますか?氏名はexcelファイルとCSVファイルの氏名は一致するようにしています。

閲覧数:
57
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

ppt********さん

2019/3/1615:05:14

【出勤簿データファイル】が一人1シートで構成されている?

そのシート名が、その人の名でなければ、

あらたなシートのA列2行目以下に、シート名を記述し、B列に

=INDIRECT($A2&"!a"&COLUMN())

横方向に必要なだけコピー貼り付け
横1行コピー下方向に人数分貼り付け

さらに新たなシートを作り

A1セルに

=あらたなシート名!B2

とし、必要なだけ、横方向、縦方向コピー貼り付け
時刻などが、シリアル表示なら、表示形式で時刻を選択指定してください。

これでCSVデータ構造にマッチしているなら、

いったんexcelファイル形式で上書き保存、つづいて
ファイル>名前をつけて保存

保存するファイルタイプを Excelブック(*.xlsx) ▼

のプルダウンメニューを開き

CSV(コンマ区切り)(*.csv)

を選択し、適当なファイル名をつけ、保存すればCSV形式となり、
そのシートだけの情報が保存されます。
何回か「はいOK」をクリックされてください。

この回答は投票によってベストアンサーに選ばれました!

Yahoo!しごと検索で探してみよう

深夜 の求人情報(526,198件)

深夜早朝スタッフ
  • 合同会社西友 西友三軒茶屋店 0221
  • パート・アルバイト
  • 時給1,050円〜
  • 東京都世田谷区三軒茶屋
イーアイデム
カラオケ「ジャンカラ」スタッフ《深夜》
  • 東愛産業株式会社
  • パート・アルバイト
  • 時給1,000円〜1,250円
東愛産業株式会社
直行直帰 飲食店での深夜清掃スタッフ
  • 株式会社ジョブワールド
  • パート・アルバイト
  • 日給1万円〜
  • 神奈川県横浜市南区
求人アスコム
フード  賢く稼ぐなら深夜!★ホール・キッチンスタッフ
  • 株式会社西日本吉野家
  • パート・アルバイト
  • 時給900円〜
  • 愛媛県松山市土居田町
フロム・エー キャリア
販売  賢く稼ぐなら深夜!★ホール・キッチンスタッフ
  • 株式会社中日本吉野家
  • パート・アルバイト
  • 時給1,000円〜
  • 石川県金沢市新神田
フロム・エー キャリア
深夜早朝スタッフ
  • 合同会社西友 西友諏訪城南店 3414
  • パート・アルバイト
  • 時給1,150円〜
  • 長野県諏訪市上諏訪(大字)
イーアイデム
カラオケ「ジャンカラ」スタッフ《深夜》
  • 東愛産業株式会社
  • パート・アルバイト
  • 時給950円〜1,188円
東愛産業株式会社
直行直帰 飲食店での深夜清掃スタッフ
  • 株式会社ジョブワールド
  • パート・アルバイト
  • 日給1万円〜
  • 東京都渋谷区
求人アスコム
フード  賢く稼ぐなら深夜!★ホール・キッチンスタッフ
  • 株式会社西日本吉野家
  • パート・アルバイト
  • 時給900円〜
  • 愛媛県松山市平田町
フロム・エー キャリア
販売  賢く稼ぐなら深夜!★ホール・キッチンスタッフ
  • 株式会社西日本吉野家
  • パート・アルバイト
  • 時給950円〜
  • 岡山県岡山市北区本町
フロム・エー キャリア

もっと見る >>

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

lin********さん

2019/3/1122:36:52

「VBScript」による回答ですので、「Windows限定」です。

一度、試して頂けないでしょうか?

このプログラムは、これから読み込ませるエクセルのブックを開いておき(★★★他のブックは絶対に開いてはいけません)、「csv」ファイルを1つだけプログラムファイルにドラッグ&ドロップすると、たとえば、「abc.csv」というファイルをドラッグ&ドロップすると、「abc(Result).csv」という結果ファイルを作成します。

ただし、最後の方の3行(頭に「'」がついている3行)の頭の「'」を削除すると、いったん、「~(Result).csv」を作成した後、元の「csv」ファイルを削除、「~(Result).csv」ファイルを元のファイルと同じ名前にします。

結果的に、ドラッグ&ドロップしたファイルと同じ名前のファイルだけが残ります。

「~(Result).csv」の内容をご確認頂き、問題がなければ、最後の方の3行の「'」を取り除いてください。

以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。

「~」の部分は、何でもかまいませんが、「.vbs」の部分は、必ず、半角です。

これから読み込ませたいエクセルのブックを1つだけ開いておき、できたプログラムファイル(「~.vbs」ファイル)に、「csv」ファイルを1つだけ、ドラッグ&ドロップしてください。

★★★注意事項★★★
今は、「csv」ファイルの1行目は「項目行」で、2行目から実際のデータがある、という想定です。

最後に「Finished!」と表示しますので、「OK」を押して、終了してください。

Option Explicit
Dim a, bk, cr, cv, ex, f, g, m(6), n, i, sh, so, wa, x
Set so = CreateObject("Scripting.FileSystemObject")
Set wa = WScript.Arguments
If wa.Count <> 1 or LCase(so.GetExtensionName(wa(0))) <> "csv" Then
MsgBox("ドラッグ&ドロップできるのは、csvファイル1つだけです")
WScript.Quit
End If
f = so.GetParentFolderName(wa(0))
n = so.GetBaseName(wa(0))
Set ex = GetObject(, "Excel.Application")
Set bk = ex.Workbooks(1)
Set cv = so.OpenTextFile(wa(0), 1)
Set cr = so.OpenTextFile(f & "\" & n & "(Result).csv", 2, True)
x = cv.ReadLine
cr.WriteLine x
Do Until cv.AtEndOfStream
a = Split(cv.ReadLine, ",")
m(0) = a(0)
Set sh = bk.Worksheets(a(1))
For i = 1 to 6
m(i) = sh.Cells(i, "A").Value
Next
cr.WriteLine Join(m, ",")
Loop
cv.Close
cr.Close
Set cv = Nothing
Set cr = Nothing
'so.DeleteFile wa(0)
'Set g = so.GetFile(f & "\" & n & "(Result).csv")
'g.Name = so.GetFileName(wa(0))
Set wa = Nothing
Set so = Nothing
MsgBox("Finished!")

簡単な説明です。

Option Explicit

「厳密に」というような意味ですが、気にしないでください。

Set so = CreateObject("Scripting.FileSystemObject")

「Windows」のファイルやフォルダ、テキストファイルを扱う機能を読み込んでいます。

Set wa = WScript.Arguments
If wa.Count <> 1 or LCase(so.GetExtensionName(wa(0))) <> "csv" Then
MsgBox("ドラッグ&ドロップできるのは、csvファイル1つだけです")
WScript.Quit
End If

ドラッグ&ドロップされるのを待っていて、ドラッグ&ドロップされると、その数や拡張子を調べ、想定外なら、メッセージを表示して、プログラムそのものを終了してしまいます。

f = so.GetParentFolderName(wa(0))

ドラッグ&ドロップされたファイルが存在するフォルダを調べています。

n = so.GetBaseName(wa(0))

ドラッグ&ドロップされたファイルのベースネーム(「abc.csv」→「abc」)を調べています。

Set ex = GetObject(, "Excel.Application")

開いているエクセルブックを取得するのに必要です。

Set bk = ex.Workbooks(1)

開いているエクセルブックを取得しています。

Set cv = so.OpenTextFile(wa(0), 1)

ドラッグ&ドロップされたファイルを「読み込み専用」で開いています。

Set cr = so.OpenTextFile(f & "\" & n & "(Result).csv", 2, True)

ドラッグ&ドロップされたファイルと同じフォルダ内に「abc.csv」→「abc(Result).csv」ファイルを「書き込み専用」で、新規作成しています。

x = cv.ReadLine

先頭の1行を読み込んでいます。

cr.WriteLine x

そのまま「~(Result).csv」に書き出しています。

Do Until cv.AtEndOfStream

ドラッグ&ドロップされたファイルの終端まで繰り返します。

a = Split(cv.ReadLine, ",")

たとえば、読み込んだ1行が、「a,b,c」の場合、「a(0) = "a"」、「a(1) = "b"」、「a(2) = "c"」となります。

m(0) = a(0)

列「A」の値をそのまま配列変数に格納しています。

Set sh = bk.Worksheets(a(1))

列「B」の値がシート名なので、列「B」の値を使って、ブックのシートを指定しています。

For i = 1 to 6

1行目から6行目まで処理。

m(i) = sh.Cells(i, "A").Value

各セルの値を配列変数に格納しています。

cr.WriteLine Join(m, ",")

格納した値を「~(Result).csv」に書き出しています。

Loop

を、ファイルの終端まで繰り返しています。

cv.Close
cr.Close
Set cv = Nothing
Set cr = Nothing

両ファイルを閉じています。

'so.DeleteFile wa(0)
'Set g = so.GetFile(f & "\" & n & "(Result).csv")
'g.Name = so.GetFileName(wa(0))

(頭に「'」が付いていると、実行されません。)

元「csv」ファイルを削除し、「~(Result).csv」を取得し、名前を元ファイルと同じにしています。

Set wa = Nothing
Set so = Nothing
MsgBox("Finished!")

あとは、終了処理で、最後に「Finished!」と表示しています。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる