• 締切済み

関連がある複数のテキストファイルの扱い方

8月7日の質問No.8708191「Accessクロス集計で列数が多い場合の処理方法」ですが一部、未解決となります。 ですので、一旦その質問は締切りまして、再度内容を吟味して質問させていただきます。 関連会社から商品情報(十万件以上)に関する複数の「.txt」ファイルを頂きました。 この「.txt」ファイルには、商品に関する情報が記載されており、それぞれが関連し合ったファイルです。 これらを適切に関連を持たせ、最終的にはアップロード用に「.csv」として出力させたい為、内容が横1行に吐き出されるようにしたいです。 初歩的な質問になりますが教えてください。 作業環境はWindows7にExcel2003、Access2003がインストールされていますが、そのどちらも素人程度にしか扱えない状況です。 「.txt」の主情報(商品マスタ)は十万行以上になります。 金銭的なバックアップは見込めませんが、無料ソフトの導入などは問題ないです。 また、私以上に素人がこの処理をするかもしれない場合、どのような方法でアップロード用の情報にするのが良いでしょうか?

この投稿のマルチメディアは削除されているためご覧いただけません。

みんなの回答

  • chayamati
  • ベストアンサー率41% (255/609)
回答No.27

>お伝えした.txtの区切りが間違っていたかもしれません。 >タブ区切りとお伝えしましたが実際の私の手元にあるデータはこちらです。 >(タブ区切りでインポートしましたが、問題はなかったです) >"カテゴリコード","カテゴリ名","親カテゴリ","成分フラグ","階層" >01化粧品0101 見過ごしていました。 タブ区切りをカンマ区切りに変更するのは大変ですか TAB区切りの手作業ではできるのですが、 インポート試してみましたがダメでした。 カテゴリコード,カテゴリー名,親カテゴリ,成分フラグ,階層 01,化粧品,01,0,0 を、インポートするとOKですが、これをエキスポートすると "カテゴリコード","カテゴリー名","親カテゴリ","成分フラグ","階層" "01","化粧品","01",0,0 となり、これもインポート可能です。 テキスト情報の文頭 ---------------------------------------- ・カテゴリ カテゴリコード,カテゴリー名,親カテゴリ,成分フラグ,階層 ・カテゴリ関連 成分コード,カテゴリコード ・カテゴリ中継 成分コード,大分類コード,中分類コード,小分類コード ・ブランド ブランドコード,ブランド名 ・メーカ メーカコード,メーカ名 ・商品マスタ 商品番号,商品名,メーカコード,ブランドコード,重要成分コード,販売価格,廃番フラグ,更新日 ・成分 成分コード,成分名,成分説明 ・成分関連 商品番号,成分コード ・説明 配番,商品番号,項目,項目の説明 -------------------------------------------------

lotus2014
質問者

お礼

こんばんは^^ 回答No.25について、ずっと考えてました。 まず、「hoge.txt」と「説明.txt」は同じものです。 先方から頂いたデータをそのまま載せるのはNGかと思い、ファイル名とフィールド名を仮の名前としたものが「hoge.txt」なのです。 > 【説明】と【全説明】フィールド名は全て一致していますね はい、名前を変えて質問していたただけで、中身は同じものになります。 > 両者の違いはレコード件数です。 申し訳ないのですが、なぜレコード件数が違うのか分からないです。 同じものなのにレコード件数が違う???など考えているのですが、どこを見ればよいのでしょうか。 折角説明していただいているのに、ついていけなくて申し訳ございません。 区切り記号をカンマに変更し、再度インポートを試みたところ、このようなエラーが出ました。 実行時エラー2391 貼り付け先の商品マスタテーブルにはF39フィールドがありません 商品マスタテーブルのフィールドは38種類です。 商品マスタ.txtの項目名も38種類で、フィールド名と項目名は同じになっています。 実行時エラー2391で検索したら色々出てきましたので、明日調べてみようと思います。

lotus2014
質問者

補足

回答ありがとうございます。 > タブ区切りをカンマ区切りに変更するのは大変ですか 置換で対応してみます。 > を見比べて下さいテーブルの順が逆になっていますね > Private Sub テーブル初期化RTN() は ∞から1へ > Private Sub txtインポート_Click() 1から∞へ なるほど!この事だったのですね! お手間をかけさせてしまいすみません… > いっそのこと、リレーションを全て削除して カンマ区切りを試してみても遅くなさそうですね! 少し目前の仕事が立て込んできましたので、また夜にインポート結果をご報告致しますね。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.26

