Google
WWW を検索 tips.asablo.jp 内を検索
 このブログサイト(tips blog)の中だけを検索できます。
 アサブロへの設定方法は、こちらをクリック

ブログ終了2018/09/03 21:41

 このブログを終了することにしました。

 最初の投稿を見ると2007年なので、どうやら10年位続けてきたようです。といってもずっと使っていない時もあったと思いますが。

 次はもうちょっと真面目に取り組んでいきたいと思います。

 それではまた。

ONKYO GX-D90(B)2018/08/05 08:49

 中国旅行から帰ってきてパソコンを付けてみたところ、オンキョーのスピーカーGX-D90(Y)からボコボコと音がします。

 PCのボリュームをゼロにしても消えないし、ケーブルを抜いても消えません。既に十数年使ったスピーカーなので内蔵アンプが発信でもしているのかと思い、引退してもらうことにしました。

 次のスピーカーを検討したところ、未だに同じモデルが現役で販売されています。上のモデルや、USB対応のアンプも考えたけれど、旅行の後で緊縮財政が必要なので同じモデルを購入することにしました。

 届いて交換してみたところ、音がぜんぜん違ってびっくり。各音が明らかに明瞭になっていて、低音もモワッとした感じからタイトになりました。

 長年の間に、徐々に電子回路やスピーカーのコーンやダンパーなどが劣化していたのでしょう。

VBAでExcelからWordを呼び出すと背面に隠れてしまう2018/06/07 21:19

 Excelの表をWordの表に変換するというVBAを書いていたところ、Wordを呼び出してもExcelの背面に隠れてしまうという現象に悩まされていました。

 プログラムはこんな感じ。

Dim uWord As New Word.Application
Dim uDoc As Word.Document

uWord.Visible = True
uWord.Activate

Set uDoc = uWord.Documents.Add

 テストしながら作っているときはちゃんと前面に来ていたのに、Excelを落として起動するところから始めるとWordが背面で起動してしまいます。

 ググれどもググれども情報がなく、ようやく先程みつけました。

https://stackoverflow.com/questions/4955366/why-doesnt-word-come-to-front-when-we-activate-it

 どうやらWindows 7以降に実装された一種のセキュリティメカニズムで、他のアプリケーションが邪魔しないようにしてあるらしい。

 あるアプリケーションは、同じプロセスで走っていない別のアプリケーションの並び順を変更できないらしい。

 開発中に上手くいくときもあったのは、この条件を回避できる時があったのかもしれません。



回避策1:

Application.ActivateMicrosoftApp xlMicrosoftWord

 これは一行で簡単だけれど、試してみると、最後の行に置くと文書2が開いてしまう。Documents.Addの前に持っていくと開かないけれど、後々ちょっと不気味。



回避策2:

uWord.WindowState = wdWindowStateMinimize
uWord.WindowState = wdWindowStateNormal

 最小化して、もとに戻すという至ってシンプルな方法です。
 とりあえずWindows 10では動作しました。


 というわけで、ようやく解決したようです。
\(^o^)/

 今夜はよく眠れそうです。
( ̄^ ̄)



2018-06-08
 作業中に突然前面に表示されたアプリをうっかり操作してしまわないために、Vistaから追加された機能のようです。そういえばそんな話があったような気がします。

https://social.technet.microsoft.com/Forums/ie/ja-JP/81c6b01d-693f-408b-a9db-1edb48102b36/12450125031252212465125401247112519125313621521205261781239530?forum=w7itprogeneralja

Buffalo WZR-600DHP22018/03/29 22:40

 バッファローの無線LANルーターに欠陥があるという情報がメーリングリストで流れてきました。

 形を見ると、うちで使っているのに似ています。(-_-;)

 というわけで、先ほど調べてみたところ型番が違いました。

 だがしかし、うちのルーターをググってみると、なんと ac に対応していないではないですか!

 いったいいつ買ったんだと思い、メールを検索すると、2013/10/7でした。なんともう4年半が経とうとしています。最近買ったような気がしていたけれど…

PCが起動しなくなったらBIOS設定が変わっていた2018/02/17 08:02

 先ほどPCでWebを見ていたところ、リンクをクリックしてもページが切り替わらなくなりました。

 サーバーが遅いのか?、と思い、前のページに戻ろうとしても、砂時計のままです。

 Chromeがフリーズしたのか?、と思い、タスクバーにアクセスしても無反応。

 OSごとフリーズか、珍しいな、と思いながら電源再投入。

 PCが起動してくると、起動ドライブが見つかりません、の文字が。
