Indexへ
(32834)//【32816】→(32818)
------------------------
【タイトル】NOTEPAD・エクセルを利用した置換
【記事番号】 32816 (*)
【 日時 】09/01/29 18:46
【 発言者 】ai

NOTEPAD・エクセルを利用して置換作業をしているのですが、
(文字数の制限なしで複数文字の同時置換を行いたかったのですが、
置換の外部変形を作れるだけの知識がなかったのでエクセルで処理をしています)

1) エクセルを起動する
2) jwwの図面内の文字をNOTEPADに抜き出す
3) NOTEPADに抜き出した文字を全選択してコピー
4) コピーした内容をエクセルに張り付ける
5) データを貼り付けたらマクロで置換&置換後のデータコピーが実行されます
(エクセル内のセルに置換前の文字と置換後の文字、大文字小文字の区別を
つけるかどうかなどの情報を記入していてそれに基づいて置換します)
6) コピーされた変換後の文字をNOTEPADに貼る
7) NOTEPADを閉じる

という手順で作業しており作業が多いため、
jwwの外部変形で処理できないかと考えています。

プログラミングをしたことがなくネット検索しても、
置換関連の外部変形を拾ってのソース(?)を眺めてみても内容が
分からなかったため助けていただきたいです。


http://www.jwcad.net/log/consult2/consult2-0601-03/thread9187.htm
http://sendai.cool.ne.jp/mintleaf/cad/jwc_bat.html
http://www.jwcad.net/log/consult/consult1-0401-03/thread12940.htm
http://www.tmk-s.com/gaihen/2006/02/post_6.html
上記HPを参考に


@REM 文字置換
@echo off
REM #jww
REM #cd
REM #h3  範囲内の文字データのみを選択
REM #hc  ■範囲を指示してください。■
REM #g1  全レイヤを選択範囲にする
REM
REM #e
start Excel.exe C:\jww\JW外部変形\文字\置換\複数同時置換.xls
start /w notepad.exe jwc_temp.txt
rem pause
:END

としてみたのですが、


a) 複数同時置換.xlsが既に起動している場合は起動実行をしないようにするための
回避処理方法
(二重起動になり読み取り専用で開きますか?となってしまうため)

b) NOTEPADに文字のみ抜き出す方法
(文字種類・文字サイズ・文字色などのデータも抜き出されているようなので、
文字だけを抜き出したいのですが方法がわからないため)

c) NOTEPADに抜き出した文字を全選択してコピーする方法

d) エクセル上で文字の大小の区別や置換文字の記入などをするので、
エクセルにNOTEPADのデータを貼り付けるのは手動でしたいのですが、
張り付けた後の外部変形再開方法。
(rem pauseで作業の停止?)
※データを貼り付けたら置換と置換後の文字のコピーはエクセル上で自動処理します

e) 置換後のデータをNOTEPADに張り付けてNOTEPADを閉じる作業を自動処理する方法


分からない事だらけで申し訳ありませんが、お教えいただきたいです。
よろしくお願いいたします。


Indexへ
(32816)←【32818】→(32821)
------------------------
【タイトル】Re(1):NOTEPAD・エクセルを利用した置換
【記事番号】 32818 (32816)
【 日時 】09/01/29 21:07
【 発言者 】mirror

▼aiさん:
何かjwwの外部変形機能に大いなる幻想を持っているようですが・・・
1)〜7)迄の手順を通して(NOTEPADとエクセルとjww)制御するのは、茨の道ですよ。

a)
通常は、起動される表計算側の自動実行マクロで制御して二重起動のロックをします。
APIの実装が可能であれば、表計算に拘る必要はありません。

b)
jwwの外部変形機能が吐出すデータは、位置情報やレイヤ情報・その他のデータを含みます。
通常は受取側のスクリプトで処理した上で
目的とした加工を施して、位置情報やレイヤ情報・その他のデータを含んだ上で書き戻します。
プレーンな文字列のみのデータを吐出せるのは、文字コマンドの外部エディタ機能です。
エディタにマクロ機能が実装されているのであれば、そちらを利用する事を推奨します。
キーマクロツールを利用して、NOTEPADを制御する事が可能であればそれでも構わないでしょう。

c)
外部変形機能では、恐らくshellの関係で他AP(NOTEPAD)を制御する事は難しいと思われます。
winAPIの知識があれば、出来ない事はありませんが・・・
外部変形の吐出しデータを受取側のスクリプトで処理する事が出来れば
NOTEPADが介在する必要はないと思います。
[jwc_temp.txt]を[複数同時置換.xls]で開いて処理し
[複数同時置換.xls]が[jwc_temp.txt]に必要な加工を施して書き戻す事になります。

d)
e)
NOTEPADを介在させる前提の質問のようですので、割愛します。
茨の道ですが、1)〜7)迄の手順をそのまま再現する事も出来ない事はありません。

目的とする所(文字数の制限なしで複数文字の同時置換を行いたかった・・・)を
外部変形機能で実現するのであれば
[jwc_temp.txt]を[複数同時置換.xls]で開いて処理し
[複数同時置換.xls]が[jwc_temp.txt]に必要な加工を施して書き戻すのが早道です。

因みに、2)の手順を文字コマンドの外部エディタ機能で行っているのであれば
外部変形機能とは、まったくかけ離れた操作であるので注意が必要です。


Indexへ
(32818)←【32821】→(32826)
------------------------
【タイトル】Re(2):NOTEPAD・エクセルを利用した置換
【記事番号】 32821 (32818)
【 日時 】09/01/29 22:40
【 発言者 】ai

▼mirrorさん:
丁寧にありがとうございます。
レイヤ名などをエクセルに記入するjwwの外部変形のソフトがあったので
多分できるんだろーと単純に考えてました難しいんですね・・・。

>因みに、2)の手順を文字コマンドの外部エディタ機能で行っているのであれば
>外部変形機能とは、まったくかけ離れた操作であるので注意が必要です。
外部エディタ機能で行ってました、違うものなんですね。


>目的とする所(文字数の制限なしで複数文字の同時置換を行いたかった・・・)を
>外部変形機能で実現するのであれば
>[jwc_temp.txt]を[複数同時置換.xls]で開いて処理し
>[複数同時置換.xls]が[jwc_temp.txt]に必要な加工を施して書き戻すのが早道です。

エクセルマクロに関しても初心者なのでエクセルで処理できるかどうかわからないですが

A)置換エクセルを開くだけの外部変形を作ってショートカット設定してエクセルを開きやすいようにする。
B)外部エディタ機能で2)の動作をした後でエクセルマクロを使ってtemp.textから
データ取得をして置換、temp.textに置換後のデータを戻してtemp.textを閉じる

という動作ができるか試してみようと思います。
調べたサイト
http://officetanaka.net/excel/vba/file/file08.htm