変なたとえになりますが この無い親はいるが、親の無い子はいない >> 1:∞ のリレーションのテーブルから∞側 1側の順に初期化する >申し訳ないのですが、意味がよく理解できませんでした。 VBAのコーディングリストで Private Sub テーブル初期化_Click() If MsgBox("全テーブルを初期化します。", vbYesNoCancel) = 6 Then テーブル初期化RTN Else MsgBox ("取り消し") End If End Sub Private Sub テーブル初期化RTN() DoCmd.SetWarnings True DoCmd.RunSQL ("delete from カテゴリ ;") DoCmd.RunSQL ("delete from カテゴリ関連 ;") DoCmd.RunSQL ("delete from カテゴリ中継 ;") DoCmd.RunSQL ("delete from 成分 ;") DoCmd.RunSQL ("delete from 成分関連 ;") DoCmd.RunSQL ("delete from 説明 ;") DoCmd.RunSQL ("delete from 全説明 ;") DoCmd.RunSQL ("delete from 商品マスタ;") DoCmd.RunSQL ("delete from ブランド ;") DoCmd.RunSQL ("delete from メーカー ;") MsgBox ("テーブル初期化完了") DoCmd.SetWarnings False End Sub Private Sub txtインポート_Click() DoCmd.SetWarnings True 'シングルクォーテーションより右はメモです。 警告表示 True 非表示 False DoCmd.TransferText acImportDelim, , "メーカー", "D:\okwave\テキスト\メーカー.txt", True DoCmd.TransferText acImportDelim, , "ブランド", "D:\okwave\テキスト\ブランド.txt", True DoCmd.TransferText acImportDelim, , "説明", "D:\okwave\テキスト\説明.txt", True DoCmd.TransferText acImportDelim, , "全説明", "D:\okwave\テキスト\全説明.txt", True DoCmd.TransferText acImportDelim, , "商品マスタ", "D:\okwave\テキスト\商品マスタ.txt", True DoCmd.TransferText acImportDelim, , "成分関連", "D:\okwave\テキスト\成分関連.txt", True DoCmd.TransferText acImportDelim, , "成分", "D:\okwave\テキスト\成分.txt", True DoCmd.TransferText acImportDelim, , "カテゴリ中継", "D:\okwave\テキスト\カテゴリ中継.txt", True DoCmd.RunSQL ("INSERT into カテゴリ関連(成分コード,カテゴリコード) select 成分コード,大分類コード&中分類コード&小分類コード from カテゴリ中継 ; ") DoCmd.TransferText acImportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True DoCmd.SetWarnings True MsgBox ("txtファイルインポート完了") End Sub を見比べて下さいテーブルの順が逆になっていますね Private Sub テーブル初期化RTN() は ∞から1へ Private Sub txtインポート_Click() 1から∞へ わーまた大変なミスをしたようです。 次を Private Sub テーブル初期化RTN() の前に挿入して下さい これでテーブル毎にワーニングが出て、「いいえ」「デバッグ」で対象の行が表示され テーブル名と初期化の判断が出来ます '---------------------------------------------------------------------- Private Sub テーブル初期化_Click() If MsgBox("全テーブルを初期化します。", vbYesNoCancel) = 6 Then テーブル初期化RTN Else MsgBox ("取り消し") End If End Sub Private Sub テーブル初期化RTN() '------------------------------------------------------------------------- VBAを差し替え、以下の順で再度インポートを行ってみましたが、また同じようにエラーとなってしまいました… 【テーブル初期化】→【TXTファイルエキスポート】→【リレーションの再設定】→【先方データをD:OKWAVE\テキストのファイルにコピペ】→【TXTファイルインポート】 どこに原因がありそうか、少しずつファイルをいじっては試してるのですが…原因がつかめず仕舞いです。 ------------------------------------------------------------------------ いっそのこと、リレーションを全て削除して 【テーブル初期化】→【TXTファイルインポート】 を繰り返しやってみますか これだと、単独の処理出でチェックでき、テーブルとテキストの項目名の整合性が確認でき、 リレーションの再定義で総合チェックとなります

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.25

こんにちは。 どおでもよいのですが、朝の挨拶はおはよう、おはようございますを 使い分けますが、昼夜の挨拶は一つしかなく 今もですが、特にサラリーマン時代に躊躇しています。 ---------------------------------------------------- 商品番号と商品コードの続きですが 各テーブルのフィールド名も商品番号に統一して下さい --------------------------------------- 最初の質問の抜粋です 【「hoge.txt」だけを別途Accessへインポートした際の現状】 商品番号,配番,項目,項目の説明 A11111,1,商品説明,○○○○ A11111,30,使用上の注意,△△△ A11111,50,成分,□□□□ F22222,1,商品説明,◆◆◆ F22222,2,含有成分,▼▼▼▼ インポート先ののテーブル名を仮に【全説明】します。 【説明】と【全説明】フィールド名は全て一致していますね ・説明 配番,商品番号,項目,項目の説明 両者の違いはレコード件数です。 考えられるのは【全説明】 1.ある条件で抽出したもの   抽出条件となる項目は【商品マスタ】内のフィールドの   ・メーカー ・ブランド ・重要成分・更新日   ・配番フラグ とこれらの組合せ 2.抽出用テーブル ・【カテゴリ中継 】 リレーションの見直しが必要 ・【商品番号抽出】テーブル追加   ID(主キー オートナンバー型)   商品番号(テキスト型 主キーにすると変更が効かない)) 更新日を抽出条件とする時の【クエリ:商品マスタ-全説明】を添付します フィールドへドラックする項目は【商品マスタ】の更新日と 【全説明】の全てです 更新日の抽出条件行には >=[forms]![メニュー]![開始日] And <=[forms]![メニュー]![終了日] とします。 抽出条件行は表示行の次から複数行あります 同一行は AND条件になり、行が異なればOR条件になります。

参考URL:
http://okwave.jp/qa/q8708191_6.html#answer
lotus2014
質問者

補足

回答ありがとうございます。 確かに「こんにちは」や「こんばんは」には丁寧語に当たる言い換えがなく使うのに気が引ける場面がありますよね… 私も気になって調べた事があります。 私の場合ですが…それが現代になって省略した言葉と知ってからは、丁寧語になる要素がないと割り切り積極的に使っています^^ 挨拶やお礼の言葉に何度も助けられた経験がある為、挨拶に悩むぐらいなら使ってしまえ~という結論です。 おっと、話がそれました! 今回も残念ながらインポートエラーとなってしまいました。 > インストールするテキストデータの先頭行に項目名があること 私の方でも、ご提示いただきました内容と同じように、1行目に項目名だけとなっております。 但し先方から頂いてるデータに合わせておりますので、項目名が多いテキストデータなどはあります。 > テキスト情報の全ての項目名とデータ形式が一致するフィールド存在する 先方から頂いているデータを元に、テーブルの方もフィールドの追加・データ形式共に修正済みです。 > 1:∞ のリレーションのテーブルへは1側 ∞側の順にインストールする これは1側から∞側に向かってリレーションの線?をドラックする事でしょうか? > 1:∞ のリレーションのテーブルから∞側 1側の順に初期化する 申し訳ないのですが、意味がよく理解できませんでした。 VBAを差し替え、以下の順で再度インポートを行ってみましたが、また同じようにエラーとなってしまいました… 【テーブル初期化】→【TXTファイルエキスポート】→【リレーションの再設定】→【先方データをD:OKWAVE\テキストのファイルにコピペ】→【TXTファイルインポート】 どこに原因がありそうか、少しずつファイルをいじっては試してるのですが…原因がつかめず仕舞いです。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.24

