X



Excel VBA 質問スレ Part59
■ このスレッドは過去ログ倉庫に格納されています
0316デフォルトの名無しさん (アウアウウー Sa4b-Ayov)
垢版 |
2019/02/19(火) 13:55:09.79ID:mzDqOD0La
>>315
なるほどなるほど。
詳しく説明してくれてありがとう!
たしかにvbaは歴史があるから、調べてるのは楽だよね。
JavaScriptはしばらく家で勉強した方が良さそうだねw
時期をみて上司に提案してみるよ!
0322デフォルトの名無しさん (ワッチョイ 2735-cT+3)
垢版 |
2019/02/19(火) 15:44:15.07ID:XTzrMDQC0
>>321
かなりめんどくさいことをしている気がする
やりたい事はこれじゃないんじゃないか

Private Sub UserForm_activate()
'多分一回呼ばないとダメ
WebBrowser1.Navigate ("https://example.com";)
End Sub

Private Sub UserForm_Click()
html = "<div>foo</div>"
WebBrowser1.Document.body.InnerHtml = html
End Sub
0323デフォルトの名無しさん (ワッチョイ 8702-5sVJ)
垢版 |
2019/02/19(火) 16:06:51.67ID:XJA9DtkM0
四角の領域を表す構造体にRECTというのがありますが、領域が10個あってしかも定数です
その中にあるポイントがあるかどうかを判断するのに、 PtInRectを使いますが、10個のRECT領域をどうやって
定義するのか考えています
Dim rect1 as RECT, rect2 as RECT ,,,,, rect10 as RECT
とやって、これらに定数を代入するときにいちいち
rect1.Top = 10
rect1.Left =10
---
rect10.Bottom = 1000
rect10.Right = 1970
とかやってたら大変です。 Cとかなら
rect1 = CRect( 10,10,100,100)
って出来ますが、VBAでは出来ませんか。 またやりたいのは、PtInRectなので、簡単に

if PtInRect( CRect( 10,10,100,100), x,y) <> 0 then

みたいにしたいのですが、どうしたら一番スマートに出来るでしょう?
0324デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/19(火) 16:25:56.81ID:DYfM7cdrH
>>323
四角形を描画するメソッドは知ってる?
0325デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/19(火) 16:32:07.86ID:DYfM7cdrH
>>323
ごめん勘違い
GetCursorPos()
0326デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/19(火) 16:34:56.56ID:DYfM7cdrH
>>323
またまた勘違い
座標の指定はむりじゃね
それぞれの四角形の位置関係に規則性はないんでしょ
0327デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/19(火) 16:46:08.58ID:DYfM7cdrH
Topとか名前を付けないで配列の要素番号に対応づけるとか
0328デフォルトの名無しさん (ブーイモ MMcf-blJ9)
垢版 |
2019/02/19(火) 19:15:58.92ID:C6whiypoM
>>322
それです!ドストライクです!!
エスパーさん手間を掛けて本当にすみませんでした。
二日考えてダメだったんですけど一回何か表示させる必要があったんですね。

あと次回は自力で出来るように頑張ります〜!!
ありがとうございました!
0329デフォルトの名無しさん (ワッチョイ 071f-BmB6)
垢版 |
2019/02/19(火) 19:40:34.45ID:VgLhyIar0
カンマ区切りのCSVファイルを2次元配列に入れたい。

Dim arr()
arr=getCSVData(strFile)


private Function getCSVData(byval ...)as string()
Dim tarArr()
 //処理
getCSVData=tarArr
end Function
こんな感じで配列にして1次元が行、2次元が列に格納したいんですが
ReDim、ReDim Preserveのタイミング等々が分かりません。

先に一度開いて行数と列数の最大を取得してからReDimでtarArrを2次元配列にし、もう一度開いて一行ずつ読み取ってカンマ区切りをsplitして配列に入れてからUBound分ループしてtarArrに入れる方法ですかね?
0330デフォルトの名無しさん (ワッチョイ c701-mnSR)
垢版 |
2019/02/19(火) 20:09:29.49ID:3o3WGLUD0
>>329
多次元配列は最後の要素しか拡張できないから、左の要素はUbound(Split(1行目,”,”))で最初に確定させるしかない
右の要素はredim preserveで拡張できるから普通にループで増やしていけば良い
0331デフォルトの名無しさん (アークセー Sx7b-a/B5)
垢版 |
2019/02/19(火) 20:17:18.51ID:f2qQz3/xx
>>323
クラスにしたらいいんじゃないの
vbaで引数付きコンストラクタの実現は難しいけど、
四つの座標情報を引数に取るプロパティ関数を用意して、Rect構造体のプロパティを持たせるようにすればそれらしいことができるのでは
0333デフォルトの名無しさん (ワッチョイ 5f2f-dPPD)
垢版 |
2019/02/19(火) 21:21:04.93ID:eXSGnhOj0
>>323
構造体でできなくはない
VBAの構造体、制限多いけどな