Indexへ
(32821)←【32826】→(32830)
------------------------
【タイトル】Re(3):NOTEPAD・エクセルを利用した置換
【記事番号】 32826 (32821)
【 日時 】09/01/30 00:40
【 発言者 】スター

▼aiさん:
外部エディタをエクセルにすることも可能です。
目的のマクロがシートに依存しなければ可能かな?

また、外部エディタがエクセルとすると





等の文字をソートして返すことも可能となります。
このように、様々な加工が可能となります。


Indexへ
(32826)←【32830】→(32831)
------------------------
【タイトル】Re(4):NOTEPAD・エクセルを利用した置換
【記事番号】 32830 (32826)
【 日時 】09/01/30 11:02
【 発言者 】ai

▼スターさん:
>外部エディタをエクセルにすることも可能です。
>目的のマクロがシートに依存しなければ可能かな?

利用できると思っていませんでした。
貴重な情報ありがとうございます。

試してみたところ、エラー表示はでますが無視して作業を
進めれば動作しました。


エクセルで開けたので置換シートにマクロ設定できるのではと
マクロの自動記録で下記試したところ上手くいきました。

1)エクセルで開いたTEXTデータと置換エクセルのシートを並べて表示する
 (両方のシートの内容見比べたかったため)
2)TEXTデータの文字をコピー
3)置換シートの置換対象セルにコピーしたデータを貼り付け
※自動で置換・置換後のデータのコピーを実行
4)置換後のデータをTEXTデータに貼り付け
5)TEXTデータ保存

TEXTファイルを閉じるのもエクセルマクロでできると思うので
a) 置換エクセルを開いておく
b) jww内の文字を外部エディタにして開く。
c) 置換エクセルからマクロ実行
という操作ですみそうです。

アドインを作ったことがないのでできるかわからないのですが、
TEXTファイルをエクセルで開いた場合でもアドインが使えるようなので、
置換のエクセルファイルを開くアドインを作っておいてツールバーに設定しておけば

1)jwの外部エディタ(エクセル)で文字を抜き出す
2)アドイン実行で置換エクセルを開く
3)置換エクセルで置換設定が終了したら置換実行ボタンを押す
(文章中の文字の置換をするかしないか、全角半角の区別のありなし、大文字小文字の区別のありなし
置換対象範囲の選択をそれぞれドロップダウンリストで行います)
※置換エクセル及びTEXTデータは自動で閉じるように設定

でできそうな気がしています。

参考予定のアドインのサイト
http://members.at.infoseek.co.jp/kenchan_h/index15.html


Indexへ
(32830)←【32831】→(32832)
------------------------
【タイトル】Re(5):NOTEPAD・エクセルを利用した置換
【記事番号】 32831 (32830)
【 日時 】09/01/30 12:01
【 発言者 】mirror

▼aiさん:
文字→外部エディタでの操作によるデータは
jwwインストールフォルダ(別途に指定していなければ)のTEMP.TXTに出力されています。
私自身は、OpenOffice.org Calcで文字置換えや連番付替・振り直し等を行っていますので
エクセルでも可能でしょう。

手順は次の通りです。
文字→外部エディタ→範囲始点指示→範囲終点指示→選択確定
(この時点でjwwはTEMP.TXTを出力し外部エディタをTEMP.TXT読込で起動して待機状態に遷移します)
別AP(外部エディタでも良い)でTEMP.TXTを書換えて上書き保存し(外部エディタを)終了します。

注意が必要なのは、外部エディタを呼出した後、jwwは操作を待機しているという事です。
この待機状態を抜けてしまうと、位置情報・レイヤ・属性等の情報が失われてしまいます。

jwwは外部エディタにデータファイル(TEMP.TXT)オプションを渡して起動し
外部エディタの終了状態(インスタンスハンドル・或いはwindowハンドル)を確認して
再度TEMP.TXTを開き、位置情報・レイヤ・属性等の情報を内部処理して作図領域に表示しているようです。
外部変形では無く内部変形でしょうか・・・


Indexへ
(32831)←【32832】→(32835)
------------------------
【タイトル】Re(6):NOTEPAD・エクセルを利用した置換
【記事番号】 32832 (32831)
【 日時 】09/01/30 13:16
【 発言者 】ai

▼mirrorさん:
ありがとうございます。
なんとなくできそうかなという感じがしてきています。


手直しして、下記動作で置換できるようにしました。

1) エクセルを外部エディタとして文字を抜き出す
(TEMP.TEXTをエクセルで開く)
2) TEMP.TEXTから複数置換.excelをマクロを有効にして開く
3) 複数置換で置換の条件を選択する
4) エクセルを赤い×ボタンで閉じる(閉じる際にマクロが自動実行されます)

4)の内容
1. TEMP.TEXTから文字をコピー
2. 置換エクセルシートの置換対象範囲に文字貼り付け
3. 複数置換.excelの指定範囲の内容で置換
4. 置換後の文字コピー
3. TEXTデータにコピーした置換後の文字を貼り付け
4. TEMP.TEXTを保存して閉じる
5. 複数置換を保存せずに閉じる(警告メッセージOFF)

エクセルを完全に全てとじないとjwwが待機状態からぬけなかったため
複数置換.excelも閉じる設定にしました。

TENP.TEXTでもアドインは動作するようなので、
アドインを作ったことがないのでできるかどうかわかりませんが
2)をアドイン登録してツールーバー表示してクリック実行できたらと思って勉強中です。


Indexへ
(32832)←【32835】→(32827)
------------------------
【タイトル】外部エディタ 空白
【記事番号】 32835 (32832)
【 日時 】09/01/30 17:49
【 発言者 】ai

外部エディタを参照する際に空白があるとエラー表示がでるらしく、
C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXEで
「Office\OFFICE11\EXCEL.EXE」はありません
「Files\Microsoft Office\OFFICE11\EXCEL.EXE」はありません
という感じに2回エラーがでます。

その後
「C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE」
となるのか、エクセルが開きます。
EXCEL.EXEをスペースがなくなるように移動させるのは怖いのですが、
何かいい方法はありますでしょうか?


Indexへ
(32835)←【32827】→(32833)
------------------------
【タイトル】Re(1):NOTEPAD・エクセルを利用した置換
【記事番号】 32827 (32816)
【 日時 】09/01/30 00:52
【 発言者 】sugi

sugiです。aiさん、こんにちは。

aiさん wrote:
> NOTEPAD・エクセルを利用して置換作業をしているのですが、
> (文字数の制限なしで複数文字の同時置換を行いたかったのです
> が、置換の外部変形を作れるだけの知識がなかったのでエクセル
> で処理をしています)

もちろん NOTEPADやエクセルを用いてもいいんですが、リストから
単純に置換するだけの作業ならスクリプトで処理させた方が簡単だ
と思います。