商品コードと商品番号を混同していたためこちらでもとらぶっていました。 商品番号に統一しました。 インポート、エキスポートについて整理してみましょう インポートするには ・インストールするテキストデータの先頭行に項目名があること ・テキスト情報の全ての項目名とデータ形式が一致するフィールド存在する   テーブルのフィールドを追加する ・ 1:∞ のリレーションのテーブルへは1側 ∞側の順にインストールする テーブルを初期化するには ・ 1:∞ のリレーションのテーブルから∞側 1側の順に初期化する こちらでは、下記のようにテキストファイルに保管しています ---------------------------------------- TXT⇔ACCESS一覧.TXT ・カテゴリ "カテゴリコード","カテゴリー名","親カテゴリ","成分フラグ","階層" ・カテゴリ関連 "成分コード","カテゴリコード" ・カテゴリ中継 "成分コード","大分類コード","中分類コード","小分類コード" ・ブランド "ブランドコード","ブランド名" ・メーカ "メーカコード","メーカ名" ・商品マスタ "商品番号","商品名","メーカコード","ブランドコード","重要成分コード","販売価格","廃番フラグ","更新日" ・成分 "成分コード","成分名","成分説明" ・成分関連 "商品番号","成分コード" ・説明 "配番","商品番号","項目","項目の説明" --------------------------------------------- インポート、エキスポート関連のコーディングリストです。 この部分差し替えて下さい '----------------------------------------------------------- Private Sub テーブル初期化RTN() DoCmd.SetWarnings True DoCmd.RunSQL ("delete from カテゴリ ;") DoCmd.RunSQL ("delete from カテゴリ関連 ;") DoCmd.RunSQL ("delete from カテゴリ中継 ;") DoCmd.RunSQL ("delete from 成分 ;") DoCmd.RunSQL ("delete from 成分関連 ;") DoCmd.RunSQL ("delete from 説明 ;") DoCmd.RunSQL ("delete from hoge ;") DoCmd.RunSQL ("delete from 商品マスタ;") DoCmd.RunSQL ("delete from ブランド ;") DoCmd.RunSQL ("delete from メーカー ;") MsgBox ("テーブル初期化完了") DoCmd.SetWarnings False End Sub Private Sub txtインポート_Click() DoCmd.SetWarnings True 'シングルクォーテーションより右はメモです。 警告表示 True 非表示 False DoCmd.TransferText acImportDelim, , "メーカー", "D:\okwave\テキスト\メーカー.txt", True DoCmd.TransferText acImportDelim, , "ブランド", "D:\okwave\テキスト\ブランド.txt", True DoCmd.TransferText acImportDelim, , "商品マスタ", "D:\okwave\テキスト\商品マスタ.txt", True DoCmd.TransferText acImportDelim, , "説明", "D:\okwave\テキスト\説明.txt", True DoCmd.TransferText acImportDelim, , "成分関連", "D:\okwave\テキスト\成分関連.txt", True DoCmd.TransferText acImportDelim, , "成分", "D:\okwave\テキスト\成分.txt", True DoCmd.TransferText acImportDelim, , "カテゴリ中継", "D:\okwave\テキスト\カテゴリ中継.txt", True DoCmd.RunSQL ("INSERT into カテゴリ関連(成分コード,カテゴリコード) select 成分コード,大分類コード&中分類コード&小分類コード from カテゴリ中継 ; ") DoCmd.TransferText acImportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True DoCmd.SetWarnings True MsgBox ("txtファイルインポート完了") End Sub Private Sub txtファイルエキスポート_Click() DoCmd.TransferText acExportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True DoCmd.TransferText acExportDelim, , "カテゴリ関連", "D:\okwave\テキスト\カテゴリ関連.txt", True DoCmd.TransferText acExportDelim, , "カテゴリ中継", "D:\okwave\テキスト\カテゴリ中継.txt", True DoCmd.TransferText acExportDelim, , "ブランド", "D:\okwave\テキスト\ブランド.txt", True DoCmd.TransferText acExportDelim, , "メーカー", "D:\okwave\テキスト\メーカー.txt", True DoCmd.TransferText acExportDelim, , "商品マスタ", "D:\okwave\テキスト\商品マスタ.txt", True DoCmd.TransferText acExportDelim, , "成分", "D:\okwave\テキスト\成分.txt", True DoCmd.TransferText acExportDelim, , "成分関連", "D:\okwave\テキスト\成分関連.txt", True DoCmd.TransferText acExportDelim, , "説明", "D:\okwave\テキスト\説明.txt", True MsgBox ("D:\okwave\テキストに新規作成しました") End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.23

hogeの正体が見えたような 確認したいことがあります。 説明テーブルの配分はユニークですか テーブルデザインビューで 配分のインデックスを ハイ(重複なし)にすることができますか?

lotus2014
質問者

お礼

こんばんは^^ 再度インポートを試みました。 8点の.txtデータ全てインポートするのに1分未満の時間で終了しましたが、前回(回答No.18の補足)と同じエラーが出ました。 以下のURLの一番下から2番目の画像を見て思ったのですが、お伝えした.txtの区切りが間違っていたかもしれません。 タブ区切りとお伝えしましたが実際の私の手元にあるデータはこちらです。 (タブ区切りでインポートしましたが、問題はなかったです) "カテゴリコード","カテゴリ名","親カテゴリ","成分フラグ","階層" 01 化粧品 01 0 1 URL中の画像では、chayamatiさんが記述くださったものと同じ形のVBAが正常にインポートできた時のCSVファイルの内容が、カンマ区切りのダブルクォーテーションでくくっていますので、そこが鍵かなと思っています。 見当違いでしたら申し訳ございません。 http://www.feedsoft.net/access/tips/tips93.html データ件数はテキストデータそれぞれの件数をお伝えすればよいでしょうか? > HOGEは1商品1レコードと繋げるのではなく、主テーブルとサブテーブルに分解した方が扱いやすいのでは 主テーブルとサブテーブルの関係性がよくわかっていないのですが、 最終的に関連付けられたデータを、支給されたアップロード用CSVファイルの形式に、必要な項目を流し込みたいのです。 複雑な構造のAccessを扱った事がない為、内容を横1行にしたいと考えておりました。 (普段はダウンロードしたCSVの必要項目だけ選択クエリで抽出して修正する為に利用するので、商品番号に対して横1列のデータという事が多いのです。) 質問した当初は横1列にする事しか頭になかったのですが、そうすると下記のような事ができない事に気付いてしまいました… ▼以下のものはアップロード用CSVの商品説明という項目に全て流し込みたい内容です(長文含む) 説明.txtの「項目の説明」←hoge.txtの事です 成分.txtの「成分説明」 商品マスタ.txtの「原材料」「サイズ」 これら3つを流し込む事自体は&を使用してなんとかなりそうなのですが(http://office.microsoft.com/ja-jp/access-help/HA010235851.aspx)これらを合計すると文字数が多い(全角5000文字程度には収まる内容と推測します)事と、説明.txtの「項目の説明」が1商品に対して複数の内容がある(縦に展開されている為)事でうまくいかないのでは?と、どうすればいいのか悩んでいます。 質問に質問で答えてしまい申し訳ないのですが、このような場合も主テーブルとサブテーブルに分解する事で扱いやすくなりますでしょうか? ※現在思いつくのはCSVのアップロードを分ける方法です。 説明の項目だけのCSVと、その他の情報の項目を持つCSVを分けるのですが、その他の情報は選択クエリで割りと簡単に収集できます。 説明.txtは横一列にする方法が以前の質問でわかりましたので、これだけ別にCSVを作り、内容を1つのセルにまとめる加工をし、アップロードすれば手間はかかるが問題はない、と言ったところなのです^^;