( ゚д゚)ハッ!

 一時的に認識できないだけか(と願って)、電源を入れなおしても効果なし。

 やばいSSDが飛んだか? 文書類は別ドライブだけれど、システムドライブは…。いや、そういえばアクロニスでバックアップしてあったっけ、とちょっと安心。

 再起動を試みるうちに、チェック画面に切り替わり、ドライブチェックの文字が。早速実行してみると、なんと完了。

 ってことは、ドライブは生きているんでね?、と思い、BIOS画面に入り、ブートオーダーの設定画面に入ったところ、すべての項目がインセンシティブでグレーアウトの状態。?、こうだったっけ?

 メニューに、有効という文字があったので、実行したところ文字が白に戻り、変更可能になったので、システムドライブを最優先して保存。

 PCを再起動したところ、なんとめでたく何事もなく起動してきました。

 PC起動中にフリーズして、BIOSの設定が変わっているってどうなっているんだ? と謎が残りました。怪しい…


2018/2/19
 というわけで、壊れていたのはSSDでした。

 その後完全に認識しなくなりBIOSから見えなくなりました。

 仕事プライベートで初めて壊れたSSDかもしれません。

 というわけで、新しいSSDをアマゾンに発注しました。

Visual Basic の使いにくい点2018/02/10 08:45

 最近、Excelを使って自動化する必要に迫られ、VBAを使ってプログラムを組んでいます。

 VBAはVisiaul Basic for Applicationの略で、基本はVisual Basic 6.0のようです。

 今となっては古い言語のため、色々と使いにくい点が目につきます。



■デフォルトがグローバル変数
 まずはこれです。VBでは、変数は基本的にグローバル変数です。

 そのため、親プロシージャーの変数を、それから呼ばれた子供のプロシージャーで意図せず変更してしまうという危険なことが起こってしまいがちです。

 これを回避するためには、「忘れないように」一つ一つ変数をdim宣言してやる必要があります。


■デフォルトの引数が参照渡し
 これも同様にどうかしている仕様です。

 プロシージャー等の引数が参照渡しのため、そのままだと子供のプロシージャーで引数を変更すると、親の変数も変わってしまいます。

 これを回避するには、「忘れないように」byval宣言する必要があります。


■複数の引数を括弧で囲む場合callが必要
 しばし悩んだのが意味不明のエラー。原因は括弧を使って複数の引数を与えるプロシージャー呼び出し時にcallステートメントを忘れたことでした。

http://www.atmarkit.co.jp/ait/articles/1503/17/news039.html



 どれもこれもC言語を使っていた人からすると、なしてこうなの、と思う点だと思います。

 おそらくこれはいずれもおおもとのBASICに原因があると思います。

 私が知っているBASICには、そもそもローカル変数なんてありませんでした。なので、グローバル変数がデフォルトでローカル変数として使いたい場合には宣言するという形になったのではないかと思います。



 callステートメントはサブルーチンを呼び出すときの名残ではないかという気がします。で、後からfunctionが追加されて戻り値を使えるようになったと。

 VBの場合、戻り値を使う場合には括弧で囲む、そうでない場合、つまりプロシージャーの場合は括弧を使わないというやり方がシンプルなのかもしれません。

 msgboxに括弧を付けるか付けないかという話では、括弧はC言語では括弧演算子という演算子の一つだという事を忘れていました。



 参照呼出しについても似たようなものかもしれません。



 VBAは言語仕様はともかく、あの開発環境はどうにかならないのかと思っていました。言語仕様に手を付けるのは互換性の面から大変なのはよくわかりますが、開発環境位は改善できると思うのですが。

 VisualStudioを使った後にVBAを使うと、なんなのこれは、と思います。(-_-;)

 言語仕様面では、是非try catchを追加してほしい。on errorはいやです。

 後は、変数名の後に、つい"."を打って、あれ、なんでインテリセンスが効かないんだ? となってしまうのも何とかなると嬉しい。

 早く、VB.NET化しないかなぁ、と思っていたら、なんとPythonの導入が検討されているとか。

https://forest.watch.impress.co.jp/docs/serial/yajiuma/1097447.html

VBAでGetPivotDataを使う2018/01/27 11:12


VBAでピボットテーブルを作り、さらにその集計データを利用しようとしたけれど、よいサンプルが見当たらなかったので作ってみました。

GetPivotData関数を使っているサイトはいくつかサンプルがありますが、GetPivotDataメソッドを使っているサイトは私が見た範囲では見当たりませんでした。

参考にしたサイトはこちらです。
http://www.databison.com/how-to-read-data-from-pivot-table-using-vba/

元データはこんな感じです。
Table

作成されるピボットテーブルはこんな感じです。
Pivot

そして、ピボットから作られるリストはこんな感じです。

List

で、コードです。

Qtyも追加してデータフィールドを二つにしたパターンも作ってみましたが、複雑になるのでやめました。

