Excel VBA 質問スレ Part58

■ このスレッドは過去ログ倉庫に格納されています
0005デフォルトの名無しさん
垢版 |
2018/11/22(木) 09:37:41.30ID:ZIGZU+Kk
>>1
=LEFT("おつかれあかたあまや",4)
0008デフォルトの名無しさん
垢版 |
2018/11/23(金) 09:01:48.81ID:pYaMx0la
ややExcelと離れるのですが、他に適切な場所が見当たらないのでこちらで質問。

WordやPowerpointに、埋め込み、またはリンクで表示されているExcelの表やグラフについて、
1:ファイル名(フルパス、ないし相対パス)
2:表示されているシート名(またはシート番号)
3:表示されている表の範囲(A1からB20まで、みたいな)
を、WordやPowerpointで動かすVBAから列挙する、みたいなのを作りたいと考えてます。

(1)についてはある程度(たまに取れないのがある)なんとかなるのですが、
(2)と(3)の手段が分からないでいます。
この辺を得る手段について、ご存じの方いましたら教えてください。
0009デフォルトの名無しさん
垢版 |
2018/11/23(金) 10:13:26.49ID:NlhnMW/X
表示されているシート名 って要は現在アクティブなシートってことでしょ?
ActiveSheet.Nameで取れるんじゃ?
0010デフォルトの名無しさん
垢版 |
2018/11/23(金) 11:15:52.26ID:OdmoxaxG
>>8
やったことがないから保証できないが、
OLEObject.ObjectプロパティからOLEオブジェクトのコントロールを取得できるはず
ここからExcelのオブジェクトモデル経由でシート名等は取れるかも
00118
垢版 |
2018/11/23(金) 11:27:11.08ID:pYaMx0la
>>9,10

 そういえば、シート名はそれで取れますね。うっかりしてました。
ただ、Powerpointで表示されている、シート上の範囲( >>8 の(3) )がマジわからん。
ActiveSheetまでは到達出来るので、シート全体のデータは取れるのだけども、
表示範囲となるとどこを見れば良いのやら……
0012デフォルトの名無しさん
垢版 |
2018/11/23(金) 16:52:45.93ID:NlhnMW/X
表示範囲っての意味がよく判らない。使用されている範囲ならUsedRangeプロパティだけどそうじゃない?
0013デフォルトの名無しさん
垢版 |
2018/11/23(金) 18:46:47.55ID:A5v+c7Q3
QueryTables.addを利用して取り込んだテキストデータを
TextFileFixedColumnWidths = array(5,4,2)
とVBソースに記述して5、4、2バイト目で区切ってエクセルに貼り付けしているのですが、
このarrayのカッコ内の値5,4,2の部分を1つのセル内に定義しておき、そこから取得して処理する方法を教えてください。(セル値を変えるだけで区切りバイトを変えられるようにしたいです)
セル内の定義は下記のような感じの形式で実現できたらいいなと思っています。
5,4,2
または
"5","4","2"
など
よろしくお願いします。
0014デフォルトの名無しさん
垢版 |
2018/11/23(金) 18:47:07.61ID:pYaMx0la
>>12
UsedRangeは、まさに「Excel上で利用されている範囲」になるので、ちょっと違う。

探しているのは、(WordとかPowerpointとか) 「被貼付側から見えている範囲」。
コピペを行うときにExcel上で範囲指定してる、まさにその範囲の情報が欲しいのです。
『広い範囲が使われているシート(埋め込みオブジェクト)の一部分だけが表示されている時、
 その表示部分を特定する』がやりたいの。
0015デフォルトの名無しさん
垢版 |
2018/11/23(金) 20:29:14.68ID:SJrbhhQk
>>13
3つパラメータがあるならそもそも3つのセルで管理すればいいんじゃないかと思うが、区切る回数も動的にしたいのかな?

パラメーター記述用のセルに5,4,2と入力しておいて、コード内でSplit関数を使いそのセルの値をカンマ区切りで配列化するのが普通かな

そうやって得たString配列の要素全てをCIntで型変換してInteger配列に入れ直せば、TextFileFixedColumnWidthsプロパティに代入できる
0018デフォルトの名無しさん
垢版 |
2018/11/26(月) 18:21:38.61ID:jE4mmGCd
ユーザーフォームのボタンでExcel以外のファイルを開くのにShell.Execute使ったんだけど、ボタンを押しても何も反応しない