lotus2014
質問者

補足

回答ありがとうございます。 Access高価ですよね~。 オークションなども見てみましたが、偽物を購入してしまうのも怖いので今は様子見です^^; さて、回答No.21のVBAの設定が終了し、メニューから正常に動く事まで確認しました。 インポートする前にD:OKWAVE\テキストのファイル内を一度フィールドのみに修正しますので、インポート結果はまた後ほどご報告します! > 配分のインデックスを ハイ(重複なし)にすることができますか? できなかったです。原因として考えられますのは、 この内容は商品説明なのですが、サイズ違いの商品(商品コードは別)も扱っている為、同じ説明が入っている事が原因ではないかと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.22

> 2-3.商品登録フォーム作成 > 2-4.長文のメモ型フィールドのある説明登録フォーム作成 > ⇒【読み込まれたフォーム左の+】 +をクリックしても展開しない為に直接、式ボックスに「>=Forms![メニュー]![商品名検索]」とし、画面を閉じました。 商品登録フォームを開くと、「パラメータの入力」という小窓が出現します。   この小窓は正しく動作していることになります。 > 2-5.説明登録を商品登録のサブホームとする   お考えの通りです。画面の行数を多くするためです。ボックスのプロパティーのその他タグに縦書き設定もあります。   限られた画面の中で メインフォームの行数、サブフォームの行数、長文の項目の説明の高さの配分にになります。   ※ 項目の説明の説明等長文のフィールドはメモ型に !!!   ※ テキスト型ではインポートの時無警告で255文字で切り捨てられます 回答No.20での設定がキチンとできれば、添付いただいた画像のように「メーカー登録/成分登録/カテゴリ登録/ブランド登録/成分登録/カテゴリ登録/商品登録/説明登録」ボタンが自動的に作成されるものでしょうか?   全く自動とは言えませんが、メニュー画面に配置するラベルボックスの名前が合っていても、ダメな時があります。   ダメなときは、ボックスのイベントを起動するとうまくできます。   ボックス名が誤っていれば,Private Sub( )と End Subだけが作成されます。これ は即削除して下さい。   元データはテキストデータで登録の必要が無いので、●●●参照とした方が良いかもしれませんね   フォームのデータタブに追加、変更、削除のはい(規定値)いいえ の設定が出来ます。   また、レポートを作成しなくとも。テーブル、フォームをファイルツールから印刷も可能です。 それとも先にコマンドボタンを作成してから回答No.20での設定にとりかかるべきだったのでしょうか? コマンドボタンは作らないでください。多分ですが、コマンドボタンと同名のラベルボックスと差し替えるだけでよろしいかと PS.だんだん楽しくなってきたのに、休日でAccessが触れないのはとてももどかしいです。 いっそ購入しようかと検索してみたら…型落ち単体でも思った以上に高価でガッカリした休日を過ごしました^^;   気持ちわかります。自分が買った時は4万円近くでした。子供の学生所でエコノミーパックで半額以下の1万円台でしたが こんなに親身に回答をくださっているのにお返事できず申し訳ありませんでした。   分からないところは調べてからの回答になりますが、楽しい時間です。一週間が早いですね   今【「hoge.txt」のテーブルを他のテーブル情報から作れるかと試しています。   これが出来れば 商品マスタに?フィールドを追加等で対策があるかも   HOGEは1商品1レコードと繋げるのではなく、主テーブルとサブテーブルに分解した方が扱いやすいのでは   これをテーブルの正規化言います。 正規化ツールはツールバーにあります。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.21