Public Type Rect
Top As Integer: Left As Integer: Bottom As Integer: Right As Integer
End Type
Public Function CRect(Top As Integer, Left As Integer, Bottom As Integer, Right As Integer) As Rect
Dim r As Rect
r.Top = Top: r.Left = Left: r.Bottom = Bottom: r.Right = Right
CRect = r
End Function
Public Function PtInRect(Rect As Rect, x As Integer, y As Integer) As Boolean
If Rect.Left < x And Rect.Right > x And Rect.Top < y And Rect.Bottom > y Then
PtInRect = True
End If
End Function
Public Sub test()
Dim r(10) As Rect
r(1) = CRect(10, 10, 100, 100) '...
If PtInRect(r(1), 15, 180) Then
MsgBox "In Rect1"
End If
If PtInRect(CRect(10, 10, 100, 100), 15, 80) Then
MsgBox "In Rect2"
End If
End Sub
改行多すぎらしいので:で詰めて書いてる
0335デフォルトの名無しさん (ワッチョイ 5f4f-nFDO)
垢版 |
2019/02/19(火) 21:47:03.10ID:LH3y88CS0
>>319
え?
そうなの?
それは知らなかった。

ちなみに最新はASP.netのcore2.1だと思うんだけど
VisualStudioでASP.Net Coreプロジェクトを作る際、
.Net Coreと.Net Freamworkのどちらのプラットフォームを選択するか聞いてくるけどあれは何なの?
0337デフォルトの名無しさん (ワッチョイ 877d-yQ/S)
垢版 |
2019/02/19(火) 22:33:29.04ID:LjPGQpms0
Dimってどこに書いてますか?
全部最初に書きますか?

For i= 0 to 100
for j = 0 to 100
iとjを使った処理
next
next
この時、Dim j as Integer ってどこに書きますか?
「For i= 0 to 100」の上か下かという質問です。
0339デフォルトの名無しさん (ワッチョイ 071f-BmB6)
垢版 |
2019/02/19(火) 22:45:04.21ID:VgLhyIar0
>>330
自分でも調べてたけど、「最後の要素しか増やせない」って同じこと書いてありました。これは
例えば、行数読んだ結果がLcnt=10だとして
まず

ReDim(Lcnt,0)で作り
配列(0 to 10,0)ができ
Redim Preserve(Lcnt,Ubound(Split(1行目))
区切った値が5なら
配列(0 to 10,0to5)が出来てしまい、いっぺんに右の要素数が変更されるってことで合ってます?
と言うことは、1行目が5列で次に読んだ2行目が3列なら右の要素数は3に減るって事ですかね?
ifか何かで要素数は増える時だけRedim Preserveのが良いですかね?
0340デフォルトの名無しさん (スプッッ Sdff-BmB6)
垢版 |
2019/02/19(火) 22:50:47.62ID:VJWnLClRd
>>337
VBは上にまとめ
C#は使う時
他の言語はしらん。あくまでイメージ。

スコープは短くが理想だから長くなって下部に変数が初登場ならFunctionとかCallで余分そうなものは排除。

だからそのループも逃がす
0341デフォルトの名無しさん (ワッチョイ bf8c-O/Qv)
垢版 |
2019/02/20(水) 00:08:08.78ID:Hgznwu9O0
>>339
あなたの用途に合ってるのは2次元配列じゃなくて配列の配列。
ReDim arr(0 To n)
arr(i) = 別の配列  ` i : 0〜n
みたいなことができる

「別の配列」のところに、csvの一行分を処理して配列を返す関数を当てはめればいい。
もちろんクラス化してもいいけどさ
0343デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/20(水) 07:38:24.67ID:5mnmpgTAH
クラスって要素名を予め宣言しないといけないからcsvの要素が変わると対応できない?
教えてエロい人
0345デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)
垢版 |
2019/02/20(水) 11:17:04.40ID:Aqbfj0bAp
教えてください。
エクセルのマクロです
PDFファイル(100ページくらいある)を、エクセルに、全ページをたて一列に貼り付けたいのですが、
どう書けばいいでしょうか
0347デフォルトの名無しさん (ワッチョイ e7ce-1ffV)
垢版 |
2019/02/20(水) 12:07:33.49ID:crzgHpZv0
なぜPDFを貼り付けるのか
そのまま印刷すればええやん

そのPDFは1つのファイルの中に100ページあるの?
1ページだけのPDFファイルが100個あるの?

バラバラのPDFファイルを1つに結合したいだけならフリーウェアでできるよ
0348デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)
垢版 |
2019/02/20(水) 12:28:15.94ID:Aqbfj0bAp
>>347
印刷のためじゃなく、PDFをシートにはり、横にエクセルでコメント入れたい。
0349デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/20(水) 12:36:44.12ID:5mnmpgTAH
コメントならPDFファイルでも入れられるよ
0350デフォルトの名無しさん (ワッチョイ 2735-cT+3)
垢版 |
2019/02/20(水) 12:37:09.49ID:HgkG/6H60
>>345
PDFを画像に分割→エクセルに貼り付け
って流れになる
PDFから直接どうこうは止めたほうが良い、PDFを触るのはかなりめんどくさい

PDFを画像に分割するソフトがあると思うから、まずはそれを探して試してみて
どういう形式で画像が出て来るかが分かれば、後はvba簡単に書けると思う

>>349
そういやそっちの方が早いね
0351デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)
垢版 |
2019/02/20(水) 12:38:58.44ID:Aqbfj0bAp
>>349
大量のコメントや式です
0352デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)
垢版 |
2019/02/20(水) 12:39:49.65ID:Aqbfj0bAp
>>349
大量のコメントや式です
0354デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)
垢版 |
2019/02/20(水) 12:53:11.56ID:Aqbfj0bAp
分割するとは?
100ページのドキュメントだから100個のファイルを作成するということでしょうか。
0356デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)
垢版 |
2019/02/20(水) 13:15:01.09ID:Aqbfj0bAp
分割しないで、ページを読み込み、貼り付けはできないのでしょうか?
0357デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/20(水) 13:17:35.13ID:5mnmpgTAH
100in1で出力すればいけんじゃない?
0359デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/20(水) 13:27:47.31ID:5mnmpgTAH
PDFを画像にするっていうのはプリンタで印刷するのと同じイメージだから基本1ページ1ファイルね
0361デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/20(水) 13:51:25.06ID:5mnmpgTAH
pdfをtxtにできるサイトがあるね
0363デフォルトの名無しさん (ワッチョイ e7ce-1ffV)
垢版 |
2019/02/20(水) 14:49:29.70ID:crzgHpZv0
どうしてもVBAとExcel上でやりたかったら
100ページのPDFを100枚の画像に変換するのはフリーウェアで一発でできる
画像をワークシートに並べるだけならVBAで簡単に書ける

上司の命令とかで他の選択肢がないなら、俺ならこうする
0366デフォルトの名無しさん (ワッチョイ 4794-7Bqt)
垢版 |
2019/02/20(水) 17:59:23.96ID:lkHSh4f40
「○○したいんですけど教えて下さい」
「なんでそんなことしたいの?バカなの?」

何でこんな回答いちいちすんだろ
答えてくてウズウズしてる自称プロが自分のわからない質問来てカリカリしちゃってるのか?
0368デフォルトの名無しさん (ワッチョイ c701-mnSR)
垢版 |
2019/02/20(水) 19:09:49.05ID:W87kh7t10
できない。

以上。
0371デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)
垢版 |
2019/02/20(水) 19:30:07.27ID:Aqbfj0bAp
1ページ目が貼り付けられるけど、ページを指定できないのかな
0378デフォルトの名無しさん (ワッチョイ 7d01-Y1hu)
垢版 |
2019/02/21(木) 05:02:12.65ID:fo0B5AuF0
>>376
組織はそれが普通。趣味で仕事やりますというわけには行かない
0380デフォルトの名無しさん (ワッチョイ 6a98-Y1hu)
垢版 |
2019/02/21(木) 08:00:03.08ID:WrVB68JS0
趣味で作り上げたとしても説明してレビュー受けないといけない。その労力って結構きついしいっそ言われたまま作り上げた方が精神的にラクね
0382デフォルトの名無しさん (JP 0H2e-AaBj)
垢版 |
2019/02/21(木) 08:24:52.09ID:hsBre2j/H
マニュアル化できるレベルの仕事しかできないって自虐だろ
0383デフォルトの名無しさん (スップ Sd0a-er5G)
垢版 |
2019/02/21(木) 12:40:21.42ID:tE5CGhgad
1.質問に回答する。
2.質問者から、「その場合だと〜が上手くいきません。」と返事。
3.その場合は〜すれば良いと回答する。
4.質問者から「それだと〜」...
5.2-4を何度か繰り返す。
6.質問者に「そもそも君はその処理で何をやりたいんだ?」と聞く。
7.質問者の返事を聞いて、結局質問者の設計が糞だったと知る。
8.1-7をを何度となく経験してると、質問を見た時に設計の糞さ加減がかなりの確度で予想できるようになる。
9.質問者の聞いてることだけ回答すると糞設計のせいでドツボに嵌まるので聞いてることだけ回答するのは辞めようという結論になる。
10.質問者は自分の糞設計に気付かないので、質問にだけ回答すれば良いのにと思う。
0384デフォルトの名無しさん (ワッチョイ c594-uPuZ)
垢版 |
2019/02/21(木) 16:01:26.14ID:EV12A9vO0
こうやって質問者をひとくくりで決めつけちゃうような視野が狭い人が一番の癌なんだよな

バカほどなんでも決めつけて単純化させようとする
勝手に単純化させた結論を赤の他人にいきなり押しつけるから当然理解されない
理解されないことを相手がバカだからと決めつけていきなり罵り出す
頭がおかしい人なのかな?と放置されると論破して黙らせたと思い込んで悦に浸り出す
そしてプロ回答者としての自信を増して増長して居座る
0385デフォルトの名無しさん (ドコグロ MMb1-bAbS)
垢版 |
2019/02/21(木) 16:10:32.99ID:7HScUEGsM
大抵の事務仕事は本来単純なことをわざわざ難しくして仕事を作っているだけなのは事実だね
VBAや最近だとRPAのような小手先の自動化ツールのは、本質的なプロセスの見直しに対するモチベーションを削いでいる面もある
0388デフォルトの名無しさん (ドコグロ MMb1-bAbS)
垢版 |
2019/02/21(木) 18:47:24.87ID:7HScUEGsM
>>387
同意するわ
明らかに知識の乏しい初心者が妙に具体的に手段を特定して助けを求めてきた場合、
「そんなことはどうでもいいから目的を教えろ」と対応するのが最も確実で効果的で手っ取り早い
0391デフォルトの名無しさん (ワッチョイ 6d1f-Ty0B)
垢版 |
2019/02/21(木) 19:18:39.73ID:AiPG59Hd0
プログラムって書き方って人それぞれ違うと思うけどみんな書き方どんな?

EXCELのセルデータをComboBoxに格納

メイン文

caii addcbo(FilePath,1,Me.cbo1)
caii addcbo(FilePath,5,Me.cbo2)
caii addcbo(FilePath,8,Me.cbo3)

Function addcbo(....)
※DAOでEXCEL開く
第2引数の列を下にループ
第3引数に空になるまで格納

End Function

てな感じのコードってどうなの?
俺は先に2次元配列でシート丸ごと持ってきてから入れてく感じにしたんだけど、ここにいる人達はどう書く?
0392デフォルトの名無しさん (ワッチョイ b501-eSdf)
垢版 |
2019/02/21(木) 19:30:43.16ID:UHF1Q6o+0
データ取得は別プロシージャにして配列につっこむ
0394デフォルトの名無しさん (ワッチョイ 89c5-T+SP)
垢版 |
2019/02/21(木) 19:53:49.02ID:dFUlMofS0
>>391
おまえプロさんか?
まだプロさん予備軍やったら気いつけや
そこからプロさんに堕ちるんはあっちゅう間やで
0395デフォルトの名無しさん (ワッチョイ c594-uPuZ)
垢版 |
2019/02/21(木) 19:57:47.93ID:EV12A9vO0
>>387
さすがプロ回答者の鏡
嫌なら別に回答者なんてやらなくてもいいんだよ?
質問者をひとくくりに見下すようなひねくれ者になってまでプロ回答者をやり続けてる目的ってなに?
こんなとこで他人を見下してなきゃ自尊心保てないとかそんな感じ?
0397デフォルトの名無しさん (ワッチョイ 6a2f-oRCO)
垢版 |
2019/02/21(木) 20:03:08.56ID:mRRRBv2X0
>>384
こうやって回答者をひとくくりで決めつけちゃうような視野が狭い人が一番の癌なんだよな


バカほどなんでも決めつけて単純化させようとする
勝手に単純化させた結論を赤の他人にいきなり押しつけるから当然理解されない
理解されないことを相手がバカだからと決めつけていきなり罵り出す
頭がおかしい人なのかな?と放置されると論破して黙らせたと思い込んで悦に浸り出す
0399デフォルトの名無しさん (ワッチョイ b501-eSdf)
垢版 |
2019/02/21(木) 20:14:11.51ID:UHF1Q6o+0
質問者は基本的に馬鹿
「インターネットは開くんですけどxxシステムが開きません」と言われてTraceやらブラウザ設定やらやった挙句、LANケーブルが挿さってないだけでインターネットはキャッシュでした、っていうようなオチが山ほどある
奴らの言葉を鵜呑みにしてはいけない
0402デフォルトの名無しさん (ワッチョイ 89c5-T+SP)
垢版 |
2019/02/21(木) 20:49:56.47ID:dFUlMofS0
>>399←こいつホンマもんのプロさんやんwww
Traceてwwwwwwww
0403デフォルトの名無しさん (ワッチョイ b501-eSdf)
垢版 |
2019/02/22(金) 00:25:53.24ID:9R98EKTp0
>>402
0404デフォルトの名無しさん (ワッチョイ 6a7c-RjxB)
垢版 |
2019/02/22(金) 00:44:27.12ID:EpE2F9dV0
混沌とした質問ではなくてある程度整形された質問ならお互いに健全かもしれないね。
「例えば質問のためのテンプレ埋めてもらう」とかだけでもやり取りの回数減るんじゃないかな。
テンプレの内容はよくわからないけど、例えば「配列が解るか、オブジェクトが解るか、APIが解るか」とか書いてもらえれば質問者のレベルか解りやすいから罵ることもないだろうし
全体の流れの一部として困ってるのか、単純に言語仕様で困ってるのかだけでも質問者に必要なのがコンサルなのか解答なのか切り分けしやすいと思う。
0405デフォルトの名無しさん (アウアウエー Sa52-bAbS)
垢版 |
2019/02/22(金) 00:57:28.09ID:nGlWTBX9a
【目的】
【何がわからないのか】
【どうなることを期待しているのか】
【何故それが必要だと考えたのか】
でいいよ
質問者のレベルなんてレスの内容見りゃわかるだろ
0406デフォルトの名無しさん (ワッチョイ 5e68-rusg)
垢版 |
2019/02/22(金) 01:31:51.52ID:1cZDvNG50
>>405
>【目的】
>【何故それが必要だと考えたのか】
これは無くてもいいかも
多分あんまり良い情報は返ってこない気がする

>【何がわからないのか】
これも無くて良いかもしれないけど、
まぁ一応質問スレなので

後は最初の状態が欲しい
初めと終わりがあれば何とでもなる
それと反復頻度。一回だけなら一回だけ用の雑コードで済ますし、毎日ならもうちょい丁寧に書く
ってわけで以下になっていると楽

【作業前の状態】
【終了時の状態】
【何がわからないのか】
【作業の頻度(一回だけ or 何度も)】
0408デフォルトの名無しさん (JP 0H2e-eSdf)
垢版 |
2019/02/22(金) 09:18:19.59ID:OJD9m6ZlH
あんまり敷居を高くすると質問者が減るよ
0410デフォルトの名無しさん (JP 0H2e-eSdf)
垢版 |
2019/02/22(金) 09:46:06.70ID:OJD9m6ZlH
>>409
そう考えてるのはお前だけだよ
0411デフォルトの名無しさん (ワッチョイ 6a90-rusg)
垢版 |
2019/02/22(金) 09:53:52.37ID:HFM6F1Kc0
まぁプロ回答者どもが罵り合いやってますが、質問者の方はそんなの気にせず
どんどん質問してくださいな w
0413デフォルトの名無しさん (ワッチョイ c594-uPuZ)
垢版 |
2019/02/22(金) 16:26:24.07ID:brEIpzdG0
このスレの本質はプロ回答者選手権だからな
プロ回答者の敵はプロ回答者
質問者など餌に過ぎない
その餌を誰が一番上から踏み潰すかを競い合う

ちなみにプロ回答者にもなると質問に答えたりしない
■ このスレッドは過去ログ倉庫に格納されています

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