以前作成した ruby のスクリプトを手直ししたものですが、こんな
のはどうでしょう。「リスト置換.BAT」と「置換リスト.txt」は同
じフォルダに入れて下さい。

=== リスト置換.BAT (ここから) ===
@REM リスト置換
@echo off
REM #jww
REM #cd
REM #zc
REM #bz
REM #h3
REM #hc【リスト置換】変更する範囲を選択
REM #zz
REM #e

copy jwc_temp.txt jwc_temp.bak
ruby -x %~f0
rem pause
goto END

#!ruby -Ks

$stdout=open("jwc_temp.txt","w")
$stderr=open("error.log","w")

before,after=[],[]
open("置換リスト.txt").each{|list|
 before << list.split("→",2)[0]
 after << list.split("→",2)[1].chomp}

open("jwc_temp.bak").each{|tmp|
 case tmp
 when /hq/
  puts "hd"
 when /^(c[hvsroptkz2][^\"]*\")(.*)/
  m1,m2=$1,$2
  for i in 0...before.size
   m2=m2.gsub(before[i],after[i])
  end
  puts m1+m2
 else
  puts tmp
 end}

__END__
:END
=== リスト置換.BAT (ここまで) ===

=== 置換リスト.txt (ここから) ===
置換前→置換後
before→after
ma→φ
pu→±
ka→×
=== 置換リスト.txt (ここまで) ===

--
sugi


Indexへ
(32827)←【32833】→(32839)
------------------------
【タイトル】Re(2):NOTEPAD・エクセルを利用した置換
【記事番号】 32833 (32827)
【 日時 】09/01/30 13:37
【 発言者 】ai

▼sugiさん:
こんにちは。
丁寧にBatファイルまで作っていただきありがとうございます。

試してみたのですが未実効になってしまいました。
1) リスト置換.BATの部分をNOTEPADに貼り付けてリスト置換.BATで保存
2) 置換リスト.txtの部分をNOTEPADに張り付けて置換リスト.txtで保存
3) 1と2をC\jww直下にいれる
4) jwwを起動しma MA MA maなどと記入しリスト置換.BATを起動実行
※J_GARU Ver2 2000XPを実行してるのでRubyは入ってると思います。

設定の仕方が間違っているのかと思っていじったのですが分かりませんでした、
申し訳ありません。

エクセルの置換では、
・文章中の文字を置換するかしないか
・半角全角の区別の有り無し
・大文字小文字の区別の有り無し
・置換リストの選択
(リストが5つあるのでどれを利用するか選択
リストをシートごとに分けていくらでも増やせるように仕様かと検討中です)
できるようにしているため、batファイルも同様な感じにできればうれしいのですが、
自分で設定するのは難しそうなので置換内容が固定されてるときに使わせていただきたいと
思っています。


Indexへ
(32833)←【32839】→(32852)
------------------------
【タイトル】Re(3):NOTEPAD・エクセルを利用した置換
【記事番号】 32839 (32833)
【 日時 】09/01/30 23:45
【 発言者 】sugi

sugiです。aiさん、こんにちは。

aiさん wrote:
> 試してみたのですが未実効になってしまいました。
> 1) リスト置換.BATの部分をNOTEPADに貼り付けてリスト置換.BATで保存
> 2) 置換リスト.txtの部分をNOTEPADに張り付けて置換リスト.txtで保存
> 3) 1と2をC\jww直下にいれる
> 4) jwwを起動しma MA MA maなどと記入しリスト置換.BATを起動実行

「リスト置換.BAT」と「置換リスト.txt」は C:\jww の直下でなく
ても構いません。「未実行」となるのは多分、バッチファイルに全
角空白が入っているせいだと思います。このあいだ、「Jw_cad 情
報交換室その3」#14636で hayabusaさんが書かれてたのが分かり
やすいのでそのまま引用させてもらいます。

hayabusaさん wrote:
> たぶん、掲示板からコピーしてバッチファイルを作成する時に全角
> 空白→半角空白の置換をしてない為だと思います。
> (掲示板に書き込むと半角空白が一部全角空白に変換されてしまうようです。)
>
> 置換はメモ帳の場合
> 1.編集(E)→置換(R)と進み
> 2.置換する文字列(N)に全角でスペースキーを押して入力
> 3.置換後の文字列(P)に半角でスペースキーを押して入力
> 4.全て置換(A)して「文字列書体変更.bat」で保存

aiさん wrote:
> エクセルの置換では、
> ・文章中の文字を置換するかしないか
> ・半角全角の区別の有り無し
> ・大文字小文字の区別の有り無し
> ・置換リストの選択
> (リストが5つあるのでどれを利用するか選択リストをシートご
> とに分けていくらでも増やせるように仕様かと検討中です)
> できるようにしているため、batファイルも同様な感じにできれ
> ばうれしいのですが、自分で設定するのは難しそうなので置換内
> 容が固定されてるときに使わせていただきたいと思っています。

こんな感じかなと思って、前回のスクリプトをちょっと改造してみ
ました。

=== リスト置換.BAT (ここから) ===
@REM リスト置換
@echo off
REM #jww
REM #cd
goto %1
REM #hc【リスト置換】 ボタンを選択して下さい。
REM #hm【リスト置換】 |リスト固定[L]|リスト選択[R]|
REM #:1
REM #:2
REM #zc
REM #bz
REM #h3
REM #hc【リスト置換】変更する範囲を選択
REM #k 文章中の文字 |置換する(R)|置換しない(L)|/_B
REM #k 半角全角の区別 |区別する(R)|区別しない(L)|/_Z
REM #k 大文字小文字の区別 |区別する(R)|区別しない(L)|/_L
REM #zz
REM #e
:1
:2
copy jwc_temp.txt jwc_temp.bak
ruby -x %~f0 %1 %2 %3 %4
rem ruby -x %~f0 %1 B2 Z2 L2
rem pause
goto END

:COMMENT
=== 置換リスト.txt (ここから) ===
置換前→置換後
before→after
ma→φ
pu→±
ka→×
=== 置換リスト.txt (ここまで) ===

#!ruby -Ks

$stdout=open("jwc_temp.txt","w")
$stderr=open("error.log","w")

require "jcode"