メニューフォーム内のコードです。 -------------------------------------------------------------------------------------- Option Explicit Private Sub Form_Load() 基準日 = Date 基準日変更RTN 開始日 = 月初日: 終了日 = 月末日 End Sub Private Sub 基準日_BeforeUpdate(Cancel As Integer) 基準日変更RTN End Sub Private Sub 基準日変更RTN() 月初日 = 基準日 - Day(基準日) + 1 月末日 = 月初日 + 31: 月末日 = 月末日 - Day(月末日) End Sub Private Sub 前日_Click() 基準日 = 基準日 - 1 基準日変更RTN End Sub Private Sub 翌日_Click() 基準日 = 基準日 + 1 基準日変更RTN End Sub Private Sub 終了_Click() DoCmd.Quit End Sub Private Sub メーカ登録_Click() DoCmd.OpenForm "メーカ登録" End Sub Private Sub ブランド登録_Click() DoCmd.OpenForm "ブランド登録" End Sub Private Sub 商品登録_Click() DoCmd.OpenForm "商品登録" End Sub Private Sub 説明登録_Click() DoCmd.OpenForm "説明登録" End Sub Private Sub 成分登録_Click() DoCmd.OpenForm "成分登録" End Sub Private Sub 成分関連登録_Click() DoCmd.OpenForm "成分関連登録" End Sub Private Sub カテゴリ登録_Click() DoCmd.OpenForm "カテゴリ登録" End Sub Private Sub カテゴリ関連登録_Click() DoCmd.OpenForm "カテゴリ関連登録" End Sub Private Sub テーブル初期化_Click() DoCmd.SetWarnings True If MsgBox("全テーブルを初期化します。", vbYesNoCancel) = 6 Then DoCmd.RunSQL ("delete from カテゴリ ;") DoCmd.RunSQL ("delete from カテゴリ関連 ;") DoCmd.RunSQL ("delete from カテゴリ中継 ;") DoCmd.RunSQL ("delete from 成分 ;") DoCmd.RunSQL ("delete from 成分関連 ;") DoCmd.RunSQL ("delete from 説明 ;") DoCmd.RunSQL ("delete from 商品マスタ;") DoCmd.RunSQL ("delete from ブランド ;") DoCmd.RunSQL ("delete from メーカー ;") MsgBox ("テーブル初期化完了") Else MsgBox ("取り消し") End If DoCmd.SetWarnings False End Sub Private Sub txtインポート_Click() DoCmd.SetWarnings True 'シングルクォーテーションより右はメモです。 警告表示 True 非表示 False DoCmd.TransferText acImportDelim, , "メーカー", "D:\okwave\テキスト\メーカー.txt", True DoCmd.TransferText acImportDelim, , "ブランド", "D:\okwave\テキスト\ブランド.txt", True DoCmd.TransferText acImportDelim, , "商品マスタ", "D:\okwave\テキスト\商品マスタ.txt", True DoCmd.TransferText acImportDelim, , "説明", "D:\okwave\テキスト\説明.txt", True DoCmd.TransferText acImportDelim, , "成分関連", "D:\okwave\テキスト\成分関連.txt", True DoCmd.TransferText acImportDelim, , "成分", "D:\okwave\テキスト\成分.txt", True DoCmd.TransferText acImportDelim, , "カテゴリ中継", "D:\okwave\テキスト\カテゴリ中継.txt", True DoCmd.RunSQL ("INSERT into カテゴリ関連(成分コード,カテゴリコード) select 成分コード,大分類コード&中分類コード&小分類コード from カテゴリ中継 ; ") DoCmd.TransferText acImportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True DoCmd.SetWarnings True MsgBox ("txtファイルインポート完了") End Sub Private Sub txtファイルエキスポート_Click() DoCmd.TransferText acExportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True DoCmd.TransferText acExportDelim, , "カテゴリ関連", "D:\okwave\テキスト\カテゴリ関連.txt", True DoCmd.TransferText acExportDelim, , "カテゴリ中継", "D:\okwave\テキスト\カテゴリ中継.txt", True DoCmd.TransferText acExportDelim, , "ブランド", "D:\okwave\テキスト\ブランド.txt", True DoCmd.TransferText acExportDelim, , "メーカー", "D:\okwave\テキスト\メーカー.txt", True DoCmd.TransferText acExportDelim, , "商品マスタ", "D:\okwave\テキスト\商品マスタ.txt", True DoCmd.TransferText acExportDelim, , "成分", "D:\okwave\テキスト\成分.txt", True DoCmd.TransferText acExportDelim, , "成分関連", "D:\okwave\テキスト\成分関連.txt", True DoCmd.TransferText acExportDelim, , "説明", "D:\okwave\テキスト\説明.txt", True MsgBox ("D:\okwave\テキストに新規作成しました")

lotus2014
質問者

補足

お返事が遅くなりまして申し訳ございません。 > 大量のテキストデータですね、どれ位の時間が係りますか、進行状況の表示が必要かどうかの判断をしたいです。 エラー表示が出る度に「はい」としてインポートを進めたのですが、それぞれのテーブルが1分未満です。 > 2-3.商品登録フォーム作成 > 2-4.長文のメモ型フィールドのある説明登録フォーム作成 > ⇒【読み込まれたフォーム左の+】 +をクリックしても展開しない為に直接、式ボックスに「>=Forms![メニュー]![商品名検索]」とし、画面を閉じました。 商品登録フォームを開くと、「パラメータの入力」という小窓が出現します。 > 2-5.説明登録を商品登録のサブホームとする > ⇒【ホームヘッダー内を項目見出しのみとして】 これは目的のもの以外削除するという意味でしょうか? また、項目見出しというのは以下で言う「項目」を指しているのでしょうか?(ずれて表示されたらすいません) だとしたら、↓このようにすればよいでしょうか? フォーム ヘッダー ___ │項目│  ̄ ̄ ̄ 詳細 ______ ___ ___ │商品コード││配番││項目│  ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄  ̄ ̄ ̄ フォーム フッター ______ │項目の説明│  ̄ ̄ ̄ ̄ ̄ ̄ │項目の説明│ │     │ │     │  ̄ ̄ ̄ ̄ ̄ ̄ > 差し障りなければ、データ件数とインポート時間、エクスポート時間を補足頂けませんませんか 上記でつまづいてしまった為、回答No.21に記述いただいたVBAを作動させておりません。 設定後またご報告させていただきますね! また現在のメニュー上にはこれら↓の表示しかありません。 「基準日/月初日/月末日/開始日/終了日/商品名検索/TXTファイルインポート/TXTファイルエキスポート/テーブル初期化/商品登録」 回答No.20での設定がキチンとできれば、添付いただいた画像のように「メーカー登録/成分登録/カテゴリ登録/ブランド登録/成分登録/カテゴリ登録/商品登録/説明登録」ボタンが自動的に作成されるものでしょうか? それとも先にコマンドボタンを作成してから回答No.20での設定にとりかかるべきだったのでしょうか? PS.だんだん楽しくなってきたのに、休日でAccessが触れないのはとてももどかしいです。 いっそ購入しようかと検索してみたら…型落ち単体でも思った以上に高価でガッカリした休日を過ごしました^^; こんなに親身に回答をくださっているのにお返事できず申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.20

