Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6789 / 13646 ツリー ←次へ | 前へ→

【42944】一度に100枚のシートをコピーしたい masukun 06/9/26(火) 19:34 質問[未読]
【42945】Re:一度に100枚のシートをコピーしたい りん 06/9/26(火) 20:05 発言[未読]
【42956】Re:一度に100枚のシートをコピーしたい masukun 06/9/27(水) 19:39 お礼[未読]
【42958】Re:一度に100枚のシートをコピーしたい ponpon 06/9/27(水) 20:07 発言[未読]
【42994】Re:一度に100枚のシートをコピーしたい masukun 06/9/28(木) 20:06 お礼[未読]
【42995】Re:一度に100枚のシートをコピーしたい ponpon 06/9/28(木) 21:21 発言[未読]
【43005】Re:一度に100枚のシートをコピーしたい パン 06/9/29(金) 8:00 発言[未読]
【43034】Re:一度に100枚のシートをコピーしたい masukun 06/9/29(金) 20:15 お礼[未読]
【43033】Re:一度に100枚のシートをコピーしたい masukun 06/9/29(金) 20:06 お礼[未読]
【43036】Re:一度に100枚のシートをコピーしたい パン 06/9/29(金) 20:34 発言[未読]
【43062】Re:一度に100枚のシートをコピーしたい masukun 06/10/1(日) 8:39 お礼[未読]
【43067】Re:一度に100枚のシートをコピーしたい パン 06/10/1(日) 11:12 発言[未読]
【43082】Re:一度に100枚のシートをコピーしたい masukun 06/10/1(日) 19:08 お礼[未読]
【43091】Re:一度に100枚のシートをコピーしたい パン 06/10/2(月) 0:08 質問[未読]
【43124】Re:一度に100枚のシートをコピーしたい masukun 06/10/2(月) 23:27 お礼[未読]
【43126】Re:一度に100枚のシートをコピーしたい パン 06/10/3(火) 0:38 発言[未読]
【43151】Re:一度に100枚のシートをコピーしたい masukun 06/10/3(火) 20:52 お礼[未読]
【43007】Re:一度に100枚のシートをコピーしたい ハチ 06/9/29(金) 8:28 発言[未読]
【43035】Re:一度に100枚のシートをコピーしたい masukun 06/9/29(金) 20:28 お礼[未読]
【43096】Re:一度に100枚のシートをコピーしたい awu 06/10/2(月) 11:03 回答[未読]
【43123】Re:一度に100枚のシートをコピーしたい masukun 06/10/2(月) 22:49 お礼[未読]
【43143】Re:一度に100枚のシートをコピーしたい &H309 06/10/3(火) 15:16 発言[未読]
【43150】Re:一度に100枚のシートをコピーしたい masukun 06/10/3(火) 20:11 お礼[未読]

【42944】一度に100枚のシートをコピーしたい
質問  masukun  - 06/9/26(火) 19:34 -

引用なし
パスワード
   Sub ボタン1_Click()
For cnt = 1 To 100
  Sheets("1").Select
  Sheets("1").Copy Before:=Sheets(cnt)
Next
End Sub

上記を実行すると、途中(必ずsheet28枚)で、「実行時エラー'1004'
worksheetクラスのcopyメソツドが失敗しました」とエラー表示され、
Sheets("1").Copy Before:=Sheets(cnt)で止まります。
Excelを再起動してボタン1_Click()をクリックすると可能ですが、
原因が分かりません。どうすれば1回で100枚のシートが
コピー出来るのでしょうか?
お教えください。

【42945】Re:一度に100枚のシートをコピーしたい
発言  りん E-MAIL  - 06/9/26(火) 20:05 -

引用なし
パスワード
   masukun さん、こんばんわ。

シート上のボタンのようですが、どのシートの上にあるんでしょうかね。
Sub ボタン1_Click()
  With Application.ActiveWorkbook
   For cnt = 1 To 100
     .Worksheets("1").Copy Before:=.Worksheets(cnt)
   Next
  End With
End Sub
これを実行してみましたが、1 (101)まで無事に作成できましたよ。
Win2000 & XL2000です。

>上記を実行すると、途中(必ずsheet28枚)で、「実行時エラー'1004'
>worksheetクラスのcopyメソツドが失敗しました」とエラー表示され、
>Sheets("1").Copy Before:=Sheets(cnt)で止まります。
28枚で失敗ということで、もしかしてEXCEL97ですか?

