[[20160326092004]] 『xl2013 での momoさんのレイアウトアップユ=x(β) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『xl2013 での momoさんのレイアウトアップユーティリティ』(β)

お世話様です。

【学校】で、シートレイアウトをアップする際に、モモさんの

[[20110209184943]] 『[談]シートレイアウトの投稿どうしてますか?』(momo)

 大変重宝して使わせてもらっています。

 ただ、いつの頃から、xl2013(win8.1 、win10) で実行すると ウェブ上に貼り付けると
 □□ に、シート上でそのままペーストすると ・・ になってしまいます。

 xl2010(win7) で実行すると、ウェブ上もシート上も、正しいイメージでペーストされます。

 皆さんはいかがでしょう。
 また、原因・解決策 に関してご教示いただければ幸いです。

< 使用 Excel:Excel2013、使用 OS:Win10 >


 To βさん

 マクロ実行ファイル起動直後の1回目、ペーストすると、
 ��
 になっちゃいます。よく分かりませんね。

 ��
 になっちゃうときは、下記の追加したDebug.Printはどうなりますか?

 Debug.Print Join(AryTxt, vbCrLf)'★★★追加してみた
 With GetObject("new:" & DataObjectID)
     .SetText Join(AryTxt, vbCrLf)
     .PutInClipboard
 End With

 あと、サクラエディタに貼り付けたら、
 ��
 となり、上書きしようとしたら、
 SJIS
 で保存しようとしてます。と警告がでます。SJISってなんなんでしょう?

(マリオ) 2016/03/26(土) 09:56


 マリオさん

 レス深謝です。

 ペーストすると、□□ になるのですが、イミディエイトウィンドウには、ちゃんと 本来の形で
 書きこまれていますねぇ。

 コード体系には詳しくありませんが、世の中にいろんな体系がある、たとえば IBMホストマシンでのEBCDIC( 0 は hex で F0) とか
 ASCII(0 は hex で 30) とか。

 そういった中の、Msが標準として使っているコード体系だと理解しています。

(β) 2016/03/26(土) 12:09



こんにちわ。

□や・と文字化け表示される文字の文字コードはどれでしょうか?
私の環境もWin10+EXCEL2013ですが、βさんの□や・をコピペしてUNICODE関数で調べたら、
□=9633(25A1)
・=12539(30FB)
と、どちらも普段よく使ってると思われる文字コードになってしまいました。

     |[J] |[K]     |[L]    |[M]   
 [18]|文字|10進表記|2進表記|      
 [19]|□□|    9633|25A1   |コピペ
 [20]|□  |    9633|25A1   |手打ち
 [21]|・・|   12539|30FB   |コピペ
 [22]|・  |   12539|30FB   |手打ち

Shift_JISに関しては、ご参考までに、
https://ja.wikipedia.org/wiki/Shift_JIS
http://maplesystems.co.jp/blog/programming/9978.html
http://e-words.jp/w/Shift_JIS%E3%82%B3%E3%83%BC%E3%83%89.html
(sy) 2016/03/26(土) 14:49


 To sy さん

 情報ありがとうございます。

 ごめんなさい。アップする際には、通常記号の□と、これまた通常の ・ を使用しました。
 シート上でコピペしますと(ウェブ上で化けないかどうか不安ですが)

￿￿

 です。(あぁ、コピペしたら、やっぱり□□になりました)

 シート上で =LEN は 2、=CHAR は 63 です。

(β) 2016/03/26(土) 17:44


To βさん

63は文字で言えば?ですね。
一部の文字はVBA上からAscで文字コードを調べると63になってしまうみたいです。
私がはっきりわかっているのは、160(A0)のスペースくらいですが
他にもあったと思います。

でも殆どの文字はAscWで正確にUNICODEの文字番号を取得できると思います。
もしくは、シート上でUNICODE関数で取得しても、ほぼ全ての取得が可能と思います。
(上記2つの方法は今まで私が調べた文字では、追加された編集記号なども含めて全て正しく取得出来ていましたが、ネット上で扱える全ての文字を調べた訳では無いので絶対とは言い切れません。)

別の掲示板で教えてもらった
http://officetanaka.net/excel/vba/tips/tips89.htm
のSample1では、全ての文字コードを確実に取得できるらしいです。
(sy) 2016/03/26(土) 18:42


 To Syさん

 ありがとうございます。

 そうでしたね。CHAR なんかで調べてもだめですよね。
 2013 なので、UNICODE関数で調べました。 2桁の ・・ ともに 65535 でした。

 ところで、今、あれ? と思ったことがあります。
 momoさんのユーティリティを仕込んだマクロブック、サンプルとして、シートにあらかじめ
 表イメージの値が入っています。

 で、通常は別ブックのシートの表イメージを、このマクロブックのサンプル表の上にコピペし、その領域を
 選択して動かしているんですが、2010ではOK,2013ではNG になります。

 でも、ふと、マクロブックを開き直し、最初からサンプルとしておいてある表を選んで(別ブックからのコピペなしで)実行してみると
 きれいな形でコピペできました。

 何度やっても成功します。
 で、いったん閉じました。で、開き直して、やってみたんですが、なぜか、またもや、NGです。

 どうも、よくわからなくなってきました・・・