回答No.19のフォーム作成で作成に誤りがありました。 フォームはこちらで作成して下さい。 情報の全てはテキストデータですから登録用のフォームは必要ないと思いますが テキストデータのインストール後のテーブル内容を参照するためです。 登録用:データの追加、更新、削除が可能 参照用:データの追加、更新、削除が不可能 フォームのプロパティーのデータタグに追加の許可、削除の許可、更新の許可の項目があります。 ここを変更することで、登録用にも参照用にもなりますが、フォームの規定値が登録用になっています。 1.フォームを開くボックスに絞り込み検索機能を付けるための商品名検索ボックスを配置 2-1. コンボボックス用のクエリ作成 【メニュー画面で空白部分を右クリック】⇒【デザインビュー】⇒【テキストボックス】⇒【メニュー画面】 ⇒【次へ】⇒【次へ】⇒【商品名検索】⇒【OK】⇒【商品名検索を右クリック】⇒【コントロール種類の変更】 ⇒【コンボボックッス】⇒【商品名検索右クリック】⇒【プロパティー】⇒【データータグ】 ⇒【値集合ソースの右端の…】⇒【商品マスタ】⇒【追加】⇒【閉じる】 ⇒【商品名をフィールドへドラッグ】⇒【並び替え昇順】 ⇒【抽出条件に Forms!メニュー!商品名検索 と入力】⇒【クエリを閉める】⇒【はい】 2.フォームの作成 2-1.各テーブル毎にフォームを作成 2-2.フォームは全て表形式   フォーム名をテーブル名に "登録" を付加して、例えば "説明登録" 2-3.商品登録フォーム作成 【フォームウィザード起動】⇒【商品マスタ】⇒【全て選択移動】⇒【次へ】⇒【表形式】 ⇒【次へ】⇒【商品登録と入力】⇒【フォームのデザインを編集する】⇒【完了】 ⇒【データタグ】⇒【レコードソースの右端の…】⇒【全ての項目をフィールドに移動】 ⇒【はい】⇒【商品名の並び換え行を昇順】⇒【商品名の検索行の右端を右クリック】 ⇒【ビルド】⇒【式の要素のaccess印の左の+】⇒【Formsの左の+】 ⇒【読み込まれたフォーム左の+】⇒【メニュー】⇒【式のカテゴリのの商品名検索】 ⇒【式の値の値をダブルクリック】 ⇒【上枠の Forms![メニュー]![商品名検索] 左端に >= と入力】⇒【OK】 ⇒【クエリビルダを閉じる】⇒【はい】⇒【デザイン画面を閉じる】⇒【はい】 2-4.長文のメモ型フィールドのある説明登録フォーム作成 手順は商品登録と同じだが途中長文のフィールドの処理とテーブル内にない商品名の追加が入る 【フォームウィザード起動】⇒【説明】⇒【全て選択移動】⇒【次へ】⇒【表形式】 ⇒【次へ】⇒【説明登録と入力】⇒【フォームのデザインを編集する】⇒【完了】 ⇒【項目の説明をフォームフッタへ移動し左右に拡げる】 ⇒【この見出しラベルもここへ移動しテキストボックスとに並べる】 ⇒【見出しラベルを縦書きにしてテキストボックスの左に配置するにはその他タグの縦書きを はい】 ⇒【データタグ】⇒【レコードソースの右端の…】⇒【はい】⇒【全ての項目をフィールドに移動】 ⇒【説明の項目名のある枠で右クリック】⇒【商品マスタ】⇒【追加】⇒【閉じる】 ⇒【二つのテーブルが ∞:1 出つながっていることを確認】⇒【商品名を下のフィールドに移動】 ⇒【商品名の並び換え行を昇順】⇒【商品名の検索行の右端を右クリック】 ⇒【ビルド】⇒【式の要素のaccess印の左の+】⇒【Formsの左の+】 ⇒【読み込まれたフォーム左の+】⇒【メニュー】⇒【式のカテゴリのの商品名検索】 ⇒【式の値の値をダブルクリック】 ⇒【上枠の Forms![メニュー]![商品名検索] 左端に >= と入力】⇒【OK】 ⇒【クエリビルダを閉じる】⇒【はい】⇒【デザイン画面を閉じる】⇒【はい】 2-5.説明登録を商品登録のサブホームとする ※サブフォーム/サブレポートツールは隠れています。デザインモードのメニューバー中央付近の▼より見つけて下さい。 【左のナビゲーションウィンドで説明登録をコピペしてフォーム名を説明サブとする】 ⇒【説明サブ を右クリック】⇒【デザインビュー】⇒【ホームヘッダー内を項目見出しのみとして】 ⇒【ホームヘッダーを項目見出しの高さに縮小する】⇒【編集画面を閉じる】⇒【はい】 ⇒【商品登録を右クリック】⇒【デザインビュー】⇒【サブフォーム/サブレポートツール】 ⇒【フォームフッター】⇒【はい (単票に変更する)】⇒【説明サブ】⇒【次へ】 ⇒【独自に設定】⇒【商品コード(メインフォーム)】⇒【商品コード(サブフォーム)】 ⇒【商品登録説明サブ】⇒【デザインビューを閉じる】⇒【はい】 最初の目的であるデータの横並びににはお答えできなくて心苦しいですが 自分のお伝えできることはここまでです。 テキストデータが無いので十分な動作チェックは出来ませんが、 BVAを添えます、 VBA文中 DoCmd.SetWarnings True という文がありますが、処理途中の警告を有効にして処理が一時停止して 警告時のコードをひょうじします。 ここでF8押下するとプログラムは一つづつ進みF5押下継続して通常に戻ります。、 エラー修正が終り、実用に移るとこの警告が煩わしくなります。 実用に移るときは DoCmd.SetWarnings False とし、処理途中の警告を無効にします。 Private Sub 終了_Click() DoCmd.Quit End Sub はシステムを終るときのものですが右肩の閉じるボタンが不要とはおもいますが また各フォームにも、閉じるボタンをラベルで配置しクリックで テキストデータは1回切りならば Private Sub テーブル初期化_Click() を Private Sub テーブル初期化RTN() テキストインポートの最初に初期化をを実行するようにするとよいでしょう Private Sub txtインポート_Click() テーブル初期化RTN DoCmd.SetWarnings True 'シングルクォーテーションより右はメモです。 警告表示 True 非表示 False DoCmd.TransferText acImportDelim, , "メーカー", "D:\okwave\テキスト\メーカー.txt", True DoCmd.TransferText acImportDelim, , "ブランド", "D:\okwave\テキスト\ブランド.txt", True DoCmd.TransferText acImportDelim, , "商品マスタ", "D:\okwave\テキスト\商品マスタ.txt", True 以下略 Private Sub 閉じる_Click() DoCmd.Close End Sub でフォームが閉じます。 テーブルのルックアップ、コンボボックスのリスト行数はコそれぞれののプロパティーに設定項目があります。 大量のデータを扱ったことがありません。 差し障りなければ、データ件数とインポート時間、エクスポート時間を補足頂けませんませんか ミスが多発する回答でしたが、よく付き合って下さいいましてありがとうございます。 -------------------------------------------------------------------------------------- 文字数オーバです。 VBAは次に回答します。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.19