【42956】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/9/27(水) 19:39 -

引用なし
パスワード
   りんさん解答有難う。
>シート上のボタンのようですが、どのシートの上にあるんでしょうかね。
sheet("1")でもそれ以外のsheet上のボタンでも同じ様に止まります
>28枚で失敗ということで、もしかしてEXCEL97ですか?
EXCEL2000でも2003でも同じ様に止まります。
sheetを軽くしたら(sheet上の書き込みをほとんど削除)コピー枚数が増えましたが100枚はコピー出来ません。
以上、宜しくお願いします。

【42958】Re:一度に100枚のシートをコピーしたい
発言  ponpon  - 06/9/27(水) 20:07 -

引用なし
パスワード
   ▼masukun さん:
>EXCEL2000でも2003でも同じ様に止まります。
>sheetを軽くしたら(sheet上の書き込みをほとんど削除)コピー枚数が増えましたが100枚はコピー出来ません。

私も試してみました。

Sub ボタン1_Click()
  With Application.ActiveWorkbook
   For cnt = 1 To 100
     .Worksheets("1").Copy Before:=.Worksheets(cnt)
   Next
  End With
End Sub

データが少ない場合、ほんの数秒で
200列6000行で、1枚コピーするのに7秒かかりましたが、
100枚コピーできました。

pen42.6G メモリ1Gです。

積んでいるメモリはどれくらいでしょうか?

【42994】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/9/28(木) 20:06 -

引用なし
パスワード
   ▼ponpon さん:
>▼masukun さん:
>>EXCEL2000でも2003でも同じ様に止まります。
>>sheetを軽くしたら(sheet上の書き込みをほとんど削除)コピー枚数が増えましたが100枚はコピー出来ません。
>
>私も試してみました。
>
>Sub ボタン1_Click()
>  With Application.ActiveWorkbook
>   For cnt = 1 To 100
>     .Worksheets("1").Copy Before:=.Worksheets(cnt)
>   Next
>  End With
>End Sub
>
>データが少ない場合、ほんの数秒で
>200列6000行で、1枚コピーするのに7秒かかりましたが、
>100枚コピーできました。
>
>pen42.6G メモリ1Gです。
>
>積んでいるメモリはどれくらいでしょうか?
今現在、確認しているノートパソコンのメモリーは、
Celeron(R) CPU2.4GHZ 240MBですが、
先日2GBのパソコンでも途中でも止まりました。やはり、原因はメモリー不足でしょうか?
いまひとつ原因が分かりません。
宜しくお願いします。

【42995】Re:一度に100枚のシートをコピーしたい
発言  ponpon  - 06/9/28(木) 21:21 -

引用なし
パスワード
   ▼masukun さん:
>>積んでいるメモリはどれくらいでしょうか?
>今現在、確認しているノートパソコンのメモリーは、
>Celeron(R) CPU2.4GHZ 240MBですが、
>先日2GBのパソコンでも途中でも止まりました。やはり、原因はメモリー不足でしょうか?
>いまひとつ原因が分かりません。

コードに問題があるわけでは、ないと思うので・・・
やはりメモリかな?
ちなみにデータを計算式(100列3000行)にしたら、30分以上たっても
コピーし終わらず、Escでストップしたらその後、PCの調子がめっちゃ悪かったです。
複雑な計算式が多量に含まれているのでは??

【43005】Re:一度に100枚のシートをコピーしたい
発言  パン E-MAIL  - 06/9/29(金) 8:00 -

引用なし
パスワード
   ▼ponpon さん:
パンです、こんにちは。

私もテストしましたが、OKでした。
ponponさんから、ヒントを得て再計算を止め100枚コピー終了後再計算。
ではドウでしょうか?
Sub ボタン1_Click()
Application.Calculation = xlCalculationManual  ’’’再計算手動

For cnt = 1 To 100
  Sheets("1").Select
  Sheets("1").Copy Before:=Sheets(cnt)
Next

Application.Calculation = xlCalculationAutomatic  ’’再計算自動
End Sub