(β) 2016/03/26(土) 19:20


 此方の変換を利用させてもらって65535の文字を再現してみました。
http://www.shurey.com/js/labo/character.html 
 私のPCでもEXCELでは・のようになり、此方に貼り付けると□みたいになりますね。
    |[H]
 [2]|￿  

 マリオさんのDebug.Print Join(AryTxt, vbCrLf)を追加してイミディエイトウィンドウには(63)?が表示。
 この文字でステップ実行で見てみると変数に格納された時点で(63)?と表示されました。(貼り付けたら上記の通りですけど)

 ところでU+FFFFは初めてだったので調べてみました。
http://www.wdic.org/w/WDIC/%E9%9D%9E%E6%96%87%E5%AD%97
https://translate.google.co.jp/translate?hl=ja&sl=en&u=http://www.utf8-chartable.de/unicode-utf8-table.pl%3Fstart%3D65280%26unicodeinhtml%3Ddec&prev=search
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/unicode/noncharacters.html

 非文字。。。
 文字として定義されていない?
 と言う事はβさんが表示したい文字とは違う文字という事なのだろうか?

(sy) 2016/03/26(土) 21:32


 To βさん , sy さん

 よく分からないのですが、次のようにしたら、貼り付け失敗がなくなったような…。

 ■変更前
 With GetObject("new:" & DataObjectID)

 ■変更後
 With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

http://www.odin.hyork.net/write/writeg009-001.html

 ★「VBA で参照設定せずに DetaObject を使用する」参照

(マリオ) 2016/04/01(金) 20:09


 To マリオさん

 なぁるほど。

 いわれてみて、チェックすると、momoさんのコードでは
 Const DataObjectID As String = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
 になっていましたね。 { } がなかったんですね。

 自分で持っている、フィルター結果の配列化のユーティリティがあって、そこでは
 {1C3B4210-F441-11CE-B9EA-00AA006B1A69} としているのに、momoさんのコードの、この部分を
 まったくチェックしてませんでした。

 ということで、勇躍、該当場所を変更して、さぁ、うまくいった・・・・・あれ?
 やはり、文字化け。

 もうちょっと、こちらでも、あがいてみます。

(β) 2016/04/01(金) 20:41


 To βさん
 変更前は、GetObjectで、変更後は、CreateObjectです。この違いは関係ないんですかね。
(マリオ) 2016/04/01(金) 21:02

 >>変更前は、GetObjectで、変更後は、CreateObjectです

 実際には、マリオさんのレスを受けて、こちらのほうでmomoさんのコードの該当場所を
 With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
 こうかえて、やったんですが、こちらでの結果はかわらず、文字化けなんです・・・・(涙)

(β) 2016/04/02(土) 09:36


 To β さん

 >文字化けなんです・・・・(涙)

 文字化けって、「##」と表示されるってことですか?
 なら、Application.InputBoxの前の行あたりに、次の行を追加で、どうなりますか?
 Cells.Columns.AutoFit '★セル幅自動調整
 違いますよね…。

 ************************************************************
 ■ファイルは削除しました (2日間限定でファイルをアップ)

(マリオ) 2016/04/03(日) 01:24


 TO マリオさん

 昨日朝から外出して今帰宅したところです。

 >>文字化けって、「##」と表示されるってことですか?

 いえ、トピ冒頭で記載した症状、シートにペーストすると ・・、学校のコメント欄にペーストすると □□ になる状態です。 
 ( ・・ や □□ は表現のために使った全角記号ですが、実際は異なります。)

 >> 2日間限定でファイルをアップします

 ダウンロードしましたが、このコードで実行しても ・・ や □□です。
 私のほうの 2013 の環境そのものが、おかしいのかもしれませんねぇ。
 (2010であれば コメントした通り、オリジナルmomoさんコードで全く問題はでていません)

(β) 2016/04/03(日) 16:38


 To βさん

 了解しました。ありがとうございます。
(マリオ) 2016/04/03(日) 19:15

 To βさん、マリオさん

 関係あるか自信ないですが、下記は該当しないでしょうか?
https://support.microsoft.com/ja-jp/kb/929833

 文字化け事例
http://hiroshi10010269.com/3544/
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13148691423

(sy) 2016/04/08(金) 02:43


 To βさん

 '下記のtestのように、クリップボードから文字を取得するマクロを
 '利用すれば、貼り付ける前に、文字化けになっていることを確認できますね。
 '文字化けだったら、文字取得をやり直す処理をすればいいのでは?
 'そもそも、なんで文字化けするかは、わからないのですが…。

 'ちなみに、私の場合、同じExcel2013ですが、ツール→「参照設定 - VBAProject」
 'では、下記4つにチェックが入ってました。
 '(1) Visual Basic For Application
 '(2)Microsoft Excel 15.0 Object Library
 '(3)OLE Automaion
 '(4)Microsoft Office 15.0 Object Library

 '***************************************************************************

 'クリップボードから文字列を取得して表示するマクロ

 '★(事前設定)VBA→ツール→「参照設定 - VBAProject」の
 '「Microsoft Forms 2.0 Object Library」にチェックが入っているか確認する。

 Sub test()
     With New DataObject
         .GetFromClipboard
         MsgBox .GetText
     End With
 End Sub

(マリオ) 2016/04/10(金) 19:45


 To マリオさん

 はい、こちらで、.GetFromClipboard による確認はしています。
 で、文字化けする際には、当然というか クリップボード自体が □□ になっています。
 ですから、文字化け という 表現がまずかったですね。文字化けしてクリップボードに書きこまれているというのが
 正確な説明でした。

 (何かの拍子に?うまくいくときには クリップボードにも正しく書きこまれています)

 参照設定に関しては、マリオさんがあげられた4つは、VBEとしてのデフォルトですので
 こちらでも同じです。

(β) 2016/04/10(日) 20:47


 To βさん
 syさんが、紹介しているシステムファイルチェックしてみました?

 コマンド プロンプト「コマンド文:sfc /scannow」

(マリオ) 2016/04/11(月) 08:50


 >>syさんが、紹介しているシステムファイルチェックしてみました?

 あっ! まだです!
 このあたりかもしれませんね。やってみて、また報告します。

(β) 2016/04/11(月) 08:59


 報告です。

 sfc /scannow 結果は Windowsリソース保護は、整合性違反を検出しませんでした

 でした。 う〜ん、残念(?)

(β) 2016/04/11(月) 10:07


 システムファイルは全て正常でしたか。

 私のPCはかなり引っかかってたので、今回ので試してメールの文字化けが解消されました。

 これがドンピシャ(死語)じゃないかと思われる記事がありました。
https://support.microsoft.com/ja-jp/kb/3083806

 原因として以下が挙げられています。

 >以前はすべての Windows デスクトップ システムに搭載されていたフォントの一部がオプションの
 フォント パッケージに移されたため、Windows 10 のデスクトップ システムに存在しない可能性があります。
 >任意の言語のテキストが枠ではなく判読可能なグリフで常に表示されるように設計されたフォント
  フォールバック メカニズムが搭載されています。
 >アプリで使用するフォントがシステムに存在しないため、テキストの表示には他のフォントが代わりに
 使用されますが、表示対象の文字がそのフォントですべてサポートされているとは限らない場合があります。
 文字の表示にその文字をサポートしないフォントを使用すると、そのフォントの既定の "未定義" グリフが
 使用されます。ほとんどのフォントの "未定義" グリフは、長方形の枠かそれが変化した形で表示されます。

 因みに日本語補助フォントを削除したらブラウザで□の文字がEXCEL上でも□に表示されました。
 ですがMSやMS Pのゴシックや明朝が削除されてしまうので、今までと字体が変わりすぎるので元に戻しました。

 補助フォントのどれかのフォントが今までと違う表現で表示させてるか、
 以前の環境ではあったフォントが欠けているかのどちらかでは無いでしょうか?

(sy) 2016/04/13(水) 12:06


 To syさん

 追加情報ありがとうございます。

 ただ、当方の現時点の環境は Win10なんですが、この現象は Win8.1 の時から発生しています。
 一応、フォント関連も調べてみますが。

(β) 2016/04/13(水) 14:20


 ↑ と書いた後、久しぶりに、momoさんのコードを Win10+xl2013 で動かしてみました。
 結果は、見事に(?)

     |[A]  |[B]  |[C]  |[D]  
 [1] |項目1|項目2|項目3|項目4
 [2] |aaa1 |bbb1 |ccc1 |ddd1 
 [3] |aaa2 |bbb2 |ccc2 |ddd2 
 [4] |aaa3 |bbb3 |ccc3 |ddd3 
 [5] |aaa4 |bbb4 |ccc4 |ddd4 
 [6] |aaa5 |bbb5 |ccc5 |ddd5 
 [7] |aaa6 |bbb6 |ccc6 |ddd6 
 [8] |aaa7 |bbb7 |ccc7 |ddd7 
 [9] |aaa8 |bbb8 |ccc8 |ddd8 
 [10]|aaa9 |bbb9 |ccc9 |ddd9 
 [11]|aaa10|bbb10|ccc10|ddd10

 マリオさんも書いておられましたが、最初だからかなと。
 でも、何度やってもOKになります。

 う〜ん???? 狐につままれたような気分です。
 特に自分でPCの設定を変えたわけではないので いつのまにか、知らないアップデートが適用された?
 あるいは、syさんに教えてもらった sfc /scannow 、メッセージは、異常なし ということでしたが
 実際には何らかの不整合が、このスキャンで修復された?

 いずれにしても、しばらく様子を見ますが、原因がわからないまま『解決』ということなのかもしれません。

(β) 2016/04/13(水) 14:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.