• 締切済み

poiにてエクセルのシート時のエラーが対処できずに困っています。

プログラムの実行時に、テンプレートファイル(EXCELL)からコピーを行いシートを二つ作成しています。 指定した日付から二日分の活動日報を作成しているのですが、データが1日分しかなかった場合には、二つ目のシートの削除を行っています。 処理は問題なく終わるのですが、エクセルを開くと「1つ以上の無効な名前が削除されました」とエラーが表示されてしまいます。 このエラーの対処方法をご存知のかた教えてください。 宜しくお願いします。

  • Java
  • 回答数1
  • ありがとう数3

みんなの回答

  • yokkou
  • ベストアンサー率30% (34/111)
回答No.1

ActiveSheetを残っているシートに設定してからPOIで保存をしないとダメだったような気がします 自分では試したことが無く、他の人がそのように言っていた(自分の周りで)気がします 他に有効な手段が無ければ、試してみてください

companyuse
質問者

お礼

ありがとうございます。 あーそうか、と回答を見て思っています。 参考になりました。 試してみます。 今後とも宜しくお願いします。

関連するQ&A

  • POIによるExcelシートの編集

    Jakarta POI2.5を使って、テンプレートのExcelシートにデータを書き込み、 不要なシートを削除してクライアントにダウンロードさせたいんですが、 ダウンロードしたExcelファイルを開くと「1つ以上の無効な名前が削除されました」 というエラーメッセージが出てしまいます。 どうやら、Excel2002以上で開くと発生するようです。 これの原因及び解決策がさっぱりわかりません。 これなんなんでしょうか??

  • EXCELシート内のセルのシート間コピー

    エクセル2003を使用しております。 業務で日報を毎日書いているのですが 日付ごとにシートが変わります。 前日分の引継ぎ事項を本日分のシートに というように1つ前のシートの1部を常に コピーしたいのですが何か良い方法が あれば教えていただきたいです。 ちなみにコピーしたものは編集可能で なければいけません。 よろしくお願い致します。

  • エクセルのシート毎に日付

    業務日報を作成しています。 1シート1日なので、1ヶ月30シート~31シートあります。 1ヶ月1ファイルです。 この全シートのA1に日付を入れたいのですが、毎日入力するとも 限らないので、最初から 2008年8月1日(金)のような日付を 入力したいのです。 その場合、1日分を入力したら2日以降31日まで入力になるような 方法はないでしょうか?

  • エクセルVBA ワークシート操作について

    エクセル2000 VBAで ワークシートが左から順番に 入力フォーム⇒加工費単価マスタ⇒出荷日報(原紙)と 3個あり4個目に出荷日報(原紙)をコピーしたワークシートを 入力して⇒テキストボックス1 (日付入力します出来れば、日付入力の指定方法⇒テキストボックスの入力制限方法も教えていただきたいです)に入力した名前を ワークシートに付けて保存したいのですが? 翌日は また左から4番目の位置にコピーされ 右に行くほど古い日付の順番にしたいです。 説明が不足していましたら連絡お願いします。

  • Excelで困っています

    ヘルプを見てもチンプンカンプンでした、、、 質問がいくつもあるのですが、1つでもわかる方いらっしゃいましたらお願いします ■前提 職場のパソコンにExcel2010で作った現金出納帳ファイルがあるのですが、パソコンに非常に疎い上司がよく計算式の入ったセルにまで手入力して計算結果をおかしくさせていました そこで私が少々いじって整え、シートの保護により計算式の入ったセルに入力できないようにしました ■質問1 しかしこの現金出納帳ファイル、毎月何ページ必要かが変動するので、1ページ目をコピー貼り付けして2ページ目にするのです(1シートに1月分を作る) コピー貼り付けした2ページ以降の計算式セルは保護情報までコピーされておらず、手入力し放題でした これを知らなかった私、それなら保護もあまり意味がないと思い、保護を解除しようとしました ところがパスワードをいくら入力してもエラーが出ます、、、 まさかのパスワード紛失です この紛失したパスワードをどうにかして保護を解除することは出来ますか? ■質問2 テンプレートが別のファイルに存在するので、本当はそのシートを現金出納帳ファイルの方にコピー又は移動したいのですが「データがいっぱいで移動出来ません」みたいなエラーが出ます なので今はテンプレートのセルを選択してコピーし、現金出納帳ファイルの新しいシートに貼り付けるか、前月分のシートをコピーして値を消すかどちらかの方法で次月分を作成しています どうすればテンプレートのシートを現金出納帳ファイルに持って来れますか? ■質問3 9月になったので「9月分の現金出納帳を作りたい」と上司から言われました そこで8月分のシートをコピーして9月分にしようとしたらエラーが出ました 「このコマンドは、共有ファイルで実行することはできません。排他モードで開いてください。」 8月まで出なかったエラーです なぜ急に出るようになったのでしょうか? ■質問4 私の頭が悪いのか個人的に使いづらくて役に立たせられないヘルプを見て、共有を解除して排他モードにするという方法にたどり着きました 見事シートのコピーをすることが出来ました 8月分は4ページまで作ってありましたが使われていたのは3ページ目まででした 4ページも要らないのかと思い、セルを選択して削除しようとしたら、なんとセルの操作が無効になっているのです 追加、削除、書式変更などの多くのメニューが無効色になっていて選択出来ません 辛うじてクリアは出来ましたが、万が一4ページ目が必要になった場合でもコピー貼り付けが出来ません 試しに排他モードを元の共有モードにしてみましたが変わりませんでした なぜいきなり出来なくなってしまったか判りません どうすればまたセルの操作が出来るようになりますか? 以上です どなたか宜しくお願いします

  • エクセルVBAで、特定のシートからボタンで別シートへ指定行より下へ順番

    エクセルVBAで、特定のシートからボタンで別シートへ指定行より下へ順番に転記し、蓄積していく方法を教えてください。 ☆特定シート(日報報告) ----------------------------------   日付 銘柄  合計 1  1/1 りんご  5 2  1/1 みかん  8 ----------------------------------- ※日報報告は毎日入力し報告すれば削除します ↓↓日報報告を毎日入力し月締め報告へ蓄積していきます ☆転記シート(月締め報告) ------------------------------------    日付 銘柄 合計 1  1/1 りんご 5 2  1/1 みかん 8 3  1/2 りんご 7 ← 同じ日報報告シートより日付順で蓄積 4  1/2 ばなな 3 5  1/3 りんご 6 ← 同じ日報報告シートより日付順で蓄積 ------------------------------------- ※月締め報告は、転記した日報報告の蓄積をしていきます。 上記表で、日報報告を月締め報告へ転記することは マクロを使用して出来たのですが、 蓄積していく方法がわかりません。 VBAも初心者です。 説明等足りない部分もあるかと思いますが、 みなさまの知恵をお借りできたらと思っております。 エクセルバージョンは2003です。 宜しくお願いいたします。

  • エクセル:シートを増やす際の日付更新について

    エクセルのテクニックはほぼ素人の者ですが、 上司より日報や顧客管理シートを作るよう指示されたため、マクロを少しずつ利用し始めました。 本題の質問なのですが、日報管理に関しては「原本」シートを作成し、「シート追加」のボタンを日々押して新たなシートを作成して蓄積する方法が良いと考え、なんとかそこまでは初心者ながら作成出来ました。 が、日付に関して困っています。 原本には「TODAY関数」を入れており、追加されたシートで関数の入ったセルをコピー → 値として保存の操作で希望の形に出来るのですが、シート名も日付に合わせた形→ActiveSheet.Name = Range("A3") のように設定しても、そもそも(/)が残っているので上手くいきません。 ただの文字列にしようとしてもシリアル値に変わってしまうため、これまた上手くいきません。 追加したシートのシート名を手打ちで打ち直す方法をとればいいだけの話ですが、方法があればご教授頂きたく存じます。 よろしくお願いいたします。

  • エクセル(マクロ)で累計部分を更新しながらシートを

    日報作成をマクロで自動化する方法を探しています。 とりあえずできたのは、 1:「1日」シートを作り、セルA1には日付「2015年9月1日」を入力。 2:「1日」シートをコピーして「2日」シートを作成し、セルA1の日付を「2015年9月2日」に変更。 3:2の作業を「31日」シートまで繰り返す。 というところまでです。 (1つのワークブックに、「1日」~「31日」までのシートがある状態です。) これに加えて、たとえば、セルB1に当日売上を入力すると、 セルB2に月累計が出るようにしたいのです。 試してみたのは、「1日」シートのセルB2に「=B1」と入力し、 「2日」~「31日」シートのB2に =INDIRECT(TEXT(A1-1,"1日")&"!B2")+B1 と入力してみましたが、これだと月累計ではなく「1日」シートのみとの合計になってしまい、 「3日」~「31日」シートでは、数式内のシート名"1日"の部分を 手動で更新していかなければなりません。 数式内のシート名を翌日の日付に変更しながらシートをコピーする方法はありますか? または、 B2=前日シートのB2+当日シートのB1 となる数式は無いでしょうか?? ちなみに今マクロで使っているのは下記のコードです。 ——————————— Sub 日報作成() Dim firstDay As Date firstDay = InputBox("日報", "最初の日付を指定", Date) '最初のシートの日付を指定 Worksheets("1日").Range("A1") = firstDay Dim i As Integer For i = 1 To 30 Worksheets("1日").Copy after:=Worksheets(Worksheets.Count) '1日のコピーを末尾に作る Worksheets(Worksheets.Count).Name = i + 1 & "日" 'コピーしたシートの名前を変える Range("A1").Value = DateAdd("d", i, firstDay) '日付を一日ずつ足していく Next i End Sub ――――――――――― 似たようなデータを毎月大量に作るので、どうにか効率化できたらと思っています。 ちなみに、わたしはプログラミングCを少しかじったことがありますが、 マクロを使うのは初で、上記もネットで見つけたコードを少しいじった程度です、、 詳しい方がいらしたら教えてください。 よろしくお願いいたします。

  • Excel実行時エラー-2146959355?

    windows7 64bit 、Excel2010の環境のPCに、とあるアプリケーションがあります、このプログラムはコマンドを実行すると、附属されてるExcelテンプレート(マクロがあるxlt)を開き、Excelファイル(xls)を作成する仕組みなのですが、実行すると「visual Basic(タイトル) 実行時エラー -2146959355(8008005)サーバーの実行に失敗しました。」が出ます。考えられる原因は何なのでしょう?(今回はじめて使います) 大変恐縮なのですが、よろしくお願いします。

  • ワードにエクセルのシート機能ないのですか

    ワードを使用して日報を作成しています。出来ればエクセルのシート機能がワードにあれば、一つのシートに一日分の日報を書き込み、一ヶ月分をすぐ開けて、一つのファイルで管理が、しやすいかと思いますが・・・ワードでそんな機能はないのでしょうか。又出来ないのでしょうか。よろしくお願いします。

専門家に質問してみよう