>▼masukun さん:
>>>積んでいるメモリはどれくらいでしょうか?
>>今現在、確認しているノートパソコンのメモリーは、
>>Celeron(R) CPU2.4GHZ 240MBですが、
>>先日2GBのパソコンでも途中でも止まりました。やはり、原因はメモリー不足でしょうか?
>>いまひとつ原因が分かりません。
>
>コードに問題があるわけでは、ないと思うので・・・
>やはりメモリかな?
>ちなみにデータを計算式(100列3000行)にしたら、30分以上たっても
>コピーし終わらず、Escでストップしたらその後、PCの調子がめっちゃ悪かったです。
>複雑な計算式が多量に含まれているのでは??

【43007】Re:一度に100枚のシートをコピーしたい
発言  ハチ  - 06/9/29(金) 8:28 -

引用なし
パスワード
   ▼masukun さん:

>上記を実行すると、途中(必ずsheet28枚)で、「実行時エラー'1004'
>worksheetクラスのcopyメソツドが失敗しました」とエラー表示され、
>Sheets("1").Copy Before:=Sheets(cnt)で止まります。
>Excelを再起動してボタン1_Click()をクリックすると可能ですが、
>原因が分かりません。どうすれば1回で100枚のシートが
>コピー出来るのでしょうか?
>お教えください。

28枚目でエラーになるとすれば・・・
25枚を4回実行してエラーになるか、検証してみてはいかがですか?
まずは、WorkBookの限界テストをしてみるのが良いと思います。

Sub ボタン1_Click()
For cnt = 1 To 25
  Sheets("1").Select
  Sheets("1").Copy Before:=Sheets(cnt)
Next
End Sub

【43033】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/9/29(金) 20:06 -

引用なし
パスワード
   ▼ponpon さん:

>複雑な計算式が多量に含まれているのでは??

他のシートを参照する為、リンク式を多用しています。
やはり、ponponさんの指摘通り、原因はメモリー不足ですね?
有難うございました。


>▼masukun さん:
>>>積んでいるメモリはどれくらいでしょうか?
>>今現在、確認しているノートパソコンのメモリーは、
>>Celeron(R) CPU2.4GHZ 240MBですが、
>>先日2GBのパソコンでも途中でも止まりました。やはり、原因はメモリー不足でしょうか?
>>いまひとつ原因が分かりません。
>
>コードに問題があるわけでは、ないと思うので・・・
>やはりメモリかな?
>ちなみにデータを計算式(100列3000行)にしたら、30分以上たっても
>コピーし終わらず、Escでストップしたらその後、PCの調子がめっちゃ悪かったです。
>複雑な計算式が多量に含まれているのでは??

【43034】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/9/29(金) 20:15 -

引用なし
パスワード
   ▼パン さんへ、こんばんわ。
>ponponさんから、ヒントを得て再計算を止め100枚コピー終了後再計算。
>ではドウでしょうか?

再計算を手動にしても同じでした。コピーは速く出来ますが、
途中でとまります。コピー枚数は同じでした。

ponponさんのアドバイスの通り
>>複雑な計算式が多量に含まれているのでは??
上記が原因だと思います。
アドバイス有難うございました。

【43035】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/9/29(金) 20:28 -

引用なし
パスワード
   ハチ さんへ、アドバイス有難う
>28枚目でエラーになるとすれば・・・
>25枚を4回実行してエラーになるか、検証してみてはいかがですか?
>まずは、WorkBookの限界テストをしてみるのが良いと思います。
下記のコードでWorkBookの限界テストをしてみました。

For cnt = 1 To 10
For cnt = 1 To 5

等確認しましたが、何回か実行している間に
やはり、途中で止まってしまいます。

ponpon さんが指摘している様に、

>複雑な計算式が多量に含まれているのでは??

他のシートを参照する為、リンク式を多用しています。
原因はメモリー不足の様です。
有難うございました。

【43036】Re:一度に100枚のシートをコピーしたい
発言  パン E-MAIL  - 06/9/29(金) 20:34 -

引用なし
パスワード
   ▼masukun さん:
メモリー不足でなく、デザインの問題ですね。
セルにリンク式出なくVBAにて設定すればよいかも知れません。
リンク等の必要性(常にいるものかどうか)を検討してデーターのみコピーするとかの検討すればよいかも?
リンクのこうしんをとめるとかの方法もあります、再度検討してください。


