@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

エクセルシートの操作について

1
投稿者投稿内容
かさこ
常連さん
会議室デビュー日: 2007/10/24
投稿数: 26
お住まい・勤務地: Hyogo
投稿日時: 2007-11-06 13:24
こんにちは。
テンプレートエクセルファイル(ファイル名:A.xls、シート名:日)よりシートをコピーして、出力用エクセルファイル(ファイル名:yyyyMM.xls、シート名:dd日)とするプログラミングをC#で作ろうと思っています。
※yyyyMM:処理対象年月 dd:処理対象日

出力用ファイルのシートは最終的に1日〜31日まで作られ、出力用ファイル及び同一日付のシートが既にあれば上書き、無ければ新規作成をします。

上記プログラミングでの考え方や記述例などご存知の方がいらっしゃればご教授お願いしたく思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-11-06 13:48
私にはファイル コピーをするだけにしか見えませんでしたが、具体的にどこに困っているのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2007-11-06 13:59
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42005&forum=7
かさこ
常連さん
会議室デビュー日: 2007/10/24
投稿数: 26
お住まい・勤務地: Hyogo
投稿日時: 2007-11-06 14:10
じゃんぬねっと 様

こんにちは。
私も当初は元になるシートのセルに値を入れて、別名でマイドキュメント等に保存すれば・・・と思っておりました。
が、プログラムで出力されたエクセルファイルに一部手入力する部分があるようです。
なので、前日や前々日日付のシートに手入力した部分を無くさない為にも、細工が必要になってきます。

現在のコーディングは・・・
// 元になるエクセルファイルをコピー
System.IO.File.Copy(sFromFile, strMyDoc, true);

// 何日のシートに出力するか?
int iEXCEL_DAY = dtEXCEL_DAY.Day;
string stD = iEXCEL_DAY.ToString() + "日";
ws = (Excel.Worksheet)wss.get_Item(stD);
xlWorkSheet = ws;

一部抜粋ですが、こんな感じで作っています。
上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2007-11-06 14:43
C#で組まなくてもExcelのマクロでどうにかなりそうな気が・・・・・。

1.テンプレファイルにマクロを追加
2.月情報セルに月を入力後、ボタンクリックで月情報ワークブックを作成。
 (作成の際はFileExists等で存在チェック、ファイルがあったら既存のファイルを
  別名保存)
3.月情報ワークブックを開き、シート情報を列挙し既に存在する日付については
 適当な処理を行う。
 (シートが存在する場合は、既存のシートを別名で保存し、新規のシートに
  セルの値を移送する。)

スレ主さんの発言から上記のような処理を行うものと推測しました。
で、C#で行う意味はあるのでしょうか?
jama
常連さん
会議室デビュー日: 2006/09/12
投稿数: 45
投稿日時: 2007-11-09 10:33
以前、日報シートの自動作成プログラムを作成したことがあります。
VB6で作成しましたが、中身はExcelマクロと同じです。
1.雛形を作成するファイル名へコピー
2.コピーしたファイルへワークシート関数を設定する

雛形には1-31日のシートを作成しておいて、対象月の日数でシートを削除しました。
プログラムで月合計シートへ関数を設定するのが面倒でしたが、難しくはありませんでした。
「雛形にできるだけ設定しておいて、プログラムでは集計関数の設定のみ」という考え方で作成しました。
1

スキルアップ/キャリアアップ(JOB@IT)