>その後インポートが進んだものの、以下のエラー画面が現れました。 大量のテキストデータですね、どれ位の時間が係りますか、進行状況の表示が必要かどうかの判断をしたいです。 この対処法は整理して後程回答します。 インストール後のテーブル内容を確認するためです。 各テーブルのフォームを作成して、これを開くためのコマンドボタンをメニューフォーム上に配置してください。 フォームは全て表形式で、フォーム名をテーブル名に "登録" を付けて、例えば "商品マスタ登録" として下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/609)
回答No.18

>恐らくですが、VBAの最後尾のEnd Subが足りなかったようなので、付け加え7まで順調に進みました。  End Subで正解です。またミスですね、ゴメン >7.の「但し成分関連.TXTは 成分中継へコピペ」は、カテゴリの事だと思いましたので   カテゴリ関連.txtをカテゴリ中継へコピペしました。   ここでもミスですね >D:\okwave\テキスト\テキストカテゴリ関連.txtには、何も貼り付けない状態でよいのでしょうか?   これも他のテキストと茂名滋養に項目名は付け加えて下さい。 >そしてまた8.の【TXTファイルインポート】で何も起こりませんでした…   5~6回メッセージが表示するはずですが   イベントが感知しなかったのでしょうかなら    メニュをデザインモードにしてクリックイベントを発生させてください Private Sub txtインポート_Click()の次にカーソルが止まるはずです。   メニューを起動して試してください ---------------------------------------------------------------------- こちらで作成したメニュー画面を添付します。 登録のボタンが沢山ありますが、登録は必要ないですが インポートの確認用と思って下さい。   

lotus2014
質問者

補足

