Excel VBA 質問スレ Part58
■ このスレッドは過去ログ倉庫に格納されています
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/ Dim Otimpo As Variant
Set Otimpo = New Penis
Otimpo.Insert Woman.Vagina >>1
=LEFT("おつかれあかたあまや",4) ややExcelと離れるのですが、他に適切な場所が見当たらないのでこちらで質問。
WordやPowerpointに、埋め込み、またはリンクで表示されているExcelの表やグラフについて、
1:ファイル名(フルパス、ないし相対パス)
2:表示されているシート名(またはシート番号)
3:表示されている表の範囲(A1からB20まで、みたいな)
を、WordやPowerpointで動かすVBAから列挙する、みたいなのを作りたいと考えてます。
(1)についてはある程度(たまに取れないのがある)なんとかなるのですが、
(2)と(3)の手段が分からないでいます。
この辺を得る手段について、ご存じの方いましたら教えてください。 表示されているシート名 って要は現在アクティブなシートってことでしょ?
ActiveSheet.Nameで取れるんじゃ? >>8
やったことがないから保証できないが、
OLEObject.ObjectプロパティからOLEオブジェクトのコントロールを取得できるはず
ここからExcelのオブジェクトモデル経由でシート名等は取れるかも >>9,10
そういえば、シート名はそれで取れますね。うっかりしてました。
ただ、Powerpointで表示されている、シート上の範囲( >>8 の(3) )がマジわからん。
ActiveSheetまでは到達出来るので、シート全体のデータは取れるのだけども、
表示範囲となるとどこを見れば良いのやら…… 表示範囲っての意味がよく判らない。使用されている範囲ならUsedRangeプロパティだけどそうじゃない? QueryTables.addを利用して取り込んだテキストデータを
TextFileFixedColumnWidths = array(5,4,2)
とVBソースに記述して5、4、2バイト目で区切ってエクセルに貼り付けしているのですが、
このarrayのカッコ内の値5,4,2の部分を1つのセル内に定義しておき、そこから取得して処理する方法を教えてください。(セル値を変えるだけで区切りバイトを変えられるようにしたいです)
セル内の定義は下記のような感じの形式で実現できたらいいなと思っています。
5,4,2
または
"5","4","2"
など
よろしくお願いします。 >>12
UsedRangeは、まさに「Excel上で利用されている範囲」になるので、ちょっと違う。
探しているのは、(WordとかPowerpointとか) 「被貼付側から見えている範囲」。
コピペを行うときにExcel上で範囲指定してる、まさにその範囲の情報が欲しいのです。
『広い範囲が使われているシート(埋め込みオブジェクト)の一部分だけが表示されている時、
その表示部分を特定する』がやりたいの。 >>13
3つパラメータがあるならそもそも3つのセルで管理すればいいんじゃないかと思うが、区切る回数も動的にしたいのかな?
パラメーター記述用のセルに5,4,2と入力しておいて、コード内でSplit関数を使いそのセルの値をカンマ区切りで配列化するのが普通かな
そうやって得たString配列の要素全てをCIntで型変換してInteger配列に入れ直せば、TextFileFixedColumnWidthsプロパティに代入できる >>15
区切る回数も動的にしたいんです。
さっそく試してみます。ありがとうございます。 >>15
無事にやりたいことが実現できました。ありがとうございました。勉強になりました。 ユーザーフォームのボタンでExcel以外のファイルを開くのにShell.Execute使ったんだけど、ボタンを押しても何も反応しない
CreateObject("Shell.Application").ShellExecute "c:\test\test.pdf" >>18
試してみたけど、そのコードで問題なく動くなあ >>18
デザインモードがオンになってるとかじゃね 検証ありがとう!
ちな標準モジュールに書くと普通に動く。
どうもユーザーフォームに書くとダメみたい >>21
違った
ユーザーフォームじゃなくてユーザーフォーム内のボタンね ユーザーフォーム作ってボタン配置してボタンのOnClickにコード書いたけど問題ない みんなマジか〜
環境は2010、2007ともにダメだった。
明日2016で試してみる。
ちなみにパスがフォルダ指定までなら動く。
もう意味わからん >>24
もしかしてpdfをダブルクリックした時に「このファイルを開くアプリ」の選択メニューが出てない? >>25
すまぬすまぬ。実は開かないのは.xlsxや.xls。
さっきやったら.txtや.bmpに書き換えるとちゃんと動いた。関連付けがおかしいかと思ったけどファイルダブルクリックでexcelファイルは開く。 >>27
やっぱりそうですよね、、
ありがとうこざいました! >>26
VISTA32ビットのEXCEL2007で再現した
ちなみにブレークポイントはってステップインさせたらちゃんと動いた 切り取り・コピーしようとしたら「クリップボードを開くことが」と表示されました 前までは正常に出来てたのに急にあんなになるなんて
どうしたらなおるんですか
原因不明の謎の症状 >>30のところ、再起動したら直りました
自己解決 WorksheetFunctionを使うと遅くなると聞きました。セルで計算して取得したほうがいいですか? >>32
遅いと言っても、よほど大量のデータを処理しない限り大差ないから気にしなくていい workbook.Aのマクロから、workbook.Bのマクロパスワードを解除できますか?
*パスワードは分かっています
**windows10 / excel 2016
同じパスワードをかけた大量のファイルのマクロパスワード解除が必要になった為 >>36
ありがとうございます。
VBAでsendkeyでパスワード入れたいのですが、プロジェクトエクスプローラーのウィンドウで、目的のworkbook.Bを選択してパスワードウィンドウを開く事がうまくできないところです。 >>37
いや、Sendkeysは絶対使っちゃいかんものNo.1だろ。
制御出来ないからな。
わかってて一過性のプログラムで使う以外に使うことは無い。 >>35
MSDNライブラリでWorkbookオブジェクトのOpenメソッドの説明を詳しく読めば解決 >>40
マクロのパスワード解除ってワークブックオープン関係なくね。 そもそもマクロパスワ―ドってことはVBEを弄ることになるから普通はセキュリティ設定に引っかかる。
VBAでVBEを弄れる設定になってるなら、参照設定でVisualBasic for Applications Extencibilityを追加して頑張ることになるわけだけどセキュリティ皆無となって危険だぞ。
それにそのコードがウィルス判定されるかも。 ■ このスレッドは過去ログ倉庫に格納されています