>▼ponpon さん:
>
>>複雑な計算式が多量に含まれているのでは??
>
>他のシートを参照する為、リンク式を多用しています。
>やはり、ponponさんの指摘通り、原因はメモリー不足ですね?
>有難うございました。
>
>
>>▼masukun さん:
>>>>積んでいるメモリはどれくらいでしょうか?
>>>今現在、確認しているノートパソコンのメモリーは、
>>>Celeron(R) CPU2.4GHZ 240MBですが、
>>>先日2GBのパソコンでも途中でも止まりました。やはり、原因はメモリー不足でしょうか?
>>>いまひとつ原因が分かりません。
>>
>>コードに問題があるわけでは、ないと思うので・・・
>>やはりメモリかな?
>>ちなみにデータを計算式(100列3000行)にしたら、30分以上たっても
>>コピーし終わらず、Escでストップしたらその後、PCの調子がめっちゃ悪かったです。
>>複雑な計算式が多量に含まれているのでは??

【43062】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/10/1(日) 8:39 -

引用なし
パスワード
   ▼パン さんへ、スルドイご指摘有難うございました。

>メモリー不足でなく、デザインの問題ですね。
確かに、今回初めてまとまったものをVBAで作ろうと悪戦苦闘中です。
巧く説明出来ませんが、今回作ろうとしているプログラム?は以下の通りです。

全体の基本データーをsheet("基本情報")に、各個人の基本データーをsheet("個人原簿")に登録して、sheet("個人表")に、sheet("基本情報")とsheet("個人原簿")のデーターをリンクさせています。メンテメニューでsheet("個人表")を100人分コピーして100人の「個人表」を利用出来るようにしたいのです。

>セルにリンク式出なくVBAにて設定すればよいかも知れません。
VBAで設定するとコマンドボタンの操作が必要になり?、操作が面倒な気がするのですが?

>リンク等の必要性(常にいるものかどうか)を検討してデーターのみコピーするとかの検討すればよいかも?
データーと枠組みを分けるには、リレーショナルデーターベース(DB)で作るべきものかもしれません。又、シートコピーの必要性は、sheet("個人表")の枠組みが変更された場合にのみ発生し、コピーの頻度は比較的少ないのです。

>リンクのこうしんをとめるとかの方法もあります、再度検討してください。

手動での再計算にしてから、シートをコピーすることではないのですか?

いろいろ書きましたが、宜しくお願いします。

【43067】Re:一度に100枚のシートをコピーしたい
発言  パン E-MAIL  - 06/10/1(日) 11:12 -

引用なし
パスワード
   ▼masukun さん:

こんにちは。
いまいちまだ、理解不足なのですが、違っていたらすみません。

**** 全体の基本データーをsheet("基本情報")に、各個人の基本データーをsheet("個人原簿")に登録して、sheet("個人表")に、sheet("基本情報")とsheet("個人原簿")のデーターをリンクさせています。メンテメニューでsheet("個人表")を100人分コピーして100人の「個人表」を利用出来るようにしたいのです。

これは、同じbookということですか?リンクというと別bookと仮定して。

***  手動での再計算にしてから、シートをコピーすることではないのですか?
答え
リンク オブジェクトの更新方法を変更する と言うのがエクセルのヘルプにあります。

*** VBAで設定するとコマンドボタンの操作が必要になり?、操作が面倒な気がするのですが?
答え マクロのオプションでCTRL+a見たいに起動できます。

**** メンテメニューでsheet("個人表")を100人分コピーして100人の「個人表」を利用出来るようにしたいのです。
100人分を同時に見ることはないと考えます[切り替えで表示する]

