![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
私は、WEBデザイナーで、ある業者様より下記のような依頼を受けました。
ある商品のネット通販を行いたいのですが、今までオフラインでは販売もされておられ、その受注管理などは全てエクセル上にて手書きで行われておられました。
今回、オンラインショッピングを構築いたします。
オーダーは、購入の際に、1オーダーにつき、メール及びCSV形式ファイルがそれぞれ一個ずつ送られてくる仕組みなります。
※CSV形式に書き出すのは、レンタルサーバー会社が提供しているメールフォームCGIの仕組みでおまけ機能としてついているようです。
この際、CSVで送られてきたファイルを、1ファイルずつ既存の受注管理を行っているエクセルファイルに読み込ませたいのですが、そういったことは可能なのでしょうか?
(つまり、メールで送られてきたデータを、エクセルファイルに書きこもうとすると、購入者住所なら購入者住所の箇所をメールからコピーして、それをエクセルに貼り付け、購入者電話番号なら購入者電話番号のセルに貼り付け。。。。と非常に煩わしいですよね。
CSVなら、1オーダーつき、1クリックで、購入者住所、購入者電話番号、購入商品名、購入商品数。。。などの情報を一気にデータを読み込ませる事ができるかと思いまして。)
その場合は、やはりマクロなどの知識が必要になってくるのでしょうか?
ちょっと説明が悪い箇所などもございますが、
ご指導いただけると助かります。どうぞよろしくお願いします。
No.6
- 回答日時:
似たような質問が今まであって、同じようなコードを書いていますが勘弁してください。
参考までに。質問のCSVファイルが、たくさんあって、それぞれの一行目に購入者住所、購入者電話番号、購入商品名、購入商品数のタイトル、二行目にデータが入っているとして、自動読み込みを作りました。
(1)"Main.xls"ブックの、「標準モジュール」の所に下のコードをコピーしてください。
(2)次に、"Main.xls"ブックに"search","Master"の名前の2つのシートを作ってください。"Master"シートの一行目は、項目名を入れておいてください。
(3)さて、任意のフォルダ内に、"Main.xls"と合成したいCSVファイル(名前は異なるようにしてください。番号でもいいです。)を全部いれます。あとは、マクロのFileSearchを実行すれば、Masterシートにすべて順番にコピーされます。この順番は、searchシートの所の順番と同じです。
(4)この後は、お使いの管理台帳などにまとめてコピーすればいいでしょう。
(5)項目数は、コードの初期設定の所の数字を変更してください。
=============
(メインコード)
Sub FileSearch(): 'ファイル検索
Dim sfolda As String
Dim SName As String
Dim i, j, k, n As Integer
Dim ww As String
Dim L, S As Integer
Dim ws As Object
Dim DName As String
Dim PP, FF, GG As String
Dim MaxG, DKoumoku, DLine As Integer
Dim MaxFileSu As Integer
'各値初期設定
MaxFileSu = 100: '最大ファイル数
DKoumoku = 4: 'データ項目数(実際の項目に応じて変えてください)
DName = "Master": 'シート名
MaxG = 1000: '最大検索行数(複数行あっても可能です)
DLine = 1: 'データ入力行数カウント
Application.ScreenUpdating = False
'現在のフォルダのパスを設定
sfolda = ThisWorkbook.Path
'ファイル名を入れるシートをセットおよび初期化
Set ws = Workbooks("Main.xls").Worksheets("search")
ws.Range("B1").ClearContents
ws.Range("A4:B200").ClearContents
ws.Cells(1, 2).Value = sfolda
'各ファイル名を検索しsearchシートに登録
SName = "*.csv"
n = 1
With Application.FileSearch
.LookIn = sfolda
.Filename = SName
rs1 = .Execute
If rs1 = 0 Then Exit Sub
For Each nm In .FoundFiles
ww = nm
S = 1
While S > 0
S = InStr(1, ww, "\", 1)
L = Len(ww)
ww = Right(ww, L - S)
Wend
If ww <> "Main.xls" Then
ws.Cells(n + 3, 1).Value = n: '1列目に番号セット
ws.Cells(n + 3, 2).Value = ww: '2列目にファイル名セット
n = n + 1
End If
Next nm
End With
'======================================================================
'合成処理
For n = 1 To MaxFileSu
'ファイル名をセット
PP = ws.Cells(1, 2).Value
If ws.Cells(n + 3, 2).Value = "" Then Exit For
FF = ws.Cells(n + 3, 2).Value
PP = PP & "\" & FF
GG = Left(FF, Len(FF) - 4)
'ファイルオープン
Workbooks.Open (PP)
'各シートからデータをMainに追加貼り付け
For i = 1 To MaxG
If Workbooks(FF).Worksheets(GG).Cells(i + 1, 1).Value = "" Then
Exit For
Else
For j = 1 To DKoumoku
aa = Workbooks(FF).Worksheets(GG).Cells(i + 1, j).Value
Workbooks("Main.xls").Worksheets(DName).Cells(DLine + 1, j).Value = aa
Next j
DLine = DLine + 1
End If
Next i
'ファイルクローズ
Workbooks(FF).Close
Next n
End Sub
=============
(6)なお、もとのcsvファイルに項目名がなくデータのみの場合は次のように、一部変更すればいいです。
(変更)
'各シートからデータをMainに追加貼り付け
For i = 1 To MaxG
If Workbooks(FF).Worksheets(GG).Cells(i, 1).Value = "" Then
Exit For
Else
For j = 1 To DKoumoku
aa = Workbooks(FF).Worksheets(GG).Cells(i , j).Value
ありがとうございます。助かりました。参考にいたします。
※※※※※※※※※※※※※※※※※※※※
この場を借りて皆様にお礼を申し上げます。ありがとうございました。
今は、まだ営業の段階でしたし、あくまでもWEBの開発がメインの事業ですので、クライアントには、「この要望には、最終的にはできるかどうか確約はできないが、できるように努力する。」という形でお応えさせていただきました。実作業になったときには、また改めて疑問などが出てくる可能性があるので、その際はまた皆様のお力をお貸しください。どうぞよろしくお願いします。
※※※※※※※※※※※※※※※※※※※※
No.4
- 回答日時:
Outlookのメールから、CSVファイルを
切り離すマクロ(VBA)のサンプルを
紹介します。
参考URL:http://www.geocities.co.jp/SiliconValley-Bay/347 …
この回答への補足
ありがとうございます。
すいません。。ちょっと、あまり意味が分からないのですが、可能であればもう少し噛み砕いてご説明いただけますか。申し訳ございません。
No.2
- 回答日時:
それなりにマクロの知識は必要ですよね。
それにしても
メールからCSVに落とす作業のことが抜けてますが既に目処は立っているのでしょうか?
もしまだなら、どうせメールからCSVに落とすなら
直接DB(EXCEL?)に放り込んだほうが効率もいいですよね?
この回答への補足
ありがとうございます。
>メールからCSVに落とす作業のことが抜けてますが既>に目処は立っているのでしょうか?
こちらに関しては、ファーストサーバーというレンタルサーバー会社の提供するCGIを利用いたしますので、(参照:http://www.fsv.jp/function/cgi/form.html)
メール→CSVではなく、お客様がフォームに入力した時点で、メールとCSVのそれぞれに書き出すことができます。
No.1
- 回答日時:
CSVファイルをダブルクリックするだけで、
Excelになりますけど、意図されているもの
ではなさそうですね。
すでに作成されたテンプレートみたいなExcel
にCSVファイルを埋め込むんですよね。
「データ」「外部データの取込み」「テキスト
ファイルのインポート」でファイルの種類を
”すべての種類(*.*)”にして、指定するCSV
を選択し、カンマ区切りを選択すれば、シート
内に、CSVデータが読み込まれますよ。
ハズしていたら、ごめんなさいです。
ありがとうございます。データを読み込むのはそれでいいのですが、出来上がったexcelデータ(データベース)に新たに追加していくと言うことなんです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- その他(資産運用・投資) 助けてください 株購入、配当について 正式なグリー株式会社から 身に覚えのない手紙が届きました。 手 8 2023/08/28 12:50
- メルカリ メルカリshopsについて 個人情報抜き取り?? 1 2022/04/02 00:03
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(ネットショッピング・通販・ECサイト) PayPayフリマについてです 私自信混乱してます こういう場合ってどう返信すべきですかね? 読みづ 3 2023/01/24 00:17
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- その他(ネットショッピング・通販・ECサイト) paypayフリマでほぼ未使用品というテプラを購入しました。即日発送してもらったのですぐ到着したんで 4 2022/07/27 07:19
- HTML・CSS HTMLタグのあるCSVファイルを利用する方法 4 2023/03/19 14:41
- メルカリ メルカリで購入者が一方的な理由でキャンセルしたがってて困ってます。 商品は発送済みで購入者も受け取っ 11 2023/02/25 14:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のCSVファイルを横に並べて...
-
Accessにエクセルからデータを...
-
datファイル→csvファイル→datフ...
-
「ほかのアプリケーションを無...
-
二つのCSVファイルを照らし合わ...
-
エクセルでツールバーに「縮小...
-
cellsで特定の離れた範囲を選択...
-
複数のデータ系列の線の太さを...
-
【ExcelVBA】指定の書式で、マ...
-
Excelマクロ ファイル名が変わ...
-
他のBookのユーザー定義関数を使う
-
Excel起動時にマクロを実行させ...
-
Powerpoint 2003 でのVBA UserF...
-
エクセル終了時の保存確認メッ...
-
Excelファイルで作成したものを...
-
マクロを実行するとパス名が無...
-
マクロを消すマクロは不可能?
-
Excelのラジオボタンにチェック...
-
ファイル名を今日の日付、時刻...
-
Latexで英文にルビ訳を付けたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
複数のCSVファイルを横に並べて...
-
excelインポート時の「実行時エ...
-
大量のCSVデータを1つのエ...
-
VBAでCSVの1行目だけを書き換え...
-
複数のcsvファイルを1つのEXCEL...
-
Excel VBAを使った複数のCSVフ...
-
CSVファイルの結合(重複データ...
-
EXCELLの動きが遅い
-
「ほかのアプリケーションを無...
-
datファイル→csvファイル→datフ...
-
EXCELにcsv形式の外部データを...
-
二つのCSVファイルを照らし合わ...
-
EXCELで外部データの取り込みが...
-
【VBA初心者】同じフォルダ内の...
-
【エクセル VBA】CSVファイルの...
-
Accessにエクセルからデータを...
-
VBAで一定期間の名簿を検索、抽...
-
同じ形のCSVファイルを複数同時...
-
複数個のascファイルを1つ...
おすすめ情報