class String
 def zen2han
  han1="ァィゥェォアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ"
  han1+="ヤユヨャュョラリルレロワヲンーa-zA-Z0-9-:;._/・{}()'\"%&\#@+/**\="
  han2=%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド )
  han2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  zen1="ァィゥェォアイウエオカキクケコサシスセソタチツテト"
  zen1+="ナニヌネノハヒフヘホマミムメモヤユヨャュョラリルレロ"
  zen1+="ワヲンー"
  zen1+="a-zA-Z0-9−:;._/・{}()’”%&#@+÷*×=,"
  zen2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド)
  zen2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  st=self
  for i in 0...zen2.size
   st=st.gsub(zen2[i],han2[i])
  end
  st=st.tr(zen1,han1)
 end

 def han2zen
  han1=%q(ァィゥェォアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ)
  han1+=%q|ヤユヨャュョラリルレロワヲンーa-zA-Z0-9\-:;._/・{}()'\"%&\#@+/**\=|
  han2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド )
  han2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  zen1 =%q(ァィゥェォアイウエオカキクケコサシスセソタチツテト)
  zen1+=%q(ナニヌネノハヒフヘホマミムメモヤユヨャュョラリルレロ)
  zen1+=%q(ワヲンー)
  zen1+=%q(a-zA-Z0-9\−:;._/・{}()’”%&#@+÷*×=)
  zen2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド)
  zen2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  st=self
  for i in 0...han2.size
   st=st.gsub(han2[i],zen2[i])
  end
  st1=st.tr(han1,zen1)
 end

 def j_upcase
  self.tr("a-za-z","A-ZA-Z")
 end

 def j_downcase
   self.tr("A-ZA-Z","a-za-z")
 end
end

if ARGV.include?("2") #リスト選択
 require 'win32ole'
 require 'vr/vruby'

 RFactory=SWin::LWFactory.new SWin::Application.hInstance
 mw=RFactory.newwindow(nil)
 mw.move(200,200,100,100)
 mw.create
 file= SWin::CommonDialog::
  openFilename(mw,[["txt(*.txt)","*.txt"],
          ["all(*.*)","*.*"]],0x1000,
         "ファイル選択",nil,".")
 unless file
  puts "he キャンセルされました"
  exit 0
 end
else
 file="置換リスト.txt"
end

# オプション設定
opb=ARGV.include?("B2") ? false : true
opl=ARGV.include?("L2") ? false : true
opz=ARGV.include?("Z2") ? false : true

before,after=[],[]
open(file).each{|list|
 before << list.split("→",2)[0]
 after << list.split("→",2)[1].chomp}
unless opz #半角全角の区別をしない
 a,b=[],[]
 before.each{|e| b+=[e.zen2han,e.han2zen]}
 after.each{ |e| a+=[e.zen2han,e.han2zen]}
 before,after=b,a
end
unless opl #大文字小文字の区別をしない
 a,b=[],[]
 before.each{|e| b+=[e.j_upcase,e.j_downcase]}
 after.each{ |e| a+=[e.j_upcase,e.j_downcase]}
 before,after=b,a