私の理解力が乏しい為、明確な回答は難しいのですが(基本データーをsheet("基本情報")が良くわからないので
簡単なのは、100人分コピーしなくても利用できるようにすれば良いと思います

データーベースは、特に必要ないと思います。
3700*20くらいのものでも、読み込みに5秒くらいです配列に入れて使用できます
構成がいまいち理解できずに、ばらばらな回答になってしまいました。
sheet("基本情報")に、各個人の基本データーをsheet("個人原簿")の関係がどうなっているかが想像できないので、詳しく説明していただければもう少しまともな返事も出来るのですが、申し訳ありません。


>▼パン さんへ、スルドイご指摘有難うございました。
>
>>メモリー不足でなく、デザインの問題ですね。
>確かに、今回初めてまとまったものをVBAで作ろうと悪戦苦闘中です。
>巧く説明出来ませんが、今回作ろうとしているプログラム?は以下の通りです。
>
>全体の基本データーをsheet("基本情報")に、各個人の基本データーをsheet("個人原簿")に登録して、sheet("個人表")に、sheet("基本情報")とsheet("個人原簿")のデーターをリンクさせています。メンテメニューでsheet("個人表")を100人分コピーして100人の「個人表」を利用出来るようにしたいのです。
>
>>セルにリンク式出なくVBAにて設定すればよいかも知れません。
>VBAで設定するとコマンドボタンの操作が必要になり?、操作が面倒な気がするのですが?
>
>>リンク等の必要性(常にいるものかどうか)を検討してデーターのみコピーするとかの検討すればよいかも?
>データーと枠組みを分けるには、リレーショナルデーターベース(DB)で作るべきものかもしれません。又、シートコピーの必要性は、sheet("個人表")の枠組みが変更された場合にのみ発生し、コピーの頻度は比較的少ないのです。
>
>>リンクのこうしんをとめるとかの方法もあります、再度検討してください。
>
>手動での再計算にしてから、シートをコピーすることではないのですか?
>
>いろいろ書きましたが、宜しくお願いします。

【43082】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/10/1(日) 19:08 -

引用なし
パスワード
   ▼パン さんへ、早々の回答有難うございました。
>これは、同じbookということですか?リンクというと別bookと仮定して。

同じBOOK内です。同一内のシートを参照しています。
全てのシートとフォームが1つのBOOKです。

>**** メンテメニューでsheet("個人表")を100人分コピーして100人の「個人表」を利用出来るようにしたいのです。
>100人分を同時に見ることはないと考えます[切り替えで表示する]

無理が有る様に思えます。
>
>私の理解力が乏しい為、明確な回答は難しいのですが(基本データーをsheet("基本情報")が良くわからないので
>簡単なのは、100人分コピーしなくても利用できるようにすれば良いと思います
>
>データーベースは、特に必要ないと思います。
>3700*20くらいのものでも、読み込みに5秒くらいです配列に入れて使用できます
>構成がいまいち理解できずに、ばらばらな回答になってしまいました。
>sheet("基本情報")に、各個人の基本データーをsheet("個人原簿")の関係がどうなっているかが想像できないので、詳しく説明していただければもう少しまともな返事も出来るのですが、申し訳ありません。

説明不足でしたので補足致します。
メインメニュー(FORM)には、
基本情報(sheet)
個人選択メニュー(FORM)
メンテメニュー(sheet)
個人原簿(sheet)
等のコマンドボタンを配置しています。

メンテメニュー(sheet)で、
sheet("個人表")を100枚コピーするコマンドボタンを設置。

個人選択メニュー(FORM)で
複数のsheet("個人表")の1つを選択します。
次に、
タイムカードの実労時間の集計を個々のsheet("個人表")でします。
尚、
sheet("個人原簿")は、
各個人、個々の基本データー[通常出勤時間]等を入力します。
sheet("基本情報")は、
共通のデ−ター例えば[処理月]等を入力します。
sheet("個人表")は、100枚程必要で、
個々の1カ月分のタイムカードの出勤時間と退社時間を入力して1カ月分の実労時間を計算します。

以上素人が考えたプログラムですが、アドバイス、宜しくお願いします。

【43091】Re:一度に100枚のシートをコピーしたい
質問  パン E-MAIL  - 06/10/2(月) 0:08 -

引用なし
パスワード
   ▼masukun さん:

概要は理解できました。

細かく説明は無理がありますので、とりあえず大まかに行きます。
いきなり完璧には行かないと思いますので早く出来る方法で作りながら改良していくのが良いと考えます。

まず、勤務管理フォルダを作ります、その中に基本情報ファイルを作りその中に社員番号、勤務時間[通常出勤時間]等を入力します。
勤務管理フォルダの中にに個人フォルダを作り社員番号別に”001.csv”と言うような
ファイルを作ります(基本情報ファイルの社員番号を元に複数のsheet("個人表")と同等)
後は管理すればよいのですが、、、、
個人表に入力し保存処理、大まかな流れで解りにくいかもしれません。
単純に説明すると、100シートコピーしたものをCSVファイルで管理することです。


>▼パン さんへ、早々の回答有難うございました。
>>これは、同じbookということですか?リンクというと別bookと仮定して。
>
>同じBOOK内です。同一内のシートを参照しています。
>全てのシートとフォームが1つのBOOKです。
>
>>**** メンテメニューでsheet("個人表")を100人分コピーして100人の「個人表」を利用出来るようにしたいのです。
>>100人分を同時に見ることはないと考えます[切り替えで表示する]
>
>無理が有る様に思えます。
>>
>>私の理解力が乏しい為、明確な回答は難しいのですが(基本データーをsheet("基本情報")が良くわからないので
>>簡単なのは、100人分コピーしなくても利用できるようにすれば良いと思います
>>
>>データーベースは、特に必要ないと思います。
>>3700*20くらいのものでも、読み込みに5秒くらいです配列に入れて使用できます
>>構成がいまいち理解できずに、ばらばらな回答になってしまいました。
>>sheet("基本情報")に、各個人の基本データーをsheet("個人原簿")の関係がどうなっているかが想像できないので、詳しく説明していただければもう少しまともな返事も出来るのですが、申し訳ありません。
>
>説明不足でしたので補足致します。
>メインメニュー(FORM)には、
>基本情報(sheet)
>個人選択メニュー(FORM)
>メンテメニュー(sheet)
>個人原簿(sheet)
>等のコマンドボタンを配置しています。
>
>メンテメニュー(sheet)で、
>sheet("個人表")を100枚コピーするコマンドボタンを設置。
>
>個人選択メニュー(FORM)で
>複数のsheet("個人表")の1つを選択します。
>次に、
>タイムカードの実労時間の集計を個々のsheet("個人表")でします。
>尚、
>sheet("個人原簿")は、
>各個人、個々の基本データー[通常出勤時間]等を入力します。
>sheet("基本情報")は、
>共通のデ−ター例えば[処理月]等を入力します。
>sheet("個人表")は、100枚程必要で、
>個々の1カ月分のタイムカードの出勤時間と退社時間を入力して1カ月分の実労時間を計算します。
>
>以上素人が考えたプログラムですが、アドバイス、宜しくお願いします。

【43096】Re:一度に100枚のシートをコピーしたい
回答  awu  - 06/10/2(月) 11:03 -

引用なし
パスワード
   次のような感じで如何でしょうか。

Sub ボタン1_Click()
Dim cnt As Integer
For cnt = 1 To 100
  Sheets("1").Select
  Sheets("1").Copy Before:=Sheets(cnt)
  If cnt Mod 10 = 0 Then DoEvents
Next
End Sub

【43123】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/10/2(月) 22:49 -

引用なし
パスワード
   ▼awu さんへ解答有難う。
>次のような感じで如何でしょうか。
>
>Sub ボタン1_Click()
>Dim cnt As Integer
>For cnt = 1 To 100
>  Sheets("1").Select
>  Sheets("1").Copy Before:=Sheets(cnt)
>  If cnt Mod 10 = 0 Then DoEvents
>Next
>End Sub
やはり、28枚コピーすると
Sheets("1").Copy Before:=Sheets(cnt)
で止まります。

【43124】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/10/2(月) 23:27 -

引用なし
パスワード
   ▼パン さんへ、回答有難う御座いました。

>勤務管理フォルダの中にに個人フォルダを作り社員番号別に”001.csv”と言うような
>ファイルを作ります(基本情報ファイルの社員番号を元に複数のsheet("個人表")と同等)
>後は管理すればよいのですが、、、、
>個人表に入力し保存処理、大まかな流れで解りにくいかもしれません。
>単純に説明すると、100シートコピーしたものをCSVファイルで管理することです。


1つのbookの中の複数のsheet("個人表")でなく、個人毎に別々のcsvファイルに保存して行くと言う意味ですね。しかし、どう管理するのですか?一度csvファイルで保存したファイルを呼び出したり、手直ししたりするにはどうするのですか?

お手数ですが今一度教えて下さい。宜しくお願いします。

【43126】Re:一度に100枚のシートをコピーしたい
発言  パン E-MAIL  - 06/10/3(火) 0:38 -

引用なし
パスワード
   ▼masukun さん:

シート2へ書き込みをするプロシージャです。
テストしてないのでエラーがあるかも知れませんが。
Open "フルパス¥ファイル名.csv" For Input As #1 ’’メソッドとClose #1
を調べてみてください、(すみません今週はバカンスで来週いっぱいネット環境とは無縁になります)
シート2へデーターがカキコされます(方法は色々在ります)
本当に申し訳ありません、csvを開かずに読み込みする方法とかあります、とりあえず動作確認も含めて、したのコードをトライしてみてください。
シートで管理するより簡単です。(データーが多い時はファイルを開いて csvdat = SHT01.Cells(2, 2).Resize(20, 6).Valueで配列に入れることも出来ます。)
一発で決まるコーディングを教えてもらってもその後の応用&拡張性が困難になりますので、がんばってください(帰ってきたらかならず見ますのでごめんなさい)

BY パン 

Sheets("Sheet2").Select
  
  Open "フルパス¥ファイル名.csv" For Input As #1
  GYO = 1


  For XX = 3 To 10 ''''8項目データーを拾う’’’’’
    
    lngREC = lngREC + 1
    Input #1, x(1), x(2), x(3), x(4), x(5), x(6), x(7), x(8)
    GYO = GYO + 1
    Range(Cells(GYO, 1), Cells(GYO, 8)).Value = x 
  Next XX
 
  Close #1
  
    
End Sub


>▼パン さんへ、回答有難う御座いました。
>
>>勤務管理フォルダの中にに個人フォルダを作り社員番号別に”001.csv”と言うような
>>ファイルを作ります(基本情報ファイルの社員番号を元に複数のsheet("個人表")と同等)
>>後は管理すればよいのですが、、、、
>>個人表に入力し保存処理、大まかな流れで解りにくいかもしれません。
>>単純に説明すると、100シートコピーしたものをCSVファイルで管理することです。
>
>
>1つのbookの中の複数のsheet("個人表")でなく、個人毎に別々のcsvファイルに保存して行くと言う意味ですね。しかし、どう管理するのですか?一度csvファイルで保存したファイルを呼び出したり、手直ししたりするにはどうするのですか?
>
>お手数ですが今一度教えて下さい。宜しくお願いします。

【43143】Re:一度に100枚のシートをコピーしたい
発言  &H309  - 06/10/3(火) 15:16 -

引用なし
パスワード
   こんにちは。

以下の情報は参考になるでしょうか?
http://support.microsoft.com/?scid=kb;ja;210684&spid=1741&sid=36

大量のシートを連続してコピーするとエラーになるようです。

【43150】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/10/3(火) 20:11 -

引用なし
パスワード
   ▼&H309 さんへ、回答有難う御座いました。
>こんにちは。
>
>以下の情報は参考になるでしょうか?
>http://support.microsoft.com/?scid=kb;ja;210684&spid=1741&sid=36
>
>大量のシートを連続してコピーするとエラーになるようです。

どうやら、私だけの問題では無いようでした。
大量のシートを連続してコピーするとエラーになる必然性があるように思えます。
納得出来ました。有難う御座いました。

【43151】Re:一度に100枚のシートをコピーしたい
お礼  masukun  - 06/10/3(火) 20:52 -

引用なし
パスワード
   ▼パン さんへ、丁寧な回答大変参考になりました。有難うございました。

>本当に申し訳ありません、csvを開かずに読み込みする方法とかあります、とりあえず動作確認も含めて、したのコードをトライしてみてください。
>シートで管理するより簡単です。

残念ながら今の私にはシートで管理する方がよほど楽です。

>一発で決まるコーディングを教えてもらってもその後の応用&拡張性が困難になりますので、

同感です。 

>Sheets("Sheet2").Select
>  
>  Open "フルパス¥ファイル名.csv" For Input As #1
>  GYO = 1
>
>
>  For XX = 3 To 10 ''''8項目データーを拾う’’’’’
>    
>    lngREC = lngREC + 1
>    Input #1, x(1), x(2), x(3), x(4), x(5), x(6), x(7), x(8)
>    GYO = GYO + 1
>    Range(Cells(GYO, 1), Cells(GYO, 8)).Value = x 
>  Next XX
> 
>  Close #1
>  
>    
>End Sub
>

チャレンジしてみました。
しかし、simple is bestでないけど、csvファイルを使ったこの方法はシートで管理するより、プログラム全体が複雑になり過ぎる気がします。

6789 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free