回答ありがとうございます。 読み込めなかった原因が解りました。 Private Sub txtインポート_Click()となっていた為、 Private Sub txtテキストインポート_Click()としてみると動作しました。 その後インポートが進んだものの、以下のエラー画面が現れました。 「すべてのデータをテーブルに追加できませんでした。 キー違反のため***件のレコードのデータが失われ、***件のレコードが削除されました。 *データが失われた時は、貼り付けまたはインポートしたデータが、対象となるテーブルのフィールドのデータ型または、フィールドサイズプロパティと一致していません。 *レコードが削除されたときは、対象となるテーブルにすでに存在する主キー値が貼り付けたレコードに含まれているか、テーブル間に設定されているリレーションシップの参照整合性に違反しています。」 「はい」として、インポートを進め、終了後テーブルを開いてみると ・データ自体取り込めていないもの ・1レコード1フィールドに保存されてしまったもの ・エラーテーブルが作成されたもの 商品マスタ_インポート エラー(解析不能なレコード) 説明_インポート エラー(フィールドの切り捨て:商品コード) 名前の自動修正保存エラー(商品マスタ:テーブル:オブジェクトを保存できませんでした) が、表示されました。 毎日さわっているので理屈はわからないでも少しずつ馴染んできました^^ ですが根本が解っていない為もどかしいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数のテキストファイルを1つにまとめる

    同一フォルダ内にある複数のテキストファイルの内容を1つにまとめる方法を探しております。 例えば、 a.txt, b.txt, c.txt が同一フォルダにあり、 それぞれの内容が AAA BBB CCC である時に、これらをまとめて matome.txtとして、その内容が AAA BBB CCC となるようなプログラムを書きたいのですが、どの様な方法が考えられますでしょうか。 上の例では3つのテキストファイルですが、実際に処理したいファイルは数百個になる為、一つ一つファイル名を入力する作業が大変で困っております。 同一フォルダ内のファイルをファイル名順に一度に読み込み、まとめる方法がありましたらお教え下さい。

  • バッチファイルで複数のテキストファイルの置換

    バッチファイルで以下のような処理を行うことはできないでしょうか? フォルダ1以下の全てのテキストファイル内の abcde という文字列を あいうえお に置換して、上書き保存ではなく 元のファイル名+(編集済み).txt というファイル名で同じ場所に保存できないでしょうか。 バッチファイルで出来ない場合他の物でも構いません。 ――――――――――――――――――――――――――――― 処理前 フォルダ1   │   ├フォルダ2   │  └ファイル1.txt (内容:123abcde)   │   ├フォルダ3   │  └フォルダ4   │     └ファイル2.txt (内容:abcde123abcde123)   │   └フォルダ5      └ファイル3.txt (内容:456fghij) ――――――――――――――――――――――――――――― ↓ ――――――――――――――――――――――――――――― 処理後 フォルダ1   │   ├フォルダ2   │  └ファイル1.txt (内容:123abcde)   │  └ファイル1(編集済).txt (内容:123あいうえお)   │   ├フォルダ3   │  └フォルダ4   │     ├ファイル2.txt (内容:abcde123abcde123)   │     └ファイル2(編集済).txt (内容:あいうえお123あいうえお123)   │   └フォルダ5      └ファイル3.txt (内容:456fghij) ――――――――――――――――――――――――――――― こんな感じで出来ないでしょうか。 よろしくお願いします。

  • 沢山のテキストファイルを一つに

    下のように、Testフォルダに Area1、Area2・・・とフォルダがあり、 その中に、Sample.txtがあります。 C:\Test\Area1\Sample.txt C:\Test\Area2\Sample.txt C:\Test\Area3\Sample.txt ・ ・ ・ C:\Test\Area30\Sample.txt それぞのフォルダのSample.txtは "1234567890.123" "2345678901.234" "3456789012.345" . . . のように、数桁の数字が数百行並んでいます。 例えば、 Area1\Sample.txt に100行、 Area2\Sample.txt に200行、 Area3\Sample.txt に150行あるとします。 これを、 1~100行にArea1\Sample.txtの内容を、 101~300行にArea2\Sample.txtの内容を、 301~450行にArea3\Sample.txtの内容を、 として、Area30までのSample.txtを並べた 一つのテイストファイルに書き直したいのですが、 何しろ沢山あるので、一つ一つ開いてコピぺでは、 書き落としなども心配ですし、毎回大変時間が掛かります。 簡単に並べて書き出す方法はないでしょうか。 Excel等を使ってできないでしょうか。 宜しくお願いします。

  • バッチファイルでテキストファイルを分割したい

    テキストファイルを、指定した数値の倍数の行を、指定した個数に分割するバッチファイルを作成しようとしています。 例えば、以下の様な内容の「in.txt」というテキストファイルを3分割したい場合、 ----- in.txtの内容 ----- 1 2 3 4 5 6 7 8 9 10 ------------------------ 以下の様な内容で、 「out1.txt」「out2.txt」「out3.txt」として出力したいのです。 ----- out1.txtの内容 ----- 1 4 7 10 -------------------------- ----- out2.txtの内容 ----- 2 5 8 -------------------------- ----- out3.txtの内容 ----- 3 6 9 -------------------------- 自分はプログラミングの知識がないので、WEBに書かれている構文を少し書き換えたりして試しているのですが、うまく行きません。 AWKを使い、以下のようなバッチファイルを作成して実行してみましたが、「out3.txt」だけがうまく行きませんでした。構文の意味も分からないので修正も出来ません。 awk "NR%%3==1" "in.txt" > "out1.txt" awk "NR%%3==2" "in.txt" > "out2.txt" awk "NR%%3==3" "in.txt" > "out3.txt" AWKの解説ページを読み始めたのですが、時間的な猶予があまり無く、今回質問させて頂いた処理が出来るようになるまでまだ時間が掛かりそうなので、どなたかお分かりの方がおられましたお教え頂けないでしょうか。 AWKでなくとも、sedでもPerlでもその他のコマンドでも構いませんし、スクリプトファイルを読み込めるコマンドでしたらスクリプトでの書き方でも結構ですので、ご存知の方がおられましたらお教え頂けないでしょうか。

  • 複数テキストを一行ずつファイル名を付けて結合する方法

    複数テキストを一行ずつファイル名を付けて結合する方法 フォルダにある複数のテキストデータを1つのテキストデータに結合する際、テキスト1行毎の先頭にファイル名を付けたいのですが。具体的には以下の通りです。 最終的にはexcelに取込み処理するので、excelのマクロかDOS系でできるとあり難いです。 [file1.txt] 1111111111 2222 33333333 [file2.txt] 123 1234 ↓ [all.txt] file1.txt 1111111111 file1.txt 2222 file1.txt 33333333 file2.txt 123 file2.txt 1234

  • テキストファイルを一つにまとめる

    一つののフォルダ内に複数のテキストファイルがあります a.txt b.txt c.txt があり内容はそれぞれ 日付 商品名 数量と同一項目にしてあります これを同じフォルダに自動で一つのファイルにまとめる方法はありませんか 超初心者です よろしくお願いします

  • Excel VBAで列ごとのデータをテキストファイルへ書くには?

    エクセルのシート(たとえばSheet1)が以下のようになっているとします。 A B C D E F 1 商品A 11111111 あいうえお 3 1000 2 商品B 22222222 かくくけこ 1 2500 3 商品C 33333333 さしすせそ 2 3500 ・ ・ これを決まった列ごとにテキストファイル(固定ファイル名)に書き出すということは、エクセルのVBAで可能でしょうか? テキストファイルの内容は以下のようにしたいのです。 E列を数量として、その分だけのテキスト行を書き出したいのですが… <<bbb.txt>> 商品A 商品A 商品A 商品B 商品C 商品C ・ ・ <<ccc.txt>> 11111111 11111111 11111111 22222222 33333333 33333333 ・ ・ <<fff.txt>> 1000 1000 1000 2500 3500 3500 ・ ・ また、このようなことが参考になるHPがあればお教え願いたいのですが。 以上よろしくお願いします。

  • テキストファイルを1行ずつ別のファイルに分割する

    400行ぐらいのテキストファイルを、1行ずつ別のファイルに分割したいと思います。 ファイル名は**001.txtのように、(**は任意の文字列、数字は連番)なってくれれば嬉しいです。 どなたかこのような処理のできる簡単な方法をご存じないでしょうか? よろしくお願いします。

  • エクセルの各シートに複数のtxtファイルを取り込む

    Excel2013を用いたデータ整理をしているのですが,複数のファイルを扱う上でマクロを用いた効率化をしたいと思い,質問させていただきました. いま,Folder1 というフォルダに,text1 から text40 までの 40個のtxtファイルがあります. これらのファイルを,エクセル上であらかじめ作成してある Sheet1 から Sheet40 にそれぞれ貼り付けたいと考えています. txtファイルは,4列で構成されており,タブでそれぞれ区切られています. 行数は20,481行です. txtの中には,0 の値が入った箇所もあるため,その情報が消えないで貼り付けられると望ましいです. また,タブのところでしっかり区切られ,違うセルに貼り付けられると,ありがたいです. 質問は以上です. お手数ですが,よろしくお願いします.

  • 外部テキストファイルの書き換えと作成について

    外部テキストファイルの操作について悩んでおります。 アドバイスお願いします。 まず、外部テキストファイルdate.txtファイルの中身は以下のような具合です。 2/19 2/18 2/09 2/14 2/17 というたった五行の日付情報です。 この日付情報をユーザーがhtml上(実際はdate.phpというファイルです)で自由に変更できるようにしたいというのが私の処理の理想です。 そこで、この日付情報のそれぞれをhtmlのinput type=textのvalue値として、まず読み込ませて表示させます。 そしてユーザーは5つそれぞれを書き換え、もしくはそのまま変更なしでもかまいませんが、最終的にsubmitでphpに送信します。(自分自身、date.phpに送信します。) そのあと、date.txtファイルがユーザーの指定通りに書き換えられるという仕組みです。 さらに、その書き換えられた際に、date.txtファイルとは別に、updated.txtファイルを生成したいと思っています。(生成というか、常にdate.txtファイルの中身が変更される際に、updated.txtファイルも変更されるようにしたいということです。) そのupdated.txtファイルの中身は、 v_hensu1=2/19&v_hensu2=2/17&v_hensu3=2/14&v_hensu4=2/17&v_hensu5=2/15 というようにしたいと思っています。改行は必要ありません。 date.txtの日付情報を上からそれぞれv_hensu1、v_hensu2に当てはめていって、それぞれを&でつなぐだけです。 以上で処理の流れは完了です。 そこでわからないのは、「最初にdate.txtファイルを開く際に使う関数」と、 次に「date.txtを書き換える際に使う関数」と、 「updated.txtを作るための関数」です。 ファイル操作について、また簡単な例をあげていただけますと幸いです。どうぞ宜しくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう