DOBON.NETプログラミング道掲示板
HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
■35642
/ 5階層)
GetObjectでExcelファイルを加工するとExcelファイルが壊れる
□投稿者/ 魔界の仮面弁士
大御所(1580回)-(2024/12/12(Thu) 16:11:45)
■
No35641
に返信(suekunさんの記事)
> 関連なのですが
ファイルが破損してしまっている状態だったのか
それともブックが非表示になっていただけなのか
確認はとれましたか?
> そうしないと、読み取り専用で開いてしまいます。
この判定を行う目的を教えてください。
編集・保存することを目的としたものでしょうか。
それとも、他で同時に開かれていないことを保証したいのでしょうか。
目的を満たすために、GetObject 以外の手法を使うことは許容されますか?
他で開かれていても保存までできるパターンはありますし
他で開かれていなくても保存できないパターンもありますし、
他で開かれていて Workbooks.Open で排他エラーになるパターンもあるので
念のために確認しています。
最終的に、ファイルに「読み取り専用属性が付いているか」とか
アクセス権で「読み取りは許可されているが編集は許可されていない」などの
パターンまでチェックするのか、何のためにどこまで調査したいのか…。
GetObject に拘りが無ければ、ROT から Excel.Application オブジェクトを辿って、
Excel.Application インスタンス (表示名「!{00024500-0000-0000-C000-000000000046}」)から
それぞれの Workbooks コレクションを列挙判定するという手段もあります。
コードとしては些か回りくどくなりますが…。
https://alax.info/blog/1444
http://bbs.wankuma.com/index.cgi?mode=one&namber=103471
> これはいかがでしょうか?正常に動作しています。
うぅむ?
ListFile と NyukoCSVListFile の関連性が謎ですね??
変数宣言や Visible の指定有無など、色々と省略され過ぎていて、
是非の判断がしづらいところです。
> wb = Appxl.Workbooks.Open(ListFile)
この書き方は避けるべきですが、ここも掲示板投稿時に
簡略化しているだけだと思うので、ひとまず目を瞑るとして…。
> If IO.File.Exists(ListFile) = True Then
> Try
> System.IO.File.Move(ListFile, ListFile)
1 行目では「System」を省略して、
3 行目では明記するという非対称性がとても気になる…。
Boolean 値の判定時に「= True」を書くべきか否かとか、
GoTo の是非とか、素の Exception を Catch するべきかどうかとか、
Message を表示するだけでどの Exception かを記録しないのか、
そういった宗教論についてはとりあえず保留するとして。
閑話休題
> '移動できなかったら起動していると判定
この手順ですが、確実性のある手法では無いです。
そのファイルが Excel で開かれているからといって、同名 Move が失敗する保証は無いからです。
たとえば、扱っていたファイルが MultiUserEditing = True なものだった場合です。
共有モードで開かれたファイルであれば、複数ユーザーが同時に開いて編集して保存できますし、
開かれている最中でも、コマンドプロンプトからの同名 MOVE や VB からの同名 File.Move が
エラーを発することはありません。
もちろん、そうした前提条件が明確になっていて、それで目的を果たせる場合は
現在の手法でも構わないと思います。
違反を報告
Javascriptを有効にしてください
この投稿が掲示板のルールに違反しており、何らかの対処が必要であると思われる場合は、以下のフォームを利用して管理人に報告することができます。
マルチポストの報告は、返信フォームの上にある「マルチポストの報告」リンクをご利用ください。
この機能の悪用は絶対にしないでください。
悪用されたと管理人が判断した場合は、予告なしで厳しい対処がなされる可能性があります。
確認等の目的で、入力されたメールアドレス宛に返信メールが送信される可能性があります。メールの受信ができないメールアドレスは入力しないでください。
下のフォームが使用できない場合は、
メールフォーム
を使って管理人にご報告ください。
お名前(必須)
メールアドレス(必須)
本文(必須)
(違反理由など)
削除キー/
編集
削除
前の記事
(元になった記事)
次の記事
(この記事の返信)
←Re[4]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/suekun
→Re[6]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/魔界の仮面弁士
→Re[6]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/suekun
→Re[6]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/suekun
上記関連ツリー
GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ suekun
(24/12/11(Wed) 11:53)
#35636
├
Re[1]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ suekun
(24/12/11(Wed) 15:14)
#35637
└
Re[1]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ 魔界の仮面弁士
(24/12/11(Wed) 16:44)
#35638
└
Re[2]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ suekun
(24/12/11(Wed) 17:03)
#35639
└
Re[3]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ 魔界の仮面弁士
(24/12/11(Wed) 18:15)
#35640
└
Re[4]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ suekun
(24/12/12(Thu) 07:28)
#35641
└
GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ 魔界の仮面弁士
(24/12/12(Thu) 16:11)
#35642
←Now
├
Re[6]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ 魔界の仮面弁士
(24/12/12(Thu) 16:23)
#35643
├
Re[6]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ suekun
(24/12/13(Fri) 08:56)
#35644
└
Re[6]: GetObjectでExcelファイルを加工するとExcelファイルが壊れる
/ suekun
(24/12/18(Wed) 15:31)
#35645
解決
済
み!
上記ツリーを一括表示
/
上記ツリーをトピック表示
上記の記事へ返信
入力内容にタグは利用できません。
引用部分(行頭に「>」や「■」が付いている部分)が全体の 80% 以上のコメントは投稿できません。
半角カナは使用しないでください。文字化けの原因になります。
削除キーを覚えておくと、自分の記事の編集・削除ができます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
使用例)
No123 → 記事No123の記事リンクになります(指定表示)。
No123,130,134 → 記事No123/130/134 の記事リンクになります(複数表示)。
No123-130 → 記事No123〜130 の記事リンクになります(連続表示)。
投稿前に必ずお読みください
初めて投稿される方は、必ず「
書き込みのルールについて(12/4/2更新)
」をお読みください。
読むのが面倒、ルールを守りたくないという方は、「
お気楽掲示板
」へ投稿してください。
質問を投稿する場合は、「
質問をする際のアドバイス
」を参考にしてください。
投稿は、明記のない限り、パブリックドメインになります。
マルチポストされた投稿を報告する時は匿名で投稿し、マルチポストされている場所を併記してください。以下のリンクをクリックしていただくと、自動で下のフォームが埋まりますので、その後「送信」ボタンを押してご投稿ください。
マルチポストの報告をする
マルチポストの報告をするが、マルチポスト先の投稿が嫌がらせである(元の投稿者とは別人が行なっている)可能性が高い
(投稿日時に開きがあり、こちらの投稿の方が早い場合は、その可能性が高いです)
Name
/
E-Mail
/
Title
/
URL
/
Comment/ 通常モード->
図表モード->
(適当に改行して下さい/半角10000文字以内)
■No35642に返信(魔界の仮面弁士さんの記事) > ■No35641に返信(suekunさんの記事) >>関連なのですが > ファイルが破損してしまっている状態だったのか > それともブックが非表示になっていただけなのか > 確認はとれましたか? > > >>そうしないと、読み取り専用で開いてしまいます。 > この判定を行う目的を教えてください。 > > 編集・保存することを目的としたものでしょうか。 > それとも、他で同時に開かれていないことを保証したいのでしょうか。 > 目的を満たすために、GetObject 以外の手法を使うことは許容されますか? > > 他で開かれていても保存までできるパターンはありますし > 他で開かれていなくても保存できないパターンもありますし、 > 他で開かれていて Workbooks.Open で排他エラーになるパターンもあるので > 念のために確認しています。 > > 最終的に、ファイルに「読み取り専用属性が付いているか」とか > アクセス権で「読み取りは許可されているが編集は許可されていない」などの > パターンまでチェックするのか、何のためにどこまで調査したいのか…。 > > GetObject に拘りが無ければ、ROT から Excel.Application オブジェクトを辿って、 > Excel.Application インスタンス (表示名「!{00024500-0000-0000-C000-000000000046}」)から > それぞれの Workbooks コレクションを列挙判定するという手段もあります。 > コードとしては些か回りくどくなりますが…。 > https://alax.info/blog/1444 > http://bbs.wankuma.com/index.cgi?mode=one&namber=103471 > > >>これはいかがでしょうか?正常に動作しています。 > うぅむ? > ListFile と NyukoCSVListFile の関連性が謎ですね?? > > 変数宣言や Visible の指定有無など、色々と省略され過ぎていて、 > 是非の判断がしづらいところです。 > >>wb = Appxl.Workbooks.Open(ListFile) > この書き方は避けるべきですが、ここも掲示板投稿時に > 簡略化しているだけだと思うので、ひとまず目を瞑るとして…。 > > >>If IO.File.Exists(ListFile) = True Then >> Try >> System.IO.File.Move(ListFile, ListFile) > 1 行目では「System」を省略して、 > 3 行目では明記するという非対称性がとても気になる…。 > > Boolean 値の判定時に「= True」を書くべきか否かとか、 > GoTo の是非とか、素の Exception を Catch するべきかどうかとか、 > Message を表示するだけでどの Exception かを記録しないのか、 > そういった宗教論についてはとりあえず保留するとして。 > > > 閑話休題 > >> '移動できなかったら起動していると判定 > この手順ですが、確実性のある手法では無いです。 > そのファイルが Excel で開かれているからといって、同名 Move が失敗する保証は無いからです。 > > たとえば、扱っていたファイルが MultiUserEditing = True なものだった場合です。 > 共有モードで開かれたファイルであれば、複数ユーザーが同時に開いて編集して保存できますし、 > 開かれている最中でも、コマンドプロンプトからの同名 MOVE や VB からの同名 File.Move が > エラーを発することはありません。 > > もちろん、そうした前提条件が明確になっていて、それで目的を果たせる場合は > 現在の手法でも構わないと思います。
File
/
アップ可能拡張子=> /
.gif
/
.jpg
/
.png
/.zip
1) 太字の拡張子は画像として認識されます。
2) 画像は初期状態で縮小サイズ250×250ピクセル以下で表示されます。
3) 同名ファイルがある、またはファイル名が不適切な場合、
ファイル名が自動変更されます。
4) アップ可能ファイルサイズは1回
20KB
(1KB=1024Bytes)までです。
5) ファイルアップ時はプレビューは利用できません。
6) スレッド内の合計ファイルサイズ:[0/300KB]
残り:[300KB]
Icon
/
ホイールロボ
くるりロボ
ぱんだ
ふとめネコ
ねずみ
こあら
疑問ねこ
ランダム
管理者用
(画像を選択/
サンプル一覧
)
削除キー
/
(半角8文字以内)
解決
済
み!
BOX/
解決したらチェックしてください!(スレッドを閉じる目的ではチェックしないでください!)
クリエイティブ・コモンズ・ライセンス
を Comment の末尾に挿入するには、以下のリンクをクリックしてください。(Javascript で挿入しているだけです。)
表示(CC BY)
|
表示-改変禁止(CC BY-ND)
|
表示-継承(CC BY-SA)
|
表示-非営利(CC BY-NC)
|
表示-非営利-改変禁止(CC BY-NC-ND)
|
表示-非営利-継承(CC BY-NC-SA)
プレビュー/
クッキーに保存しない/
Mode/
通常管理
表示許可
Pass/
HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
-
Child Tree
-