end
#p before;p after
open("jwc_temp.bak").each{|tmp|
 case tmp
 when /hq/
  puts "hd"
 when /^(c[hvsroptkz2][^\"]*\")(.*)/
  m1,m2=$1,$2
  for i in 0...before.size
   if opb #文章中の文字を置換する
    unless opl #大文字小文字の区別をしない
     m2=m2.gsub(/#{Regexp.quote("#{before[i]}")}/i,after[i])
    else
     m2=m2.gsub(/#{Regexp.quote("#{before[i]}")}/,after[i])
    end
   else #文章中の文字を置換しない
    unless opl #大文字小文字の区別をしない
     m2=m2.gsub(/^#{Regexp.quote("#{before[i]}")}$/i,after[i])
    else
     m2=m2.gsub(/^#{Regexp.quote("#{before[i]}")}$/,after[i])
    end
   end
  end
  puts m1+m2
 else
  puts tmp
 end}

__END__
:END
=== リスト置換.BAT (ここまで) ===

なお、外部エディタを参照する際に空白があるとエラー表示になる
問題は、このあたりを参照すれば良いかと思います。

http://www.jwcad.net/log/consult2/consult2-0701-03/thread19484.htm

--
sugi


Indexへ
(32839)←【32852】→(32854)
------------------------
【タイトル】Re(4):NOTEPAD・エクセルを利用した置換
【記事番号】 32852 (32839)
【 日時 】09/02/01 16:44
【 発言者 】ai

▼sugiさん:
遅くなりまして申しあけありません。

>「リスト置換.BAT」と「置換リスト.txt」は C:\jww の直下でなく
>ても構いません。「未実行」となるのは多分、バッチファイルに全
>角空白が入っているせいだと思います。

丁寧な説明ありがとうございます、とてもわかりやすかったです。
そしてわざわざコード改変までしていただき真にありがとうございます。
コード見てクラクラになって自分には無理だと思っていたので本当にありがたいです。

家のパソコンで試してみましたが、リスト固定、リスト選択の部分がどう選択するのか
よくわからなかったので月曜会社で再度試してみようと思います。
(家のパソコンが会社のとOSが違うためうまく使いこなせていないのもあり)


 改変後のコードですが、最初にテキストで別保存だった部分もbatファイルに
含まれたのどうかがよくわからず、思いついた下記で試しました。


>=== 置換リスト.txt (ここから) ===
>置換前→置換後
>before→after
>ma→φ
>pu→±
>ka→×
>=== 置換リスト.txt (ここまで) ===

1)※部分を除いた部分をbatファイルにし、※部分をTEXTファイルで保存したもの
2)※部分もbatファイルに含めてbatファイルのみにしたもの
注:空白の半角変換はしてるので両方動作はしましたがうまく変換できませんでした


Indexへ
(32852)←【32854】→(32856)
------------------------
【タイトル】Re(5):NOTEPAD・エクセルを利用した置換
【記事番号】 32854 (32852)
【 日時 】09/02/01 22:42
【 発言者 】sugi

sugiです。aiさん、こんにちは。

aiさん wrote:
> 家のパソコンで試してみましたが、リスト固定、リスト選択の部
> 分がどう選択するのかよくわからなかったので月曜会社で再度試
> してみようと思います。

「リスト固定」の場合は「置換リスト.txt」の内容で変換されます
が、「リスト選択」の場合「ファイル選択」のダイアログボックス
から置換リストのファイルを選択することができます。

aiさん wrote:
> 改変後のコードですが、最初にテキストで別保存だった部分も
> batファイルに含まれたのどうかがよくわからず、思いついた下
> 記で試しました。

この部分は「置換リスト.txt」の書き方を忘れないようにバッチファ
イルのコメント部にメモとして埋め込んだものです。バッチファイ
ルは埋め込んだまま使ってもらって構いませんが、前回と同様に別
途「置換リスト.txt」をバッチファイルと同じフォルダに用意して
おいて下さい。

aiさん wrote(#32852):
> 「エクセル 外部エディタ エラー解除」とかで検索していて
> ROGRA~1に近い部分が出てきてそれは試したのですがマイクロソ
> フトの部分がまったくわからずあきらめていたので本当に助かり
> ました。(もしかしてできるかもとMICRO~1からMICRO~4までは試
> してみたのですが)

私の環境だと「C:\PROGRA~1\MICROS~2\OFFICE11\EXCEL.EXE」でし
た。こんなバッチファイルで確認できるかも。

=== test.bat (ここから) ===
echo off
dir /X C:\PROGRA*
dir /X C:\PROGRA~1\MICROS*
dir /X C:\PROGRA~1\MICROS~2\OFFICE11\EXCEL.EXE
pause
=== test.bat (ここまで) ===

--
sugi


Indexへ
(32854)←【32856】→(32875)
------------------------
【タイトル】Re(6):NOTEPAD・エクセルを利用した置換
【記事番号】 32856 (32854)
【 日時 】09/02/02 10:21
【 発言者 】ai

▼sugiさん:
何度も丁寧にありがとうございます。
会社で試したところ置換上手くいきました!
勘違いが多くご迷惑おかけしまして申し訳ありません。

ただ、
>「リスト固定」の場合は「置換リスト.txt」の内容で変換されます
>が、「リスト選択」の場合「ファイル選択」のダイアログボックス
>から置換リストのファイルを選択することができます。
「ファイル選択」のダイアログボックスが出てこないので自分の設定方法間違ってるかもと確認中です。

エクセルの設定は
C:\PROGRA~1\MICROS~2\OFFICE11\EXCEL.EXE
で上手くいきました、丁寧にありがとうございます。
(PROGRA~1小文字じゃないとだめと勘違いしてたのですが大文字でもOKなのが分かりました。
もしかして1を大文字にして失敗してたのかもと考えてます)


Indexへ
(32856)←【32875】→(32878)
------------------------
【タイトル】Re(7):NOTEPAD・エクセルを利用した置換
【記事番号】 32875 (32856)
【 日時 】09/02/02 22:25
【 発言者 】sugi

sugiです。aiさん、こんにちは。

aiさん wrote:
> 「ファイル選択」のダイアログボックスが出てこないので自分の
> 設定方法間違ってるかもと確認中です。

なぜか分かりませんが VisualuRuby が使えないのかしら?
代替スクリプトを2つ。これで動いてくれれば良いですが、うまく
いかないようなら「error.log」というファイルにエラーを書き出
しているのでファイルの内容を教えてもらえると原因が分かるかも
しれません。

=== リスト置換2.BAT (ここから) ===
@REM リスト置換
@echo off
REM #jww
REM #cd
goto %1
REM #hc【リスト置換】 ボタンを選択して下さい。
REM #hm【リスト置換】 |リスト固定[L]|リスト選択[R]|
REM #:1
REM #:2
REM #zc
REM #bz
REM #h3
REM #hc【リスト置換】変更する範囲を選択
REM #k 文章中の文字 |置換する(R)|置換しない(L)|/_B
REM #k 半角全角の区別 |区別する(R)|区別しない(L)|/_Z
REM #k 大文字小文字の区別 |区別する(R)|区別しない(L)|/_L
REM #zz
REM #e
:1
:2
copy jwc_temp.txt jwc_temp.bak
ruby -x %~f0 %1 %2 %3 %4
rem ruby -x %~f0 %1 B2 Z2 L2
rem pause
goto END

:COMMENT
=== 置換リスト.txt (ここから) ===
置換前→置換後
before→after
ma→φ
pu→±
ka→×
=== 置換リスト.txt (ここまで) ===

#!ruby -Ks

$stdout=open("jwc_temp.txt","w")
$stderr=open("error.log","w")

require "jcode"

class String
 def zen2han
  han1="ァィゥェォアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ"
  han1+="ヤユヨャュョラリルレロワヲンーa-zA-Z0-9-:;._/・{}()'\"%&\#@+/**\="
  han2=%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド )
  han2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  zen1="ァィゥェォアイウエオカキクケコサシスセソタチツテト"
  zen1+="ナニヌネノハヒフヘホマミムメモヤユヨャュョラリルレロ"
  zen1+="ワヲンー"
  zen1+="a-zA-Z0-9−:;._/・{}()’”%&#@+÷*×=,"
  zen2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド)
  zen2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  st=self
  for i in 0...zen2.size
   st=st.gsub(zen2[i],han2[i])
  end
  st=st.tr(zen1,han1)
 end

 def han2zen
  han1=%q(ァィゥェォアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ)
  han1+=%q|ヤユヨャュョラリルレロワヲンーa-zA-Z0-9\-:;._/・{}()'\"%&\#@+/**\=|
  han2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド )
  han2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  zen1 =%q(ァィゥェォアイウエオカキクケコサシスセソタチツテト)
  zen1+=%q(ナニヌネノハヒフヘホマミムメモヤユヨャュョラリルレロ)
  zen1+=%q(ワヲンー)
  zen1+=%q(a-zA-Z0-9\−:;._/・{}()’”%&#@+÷*×=)
  zen2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド)
  zen2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  st=self
  for i in 0...han2.size
   st=st.gsub(han2[i],zen2[i])
  end
  st1=st.tr(han1,zen1)
 end

 def j_upcase
  self.tr("a-za-z","A-ZA-Z")
 end

 def j_downcase
   self.tr("A-ZA-Z","a-za-z")
 end
end

if ARGV.include?("2") #リスト選択
 require 'win32ole'
 obj=WIN32OLE.new("UserAccounts.CommonDialog")
 obj.Filter = "txt (*.txt)|*.txt|全て (*.*)|*.*|"
 obj.InitialDir ='.'
 obj.ShowOpen
 file=obj.FileName
 if file==""
  puts "he キャンセルされました"
  exit 0
 end
else
 file="置換リスト.txt"
end

# オプション設定
opb=ARGV.include?("B2") ? false : true
opl=ARGV.include?("L2") ? false : true
opz=ARGV.include?("Z2") ? false : true

before,after=[],[]
open(file).each{|list|
 before << list.split("→",2)[0]
 after << list.split("→",2)[1].chomp}
unless opz #半角全角の区別をしない
 a,b=[],[]
 before.each{|e| b+=[e.zen2han,e.han2zen]}
 after.each{ |e| a+=[e.zen2han,e.han2zen]}
 before,after=b,a
end
unless opl #大文字小文字の区別をしない
 a,b=[],[]
 before.each{|e| b+=[e.j_upcase,e.j_downcase]}
 after.each{ |e| a+=[e.j_upcase,e.j_downcase]}
 before,after=b,a
end
#p before;p after
open("jwc_temp.bak").each{|tmp|
 case tmp
 when /hq/
  puts "hd"
 when /^(c[hvsroptkz2][^\"]*\")(.*)/
  m1,m2=$1,$2
  for i in 0...before.size
   if opb #文章中の文字を置換する
    unless opl #大文字小文字の区別をしない
     m2=m2.gsub(/#{Regexp.quote("#{before[i]}")}/i,after[i])
    else
     m2=m2.gsub(/#{Regexp.quote("#{before[i]}")}/,after[i])
    end
   else #文章中の文字を置換しない
    unless opl #大文字小文字の区別をしない
     m2=m2.gsub(/^#{Regexp.quote("#{before[i]}")}$/i,after[i])
    else
     m2=m2.gsub(/^#{Regexp.quote("#{before[i]}")}$/,after[i])
    end
   end
  end
  puts m1+m2
 else
  puts tmp
 end}

__END__
:END
=== リスト置換2.BAT (ここまで) ===

=== リスト置換3.BAT (ここから) ===
@REM リスト置換
@echo off
REM #jww
REM #cd
goto %1
REM #hc【リスト置換】 ボタンを選択して下さい。
REM #hm【リスト置換】 |リスト固定[L]|リスト選択[R]|
REM #:1
REM #:2
REM #zc
REM #bz
REM #h3
REM #hc【リスト置換】変更する範囲を選択
REM #k 文章中の文字 |置換する(R)|置換しない(L)|/_B
REM #k 半角全角の区別 |区別する(R)|区別しない(L)|/_Z
REM #k 大文字小文字の区別 |区別する(R)|区別しない(L)|/_L
REM #zz
REM #e
:1
:2
copy jwc_temp.txt jwc_temp.bak
ruby -x %~f0 %1 %2 %3 %4
rem ruby -x %~f0 %1 B2 Z2 L2
rem pause
goto END

:COMMENT
=== 置換リスト.txt (ここから) ===
置換前→置換後
before→after
ma→φ
pu→±
ka→×
=== 置換リスト.txt (ここまで) ===

#!ruby -Ks

$stdout=open("jwc_temp.txt","w")
$stderr=open("error.log","w")

require "jcode"

class String
 def zen2han
  han1="ァィゥェォアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ"
  han1+="ヤユヨャュョラリルレロワヲンーa-zA-Z0-9-:;._/・{}()'\"%&\#@+/**\="
  han2=%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド )
  han2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  zen1="ァィゥェォアイウエオカキクケコサシスセソタチツテト"
  zen1+="ナニヌネノハヒフヘホマミムメモヤユヨャュョラリルレロ"
  zen1+="ワヲンー"
  zen1+="a-zA-Z0-9−:;._/・{}()’”%&#@+÷*×=,"
  zen2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド)
  zen2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  st=self
  for i in 0...zen2.size
   st=st.gsub(zen2[i],han2[i])
  end
  st=st.tr(zen1,han1)
 end

 def han2zen
  han1=%q(ァィゥェォアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ)
  han1+=%q|ヤユヨャュョラリルレロワヲンーa-zA-Z0-9\-:;._/・{}()'\"%&\#@+/**\=|
  han2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド )
  han2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  zen1 =%q(ァィゥェォアイウエオカキクケコサシスセソタチツテト)
  zen1+=%q(ナニヌネノハヒフヘホマミムメモヤユヨャュョラリルレロ)
  zen1+=%q(ワヲンー)
  zen1+=%q(a-zA-Z0-9\−:;._/・{}()’”%&#@+÷*×=)
  zen2 =%w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド)
  zen2+=%w(バ ビ ブ ベ ボ パ ピ プ ペ ポ )
  st=self
  for i in 0...han2.size
   st=st.gsub(han2[i],zen2[i])
  end
  st1=st.tr(han1,zen1)
 end

 def j_upcase
  self.tr("a-za-z","A-ZA-Z")
 end

 def j_downcase
   self.tr("A-ZA-Z","a-za-z")
 end
end

if ARGV.include?("2") #リスト選択
 require 'win32ole'
 obj=WIN32OLE.new("MSComDlg.CommonDialog")
 obj.MaxFileSize =255  
 obj.Filter = "txt (*.txt)|*.txt|全て (*.*)|*.*|"
 obj.InitDir ="."
 obj.ShowOpen
 file=obj.FileName
 if file==""
  puts "he キャンセルされました"
  exit 0
 end
else
 file="置換リスト.txt"
end

# オプション設定
opb=ARGV.include?("B2") ? false : true
opl=ARGV.include?("L2") ? false : true
opz=ARGV.include?("Z2") ? false : true

before,after=[],[]
open(file).each{|list|
 before << list.split("→",2)[0]
 after << list.split("→",2)[1].chomp}
unless opz #半角全角の区別をしない
 a,b=[],[]
 before.each{|e| b+=[e.zen2han,e.han2zen]}
 after.each{ |e| a+=[e.zen2han,e.han2zen]}
 before,after=b,a
end
unless opl #大文字小文字の区別をしない
 a,b=[],[]
 before.each{|e| b+=[e.j_upcase,e.j_downcase]}
 after.each{ |e| a+=[e.j_upcase,e.j_downcase]}
 before,after=b,a
end
#p before;p after
open("jwc_temp.bak").each{|tmp|
 case tmp
 when /hq/
  puts "hd"
 when /^(c[hvsroptkz2][^\"]*\")(.*)/
  m1,m2=$1,$2
  for i in 0...before.size
   if opb #文章中の文字を置換する
    unless opl #大文字小文字の区別をしない
     m2=m2.gsub(/#{Regexp.quote("#{before[i]}")}/i,after[i])
    else
     m2=m2.gsub(/#{Regexp.quote("#{before[i]}")}/,after[i])
    end
   else #文章中の文字を置換しない
    unless opl #大文字小文字の区別をしない
     m2=m2.gsub(/^#{Regexp.quote("#{before[i]}")}$/i,after[i])
    else
     m2=m2.gsub(/^#{Regexp.quote("#{before[i]}")}$/,after[i])
    end
   end
  end
  puts m1+m2
 else
  puts tmp
 end}

__END__
:END
=== リスト置換3.BAT (ここまで) ===

--
sugi


Indexへ
(32875)←【32878】→(32890)
------------------------
【タイトル】Re(8):NOTEPAD・エクセルを利用した置換
【記事番号】 32878 (32875)
【 日時 】09/02/02 23:17
【 発言者 】ai

▼sugiさん:
ものすごく勘違いしていました、申し訳ありません。
リスト選択選んだ瞬間にリスト選択画面が出のかと思ってそこででないので
キャンセル掛けてしまっていました。
選択画面は最後にでてくるんですね。

勘違いでお手間掛けさせてしまいまして誠に申し訳ありません。
確認したところ最初のも、2も3も動作いたしました。
何度も丁寧な対応をしてくださりまして、本当にありがとうございます。


追記
質問ばかりですみません。
全角半角の区別をしないにするとKaが×ではなく*になるのですが×の半角がないので

> def han2zen
>  han1=%q(ァィゥェォアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ)
>  han1+=%q|ヤユヨャュョラリルレロワヲンーa-zA-Z0-9\-:;._/・{}()'\"%&\#@+/**\=|

のとこで×の部分を*マークしていて、**となっているという解釈で大丈夫でしょうか?


Indexへ
(32878)←【32890】→(32891)
------------------------
【タイトル】Re(9):NOTEPAD・エクセルを利用した置換
【記事番号】 32890 (32878)
【 日時 】09/02/03 23:25
【 発言者 】sugi

sugiです。aiさん、こんにちは。

aiさん wrote:
>全角半角の区別をしないにするとKaが×ではなく*になるのですが×の半角がないので
>
>> def han2zen
>>  han1=%q(ァィゥェォアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ)
>>  han1+=%q|ヤユヨャュョラリルレロワヲンーa-zA-Z0-9\-:;._/・{}()'\"%&\#@+/**\=|
>
>のとこで×の部分を*マークしていて、**となっているという解釈で大丈夫でしょうか?

「×」の半角は「*」、「÷」の半角は「/」に設定しておくと便利
な場面があって、そのような設定にしてたのですが、今回はまずい
ですね。^^;

(誤):;._/・{}()'\"%&\#@+/**\=
(正):;._/・{}()'\"%&\#@+*\=

(誤):;._/・{}()’”%&#@+÷*×=!
(正):;._/・{}()’”%&#@+*=

それぞれ2個所あるので、この部分を修正すれば直ります。

自動で修正できるようにスクリプト修正用のバッチファイルを用意
してみました。修正したいバッチファイルと同じフォルダに入れて
ダブルクリックすると元ファイルのバックアップを取ってから、ス
クリプトを修正します。

=== スクリプト修正.BAT (ここから) ===
ruby -x %~f0 *.BAT
pause
goto END

#!ruby -Ks
require 'fileutils'
ARGV.each{|file|
f1=open(file).readlines
f2=f1.map{|line|
line.gsub(%q!:;._/・{}()'\"%&\#@+/**\=!,
%q!:;._/・{}()'\"%&\#@+*\=!).
gsub(%q!:;._/・{}()’”%&#@+÷*×=!,
%q!:;._/・{}()’”%&#@+*=!)}
if f1!=f2 && file!=File.basename( __FILE__)
FileUtils.copy(file,file+".bak")
open(file,"w"){|e| e.print f2.join}
puts "#{file}を変更しました"
end}
__END__
:END
=== スクリプト修正.BAT (ここまで) ===

--
sugi


Indexへ
(32890)←【32891】→(32843)
------------------------
【タイトル】Re(10):NOTEPAD・エクセルを利用した置換
【記事番号】 32891 (32890)
【 日時 】09/02/04 09:19
【 発言者 】ai

▼sugiさん:

最後まで親切に対応していただきありがとうございました。

スクリプト修正.BATをリスト置換.BAT、リスト置換2.BAT、リスト置換3.BATと
同じフォルダに入れてダブルクリックで実行して、無事訂正完了しました。
よく記入ミスをしてしまうので、お心遣いとてもありがたかったです。


Indexへ
(32891)←【32843】→(32851)
------------------------
【タイトル】外部エディタのファイルパスに半角スペースを含む場合の注意点
【記事番号】 32843 (32816)
【 日時 】09/01/31 09:25
【 発言者 】mirror

▼aiさん:
外部エディタのファイルパスに半角スペースを含む場合の注意点

レスが深くなるのが鬱陶しいので、レスをずらします。
jwwの幾つかのコマンドのうち、ファイルパスを扱う部分において
ファイルパスに半角スペースを含む場合の処理が不完全になっています。
windowでは、上記の場合ファイルパスを["]で囲む事が正式な記述です。

jwwのレジストリ
HKEY_CURRENT_USER\Software\Jw_cad\jw_win\Tool
に、外部エディタの絶対パスが登録されていますが
それを["]で囲ったものに変更しても、正常には動作しません。

従って、現状のjwwのverでは短いファイル名を参照してパス設定を行うしかありません。
windowでマッピングされた短いファイル名の参照方法は下記を参照して下さい。

http://www.atmarkit.co.jp/fwin2k/win2ktips/606dirx/dirx.html

原則として、[マッピングされた短いファイル名]はPC其々に一意なものです
何等かのアクションにより付け替えられる場合もあります。
従って、例えば○○さんの設定と同じにしても、動作しない場合がありますので
充分注意して下さい。

・・・過去ログ等にもあるようですが
http://www.jwcad.net/log/consult2/consult2-0503-06/thread1553.htm


Indexへ
(32843)←【32851】→(32855)
------------------------
【タイトル】Re(1):外部エディタのファイルパスに半角スペースを含む場合の注意点
【記事番号】 32851 (32843)
【 日時 】09/02/01 15:54
【 発言者 】ai

▼mirrorさん:
丁寧にありがとうございます。
「エクセル 外部エディタ エラー解除」とかで検索していて
ROGRA~1に近い部分が出てきてそれは試したのですがマイクロソフトの
部分がまったくわからずあきらめていたので本当に助かりました。
(もしかしてできるかもとMICRO~1からMICRO~4までは試してみたのですが)

「マッピングされた短いファイル名の参照方法」、
月曜に出社したら試そうと思います、ありがとうございます。


Indexへ
(32851)←【32855】→(32873)
------------------------
【タイトル】Re(1):外部エディタのファイルパスに半角スペースを含む場合の注意点
【記事番号】 32855 (32843)
【 日時 】09/02/02 09:49
【 発言者 】ai

▼mirrorさん:
ありがとうございます。
丁寧な説明を頂いたおかげで無事変更できました。

自分の場合なのですがカレントディレクトリがC:\Documents and Settings\Administratorになっており
変更方法が分からずだいぶ検索に手間取ってしまったので参考にしたHPも貼り付けて起きます。
(なんという言葉で検索していいかが分からずカレントディレクトリという言葉にたどり着くのに時間がかかった)。
http://www.geocities.co.jp/zsnes_123/command/command.html

調べたところ下記表示で上手くいきました。
C:\Progra~1\MICROS~2\OFFICE11\EXCEL.EXE

それで自分が試したのを思い返すとMICRO~で試していて6文字じゃなかった or
PROGRA~1で大文字で書いてたという間違いのコンボでパスが見つかりませんってエラー表示に
なっていたようです。


Indexへ
(32855)←【32873】→(32874)
------------------------
【タイトル】Re(2):外部エディタのファイルパスに半角スペースを含む場合の注意点
【記事番号】 32873 (32855)
【 日時 】09/02/02 17:30
【 発言者 】kubo

▼aiさん:
>それで自分が試したのを思い返すとMICRO~で試していて6文字じゃなかった or
>PROGRA~1で大文字で書いてたという間違いのコンボでパスが見つかりませんってエラー表示に
>なっていたようです。


この場合半角英字の大文字小文字は関係ないです。
つづりか全角半角がちがっていたのでは。


Indexへ
(32873)←【32874】→(32857)
------------------------
【タイトル】Re(3):外部エディタのファイルパスに半角スペースを含む場合の注意点
【記事番号】 32874 (32873)
【 日時 】09/02/02 18:04
【 発言者 】ai

▼kuboさん:
>この場合半角英字の大文字小文字は関係ないです。
>つづりか全角半角がちがっていたのでは。

指摘ありがとうございます、勘違いしておりました。
1と1で全半角間違ってたかもしれません。


Indexへ
(32874)←【32857】→(32864)
------------------------
【タイトル】エクセル利用置換・最終報告
【記事番号】 32857 (32816)
【 日時 】09/02/02 12:19
【 発言者 】ai

エクセルの置換のほうですがアドインで下記設定をし、

A) C:\jww\TEMP.TEXTが開いているかどうかで動作判別
 a) 開いている場合
  C:\jww\JW外部変形\文字複数同時置換.xlsを開く
 b) 開いていない場合
  メッセージBOXで「jwwからTEMP.TEXTを開いて文字取得してください」とエラー表示する
B) Aをツールバーに登録、ツールバークリックで実行できるように設定


次の操作で置換できるようになりだいぶ操作手順が減りました。

1) jwwの外部エディタで文字取得
 (外部エディタはエクセル、エクセルを外部エディタへ設定する際のパスは
 「C:\PROGRA~1\MICROS~2\OFFICE11\EXCEL.EXE」)
2) TEMP.TEXTから上記アドイン実行
 (TEMP.TEXTがエクセルで開かれるのでツールバーをクリックして、マクロを有効選択して実行)
3) 文字複数同時置換.xlsで置換設定を選択し赤い×ボタンでエクセル終了
 (ブックを閉じる際にマクロ自動実行)

3)のマクロの内容
1. TEMP.TEXTから文字をコピー
2. 置換エクセルシートの置換対象範囲に文字貼り付け
3. 複数置換.excelの指定範囲の内容で置換
4. 置換後の文字コピー
3. TEXTデータにコピーした置換後の文字を貼り付け
4. TEMP.TEXTを保存して閉じる
5. 複数置換を保存せずに閉じる(警告メッセージOFF)


連番振り替えなどに便利なので外部エディタは常にエクセルにしようと思っています。
また、置換文字が固定されている場合は作成していただいたbatファイルを利用させていただき、
頻繁に置換文字が変更する場合はエクセルの置換を利用しようと思っています。
(エクセルで置換のほうは置換設定シートに置換前と置換後の文字を入力する欄があり、
同一シート状ですばやく記入・確認できるので)


Indexへ
(32857)←【32864】→(32863)
------------------------
【タイトル】エクセル利用置換・追記
【記事番号】 32864 (32857)
【 日時 】09/02/02 16:12
【 発言者 】ai

アドインの設定方法が分からず数日間探サイトを探しまくったので、
自分が一番参考にしたサイト張っておきます。
http://blog.goo.ne.jp/leapdys/d/20080317


エクセルのコードも晒したほうが言いかとも思ったのですが、
Batファイルでコードをすべて作っていただきましたし、そちらだけでいいのかなと思うことと
エクセル置換は自分的には使いやすいのですが個人仕様なので他の人は使い難いかなと思うこと及び、
素人丸出しのコードでエラー処理が完璧じゃないので参考サイトだけ張っておきます。
(もし同じことしたいと思って調べている方がいましたら参考になれば)

http://excelfactory.net/excelboard/excelvba/excel.cgi 置換方法など
http://officetanaka.net/excel/vba/tips/tips108.htm ブックが開いているかの判定
http://www.ne.jp/asahi/juku/excel/080331.htm ブックを閉じる際の実行マクロ


Indexへ
(32864)←【32863】→(32877)
------------------------
【タイトル】batファイルの置換リスト選択
【記事番号】 32863 (32816)
【 日時 】09/02/02 16:11
【 発言者 】ai

batファイルの置換リスト選択の場合のほうが分からないため、
分かった場合にまた書き込もうと思います。
申し訳ありません。


Indexへ
(32863)←【32877】→(33073)
------------------------
【タイトル】Re(1):batファイルの置換リスト選択
【記事番号】 32877 (32863)
【 日時 】09/02/02 23:14
【 発言者 】ai

完全な勘違いでした。
リスト選択を選択したら最後にリスト選択画面が出てくるのに
出てくる前に失敗したと勘違いしてキャンセルを掛けていました。

誠に申し訳ありませんでした。


Indexへ
(32877)←【33073】→(33117)
------------------------
【タイトル】外部エディタだとエクセル書式が標準になる
【記事番号】 33073 (32816)
【 日時 】09/02/19 04:50
【 発言者 】ai
【 リンク 】http://ohayou-oyasumi.webdeki-bbs.com/



エクセルでテキストデータを開く際に、セルの書式が標準で開かれるため
1/10などが日付表示になってしまったりしました。
そのまま利用すると危険なので訂正しましたので報告しておきます。

1) 外部エディタにエクセルを指定し文字取得
2) アドインで置換用エクセルファイルを開く
3) 置換用エクセルファイルからTEMP.TEXTを表示形式を文字列指定して開く(2重起動)

という方法をとって標準形式でTEMP.TEXTをひらきました。
CSVファイルを常に文字列で開くとかいうのはネットで見かけたのですが
自分にはまだ難しくよくわからなかったの無理やりな作業ですが上記動作にしました。


エラー回避が不十分だったり余計なコードがいっぱいあったりして
怪しい出来なので見るに堪えれないかもしれませんが、
自分用としては完成したので一応結果報告としてデータをアップロード用に
かりた掲示板にあげておきます。
※申し訳ありませんが動作保障はできません。


Indexへ
(33073)←【33117】//(32824)
------------------------
【タイトル】【お詫び】文字ずれを起こします
【記事番号】 33117 (33073)
【 日時 】09/02/21 03:56
【 発言者 】ai

エクセル置換ですが、エクセルのLOSEの際に実行されるマクロで
TEMP.TEXTに置換後のデータ貼り付けしているのですが張り付け前に
置換前のデータをクリアしていないので置換ミスが起こる可能性があります。
後で訂正したのUPしなおそうと思います。

理由として他キャドから変換したjwwデータですと半角・全角スペースなども
入っていない完全な空白文字が存在することがあるのですが、
その完全に空白な文字がある場合、削除しないと文字位置がずれてしまいます。

外部エディタをNOTEPADにし、外部エディタから文字取得し
置換作業の処理などを一切せずに上書き保存して閉じても文字位置がずれます。

それが理由で置換用エクセル上で空白行削除のマクロをかけているのですが、
データをTEMP.TEXTに差し戻したときに範囲コピーしたデータをA1セルに
貼り付けるように設定してしまっていたので、
削除された空白行分のみjwに戻ったときに文字が多くなってしまいます。

手作業していた際には全選択した後に貼り付けという動作をしていたのですが
すっかり忘れてしまっていました、すみません。