データフィールドが複数ある場合には、基本的には次のように回すことになりますが、列名に対する考慮が必要になりそうです。
for uDataField in uPvtTable.DataFields

後は、ループの中でif文等を使って、煮るなり焼くなりすればよいと思います。

Option Explicit

Sub uPivotDemo()
    Dim uPvtTableName As String
    
    uCreatePivot
    uCopyPvtValue
End Sub

Private Sub uCreatePivot()
    Dim uTable As ListObject
    Dim uTableSheet As Worksheet
    Dim uBasename As String
    
    Dim uPvtsheet As Worksheet
    Dim uPvtCache As PivotCache
    Dim uPvtTableName As String
    
    Set uTable = ActiveCell.ListObject
    If uTable Is Nothing Then
        If ActiveSheet.ListObjects.Count = 0 Then
            MsgBox "テーブルが必要です"
            Exit Sub
        Else
            Set uTable = ActiveSheet.ListObjects(1)
        End If
    End If
    
    Set uTableSheet = ActiveSheet
    uBasename = uTableSheet.Name

    'ピボットテーブル用シート追加
    Set uPvtsheet = Sheets.Add(after:=Worksheets(uTableSheet.Name))
    uPvtsheet.Name = uBasename & "Sum"
    
    
    'キャッシュ作成 (データソースとなるテーブルから)
    Set uPvtCache = ActiveWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=uTable.Name)
    
    uPvtTableName = uBasename & "PvtTable"
    
    
    'ピボットテーブル作成 (キャッシュから)
    uPvtCache.CreatePivotTable _
        TableDestination:=uPvtsheet.Range("A3"), _
        TableName:=uPvtTableName
    
    
    Sheets(uPvtsheet.Name).Select
    Cells(3, 1).Select
    
    
    '集計パラメーター設定
    With ActiveSheet.PivotTables(uPvtTableName).PivotFields("Country")
        .Orientation = xlColumnField
        .Position = 1
    End With
    
    With ActiveSheet.PivotTables(uPvtTableName).PivotFields("City")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    ActiveSheet.PivotTables(uPvtTableName).AddDataField _
        ActiveSheet.PivotTables(uPvtTableName).PivotFields("Amount"), "合計 / Amount", xlSum
End Sub

Private Sub uCopyPvtValue()
    Dim uPvtTable As PivotTable
    Dim i As Long
    
    Dim uRowField As PivotField
    Dim uRowItem As PivotItem
    Dim uColField As PivotField
    Dim uColItem As PivotItem
    
    Dim uDataField As String
    
    Set uPvtTable = ActiveSheet.PivotTables(1)
    
    'i = Cells(Rows.Count, 1).End(xlUp).Row + 3
    i = 13
    
    For Each uRowField In uPvtTable.RowFields
        For Each uRowItem In uRowField.PivotItems
            For Each uColField In uPvtTable.ColumnFields
                For Each uColItem In uColField.PivotItems
                    uDataField = uPvtTable.DataFields(1).SourceName
                    
                    Cells(i, 1).Value = uRowItem.Name   'Bngkok, Frankfurt, ...
                    Cells(i, 2).Value = uColItem.Name   'Germany, Japan, Thailand
                    
                    Cells(i, 3).Value = uPvtTable.GetPivotData( _
                        uDataField, uRowField.Name, uRowItem.Name)  'City Total
                        
                    Cells(i, 4).Value = uPvtTable.GetPivotData( _
                        uDataField, uColField.Name, uColItem.Name)  'Country Total
                        
                    Cells(i, 5).Value = uPvtTable.GetPivotData( _
                        uDataField, _
                        uRowField.Name, uRowItem.Name, _
                        uColField.Name, uColItem.Name)  'Country City total
                        
                    i = i + 1
                Next
            Next
        Next
    Next
    
End Sub

メモリ増設で性能が大幅向上2017/12/20 07:12

 職場のPCのメモリーが4GBで、タスクマネージャーで空きメモリを調べてみたところほとんど0でした。

 仕事ではIllustratorやPhotoshopも使うときがあるので、これはメモリーを足したら速度が上がるのではと思いました。幸いメモリースロットも一つ空いています。

 4GB増設と8GB増設で悩みましたが、毒を食らわば皿までで、8GB増設して12GBにすることにしました。

 CPUはcore i5 の第6世代だったと思います。ストレージはIntelのSSDです。

 メモリーを搭載して使ってみたところ体感で速くなっていました。再度空きメモリーを見てみると日によっては4GBくらい空いているときもあるし、ほとんど空きがない時もあります。12GBまではいらないけれど、8GBは必要だろうと思いました。

 メモリーに空きがあるのでBIOSの設定を変更してビデオメモリーへの割当を増やしてみようかと思いました。GPUが統合されているCPUではメインメモリーをビデオメモリーとして使用します。

 これが32MBのときのエクスペリエンスインデックス
 数値はメモリー増設前のものです。

 そしてこれがビデオメモリーに512MB割り当てたときのエクスペリエンスインデックス

 数値上は劇的ビフォーアフターで、Windowsのアニメーションを無効にしたのも相まって、サックサクのPCになりました。パッパとウィンドウが切り替わり、アプリケーションの動作もスムーズになったので作業をしていて気持ちがいいです。

 メモリーを4GBしか積んでいないPCなら増設により速くなるかもしれません。ちなみに、Illustrator等は頻繁には使わなくて普段はオフィス用途のアプリを使っています。

 SSDでもこれだけの効果がありましたから、HDDならキャッシュの効果がさらにあるので、より速くなるかもしれません。