CreateObject("Shell.Application").ShellExecute "c:\test\test.pdf"
0021デフォルトの名無しさん
垢版 |
2018/11/26(月) 20:06:27.80ID:c8QT25Tm
検証ありがとう!
ちな標準モジュールに書くと普通に動く。
どうもユーザーフォームに書くとダメみたい
0023デフォルトの名無しさん
垢版 |
2018/11/26(月) 22:08:01.92ID:sSO4v+r+
ユーザーフォーム作ってボタン配置してボタンのOnClickにコード書いたけど問題ない
0024デフォルトの名無しさん
垢版 |
2018/11/26(月) 22:25:28.75ID:c8QT25Tm
みんなマジか〜
環境は2010、2007ともにダメだった。
明日2016で試してみる。
ちなみにパスがフォルダ指定までなら動く。
もう意味わからん
0025デフォルトの名無しさん
垢版 |
2018/11/26(月) 22:57:14.49ID:sSO4v+r+
>>24
もしかしてpdfをダブルクリックした時に「このファイルを開くアプリ」の選択メニューが出てない?
0026デフォルトの名無しさん
垢版 |
2018/11/27(火) 08:58:52.14ID:TmwvOLJp
>>25
すまぬすまぬ。実は開かないのは.xlsxや.xls。
さっきやったら.txtや.bmpに書き換えるとちゃんと動いた。関連付けがおかしいかと思ったけどファイルダブルクリックでexcelファイルは開く。
0029デフォルトの名無しさん
垢版 |
2018/11/27(火) 21:03:19.26ID:JHhXTC3j
>>26
VISTA32ビットのEXCEL2007で再現した
ちなみにブレークポイントはってステップインさせたらちゃんと動いた
0030デフォルトの名無しさん
垢版 |
2018/11/28(水) 21:03:32.22ID:btdWGy6U
切り取り・コピーしようとしたら「クリップボードを開くことが」と表示されました 前までは正常に出来てたのに急にあんなになるなんて
どうしたらなおるんですか

原因不明の謎の症状
003130
垢版 |
2018/11/28(水) 21:11:36.27ID:btdWGy6U
>>30のところ、再起動したら直りました
自己解決
0032デフォルトの名無しさん
垢版 |
2018/11/28(水) 21:55:41.99ID:6iHSQiFE
WorksheetFunctionを使うと遅くなると聞きました。セルで計算して取得したほうがいいですか?
0034デフォルトの名無しさん
垢版 |
2018/11/28(水) 23:27:06.65ID:6iHSQiFE
>>33
ありがとうございます
0035デフォルトの名無しさん
垢版 |
2018/11/30(金) 08:07:23.94ID:yuW+a+er
workbook.Aのマクロから、workbook.Bのマクロパスワードを解除できますか?
*パスワードは分かっています
**windows10 / excel 2016

同じパスワードをかけた大量のファイルのマクロパスワード解除が必要になった為
0037デフォルトの名無しさん
垢版 |
2018/11/30(金) 08:53:39.83ID:yuW+a+er
>>36
ありがとうございます。

VBAでsendkeyでパスワード入れたいのですが、プロジェクトエクスプローラーのウィンドウで、目的のworkbook.Bを選択してパスワードウィンドウを開く事がうまくできないところです。
0038デフォルトの名無しさん
垢版 |
2018/11/30(金) 09:06:54.20ID:cHj05URw
>>37
いや、Sendkeysは絶対使っちゃいかんものNo.1だろ。
制御出来ないからな。
わかってて一過性のプログラムで使う以外に使うことは無い。
0042デフォルトの名無しさん
垢版 |
2018/11/30(金) 18:57:50.86ID:cHj05URw
そもそもマクロパスワ―ドってことはVBEを弄ることになるから普通はセキュリティ設定に引っかかる。

VBAでVBEを弄れる設定になってるなら、参照設定でVisualBasic for Applications Extencibilityを追加して頑張ることになるわけだけどセキュリティ皆無となって危険だぞ。

それにそのコードがウィルス判定されるかも。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況