Anker PowerPort Qi2017/12/02 09:17

 iPhone 8 Plusを買ったので、それ用の充電器としてAirPowerを買うつもりでした。やはり純正というのと、二台一緒に載せられるのも良さげです。

 だがしかし、いつになったら出るのかわからないし、下記の記事を読んで、出たとしても値段も高そうなので、記事中にもあるAnker のPowerPort Qi A2511012を買うことにしました。

https://www.excite.co.jp/News/column_g/20171127/Exnewslife360_1915.html

 買ったのはユナイテッド航空のマイルが貯まるビックカメラ。

 税込み、送料無料で1,554円。安い!

 品切れだったらしく、11/27に頼んで、昨晩12/1に届きました。

 早速乗せてみるとしっかり認識して充電できました。

 もっと小さいものを予想していましたが大きくて、乗せる位置もシビアではありませんでした。

 急速充電はバッテリーを痛めるので、5Wで十分です。



 と書いたところで、フル充電になっても、赤と青の両方のLEDがつかないことに気が付きました。
( ̄□ ̄;)!!

 Ankerに問い合わせてみます。
(-_-;)



 手持ちのUSB電流電圧テスターで測ってみたところ、約5v, 約1Aで充電されていました。定格通り5wで充電されていることになります。

 充電器はAnker 24W 2ポート USB急速充電器 A2021121

http://tips.asablo.jp/blog/2017/05/28/

 満充電後は0.2A強で落ち着きます。

 試しにアップル純正の充電器とケーブルに繋いでみたところ、こちらも0.2A程度の電流が流れたままでした。

 こちらのページを見ても100%まで充電した後も0.2A程度流れたままになると書かれているのでこういうものなのかもしれません。

https://news.mynavi.jp/article/20130901-iphone_why100/

 バッテリーを大事にして節電もしたいのであれば、朝行く前に充電したほうが良さそうです。



 さらに1、2時間後。思い出して見に行ったところ、電流は0.12Aで安定していました。Ankerの充電器との組み合わせです。

 これなら問題なさそうです。



 ちなみに、ついでにXperia Z Ultraを引っ張り出してきて、計測してみたところ、1本のケーブルでは0.64Aしか出ませんでしたが、もう一本のUSBケーブルでは1A出ていました。ケーブルで充電能力が違うのを目の当たりにしました。

フレッツ光 ギガラインタイプで400Mbps前後に2017/11/28 07:12

 先日、日中に職場のネット速度を測ったところ下り200Mbps、上り100Mbpsのフレッツ光ハイスピードの上限に達していることがわかりました。

 これなら、プランをギガラインタイプに変更しても速くなりそうです。

 変更にかかる費用は初期費用が2,000円。月額200円アップです。

 NTTに聞いてみたところ、職場の環境(ひかり電話と使ったビジネスホンでPBXとの接続はISDN)だと局内工事だけで済むけれど、ギガラインタイプにプロバイダーが対応していない場合があるので確認してくださいということでした。

 IIJに問い合わせてみたところ問題ないということで、切り替えに際してアカウントの変更など何もしなくてもよいと言うことでした。

 それなので、早速申し込んで先週末にプラン変更が行われました。

 結果は上りも下りも400Mbps前後出るようになり、200円で大幅な性能アップを果たしました。さすがはIIJ。

 体感上も各ページの表示が速くなった、ような気がします。例えば特許庁なんかは瞬時に表示されるようになりました。今、家で見るとパラパラです。

 どんな環境でも速くなるわけではないので、まずは速度計測をしてみるのが良いでしょう。

http://netspeed.studio-radish.com/



 通信料増大によりフレッツ光の部分がボトルネックになり、いずれは従量制になる可能性が書かれています。

http://itpro.nikkeibp.co.jp/atcl/watcher/14/334361/110800954/
Google
WWW を検索 tips.asablo.jp 内を検索
 このブログサイト(tips blog)の中だけを検索できます。
 アサブロへの設定方法は、こちらをクリック