!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
※前スレ
Excel VBA 質問スレ Part49©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498410914/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part50 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 7e6d-ffY6)
2017/08/27(日) 12:40:17.57ID:LjjEWylk035デフォルトの名無しさん (ワッチョイ 53db-6h2J)
2017/09/06(水) 01:23:13.87ID:QcvNAHMq0 ExcelではなくPowerPointのVBAになるのですが、該当するスレがないので質問させてください。
PowerPointのpptxにmsoEmbeddedOLEObjectの形で埋め込まれているエクセルファイル(xls,xlsx両方あり)を、
マクロを使って連続的に(複数埋められている)取り出し、別ファイルに保存したいと考えています。
(大本のファイルの破損のため、埋め込みファイルから復元する必要がある)
zipに拡張子変更して解凍、とすれば取れるのは知っているのですが、ファイル名の対応が取れなくなるため、
マクロ上で番号を付けて保存するのが目的です。
大まかにこのような形になるはず、と、抜き出し直前までの処理を作ったのですが、実際の保存処理について、
いろいろ試したのですがうまくいきませんでした。
PowerPoint上でのVBAマクロはニッチすぎてググっても情報に出くわさず、ましてやデータの抜き出しのような
ものはさらに見当たらない状態で、詰んでしまいました。
どのようにすれば保存できるか、ご教授願えますでしょうか?
For Each oSld In ActivePresentation.Slides
For Each oShp In oSld.Shapes
Select Case oShp.Type
Case msoEmbeddedOLEObject
If (Left(oShp.OLEFormat.ProgID, 5) = "Excel") Then
'ここに処理を入れるはず
End If
End Select
Next
Next
PowerPointのpptxにmsoEmbeddedOLEObjectの形で埋め込まれているエクセルファイル(xls,xlsx両方あり)を、
マクロを使って連続的に(複数埋められている)取り出し、別ファイルに保存したいと考えています。
(大本のファイルの破損のため、埋め込みファイルから復元する必要がある)
zipに拡張子変更して解凍、とすれば取れるのは知っているのですが、ファイル名の対応が取れなくなるため、
マクロ上で番号を付けて保存するのが目的です。
大まかにこのような形になるはず、と、抜き出し直前までの処理を作ったのですが、実際の保存処理について、
いろいろ試したのですがうまくいきませんでした。
PowerPoint上でのVBAマクロはニッチすぎてググっても情報に出くわさず、ましてやデータの抜き出しのような
ものはさらに見当たらない状態で、詰んでしまいました。
どのようにすれば保存できるか、ご教授願えますでしょうか?
For Each oSld In ActivePresentation.Slides
For Each oShp In oSld.Shapes
Select Case oShp.Type
Case msoEmbeddedOLEObject
If (Left(oShp.OLEFormat.ProgID, 5) = "Excel") Then
'ここに処理を入れるはず
End If
End Select
Next
Next
36デフォルトの名無しさん (ワッチョイ ff11-BPzU)
2017/09/06(水) 01:53:39.78ID:x6m+UIsj0 >>35
SaveAsやSaveCopyAsで動かないってことなのかな?
PowerPoint/Excelのバージョンやうまく行かなかった方法とエラー内容書かないとわからないね
正攻法でダメなら新しいExcelブックを作ってコンテンツコピーして保存するとか
SaveAsやSaveCopyAsで動かないってことなのかな?
PowerPoint/Excelのバージョンやうまく行かなかった方法とエラー内容書かないとわからないね
正攻法でダメなら新しいExcelブックを作ってコンテンツコピーして保存するとか
37デフォルトの名無しさん (ワッチョイ 43e3-3QX8)
2017/09/06(水) 11:39:49.13ID:12U08c7K0 エクセルVBAの課題ですがコードがわかりません。教えてください
下記がコードになります。
参考書の該当構文はInStrRev関数を使う事になるのですが半角スペースを指定する方法がわかりません
Dim temp As String
Dim pos As Long
Dim vName As String
Dim i As Long
For i = 2 To 6
temp = Cells(i, 2).Value
'半角スペースの位置をInStrRev関数を使用して取得し、変数posに代入する
'「氏名」から「名」のみを取得して変数vNameに代入する
Debug.Print vName
Next
考えたコードは下記でシングルクォテーションの間にスペースを入れればスペースを検索できるかと思ったのですが
エラーになりました。
pos = InStrReV(VPath," ")
ちなみに、B列に氏名、C列にフリガナが入力されています。
下記がコードになります。
参考書の該当構文はInStrRev関数を使う事になるのですが半角スペースを指定する方法がわかりません
Dim temp As String
Dim pos As Long
Dim vName As String
Dim i As Long
For i = 2 To 6
temp = Cells(i, 2).Value
'半角スペースの位置をInStrRev関数を使用して取得し、変数posに代入する
'「氏名」から「名」のみを取得して変数vNameに代入する
Debug.Print vName
Next
考えたコードは下記でシングルクォテーションの間にスペースを入れればスペースを検索できるかと思ったのですが
エラーになりました。
pos = InStrReV(VPath," ")
ちなみに、B列に氏名、C列にフリガナが入力されています。
3828 (アウアウカー Sa07-darD)
2017/09/06(水) 14:58:34.88ID:8y9+dC+fa39デフォルトの名無しさん (ワッチョイ 7373-sC3k)
2017/09/06(水) 15:14:58.67ID:oWb3celv0 ついでに言うと、そもそもvって何よw
stringなのに。
stringなのに。
4028 (アウアウカー Sa07-darD)
2017/09/06(水) 18:33:42.98ID:8y9+dC+fa >>35
PC開ける場所が無いから駅のホームで開けたったわ。
さて、PowerPointでやってみようとしたらマクロの記録って無いんだな。
どうせ、オブジェクトの埋め込みって他でも似たようなもんだろと思ってWordで埋め込みを記録してみた。
で、出来たコード見てPowerPointでも同じようにいけそうと見当を付けてからWord上で今度は埋め込まれたExcelオブジェクトを右クリックメニューから開くのを記録しようと思ったらメニュー表示されなくて記録出来なかった。
で、記録は出来なかったけどWordでも同じようにいけそうと分かったのでWordで埋め込みオブジェクトについてググったら下記が見つかった。
https://support.microsoft.com/ja-jp/help/408493
これを参考に下記の真ん中の文でいける思って実行してみたらブックは出来てたけど開くとシートが表示されない。
表示リボンの再表示ボタン押したら表示されたんで、保存前に表示しとけば良いのかと思って再表示処理のコードをPowerPointにあわせて修正したのが最初の文。
それからシートが表示されてないブックをVBEのプロジェクトエクスプローラで見ると他のブックも表示されてる。
PowerPointに張り付けたExcelオブジェクトは複数で、それらが開いたまま保存すると参照も保存されるようなので保存後に閉じる最後の文の処理を追加して他への影響を回避した。
(開いて保存を繰り返すと後の保存では前に開いて保存後に開いたままになってるのが影響する)
'hogeの後、連番のファイル名で保存
oShp.OLEFormat.Object.Windows(1).Visible = True
oShp.OLEFormat.Object.SaveAs "C:\Users\hoge\Desktop\hoge" & CStr(i) & ".xlsx"
oShp.OLEFormat.Object.Windows(1).Close
i = i + 1
PC開ける場所が無いから駅のホームで開けたったわ。
さて、PowerPointでやってみようとしたらマクロの記録って無いんだな。
どうせ、オブジェクトの埋め込みって他でも似たようなもんだろと思ってWordで埋め込みを記録してみた。
で、出来たコード見てPowerPointでも同じようにいけそうと見当を付けてからWord上で今度は埋め込まれたExcelオブジェクトを右クリックメニューから開くのを記録しようと思ったらメニュー表示されなくて記録出来なかった。
で、記録は出来なかったけどWordでも同じようにいけそうと分かったのでWordで埋め込みオブジェクトについてググったら下記が見つかった。
https://support.microsoft.com/ja-jp/help/408493
これを参考に下記の真ん中の文でいける思って実行してみたらブックは出来てたけど開くとシートが表示されない。
表示リボンの再表示ボタン押したら表示されたんで、保存前に表示しとけば良いのかと思って再表示処理のコードをPowerPointにあわせて修正したのが最初の文。
それからシートが表示されてないブックをVBEのプロジェクトエクスプローラで見ると他のブックも表示されてる。
PowerPointに張り付けたExcelオブジェクトは複数で、それらが開いたまま保存すると参照も保存されるようなので保存後に閉じる最後の文の処理を追加して他への影響を回避した。
(開いて保存を繰り返すと後の保存では前に開いて保存後に開いたままになってるのが影響する)
'hogeの後、連番のファイル名で保存
oShp.OLEFormat.Object.Windows(1).Visible = True
oShp.OLEFormat.Object.SaveAs "C:\Users\hoge\Desktop\hoge" & CStr(i) & ".xlsx"
oShp.OLEFormat.Object.Windows(1).Close
i = i + 1
4137 (ワッチョイ dbe3-otRg)
2017/09/07(木) 09:48:18.13ID:YyZpQ4AD0 38できました。ありがとうございます。
サンプルコードコピペで何となく打ってたので変数が違ってました。
それ以外の変数は課題の変数名なので、なぜといわれても。
VBAもなかなか難しい
サンプルコードコピペで何となく打ってたので変数が違ってました。
それ以外の変数は課題の変数名なので、なぜといわれても。
VBAもなかなか難しい
42デフォルトの名無しさん (ササクッテロラ Sp3b-r1nS)
2017/09/07(木) 16:44:12.32ID:wb4fzXuzp どなたかご存知でしたらご教示ください
ADODBのレコードセットから特定のフィールドを削除するにはどうしたら良いのでしょうか
Set rs = cn.Execute(select * from foo)
rs.Close
rs.Fields.Delete(n)
rs.Open
レコードセットが開いていると Delete メソッドがエラーになるので、いったん Close してから Delete するのですが、再度 Open したときに削除したはずのフィールドが復活してしまいます
ADODBのレコードセットから特定のフィールドを削除するにはどうしたら良いのでしょうか
Set rs = cn.Execute(select * from foo)
rs.Close
rs.Fields.Delete(n)
rs.Open
レコードセットが開いていると Delete メソッドがエラーになるので、いったん Close してから Delete するのですが、再度 Open したときに削除したはずのフィールドが復活してしまいます
43デフォルトの名無しさん (ササクッテロ Sp3b-xWDE)
2017/09/07(木) 20:34:42.24ID:ddaTRsKCp 起動済みのインターネットエクスプローラを操作する上手い方法ありますか?
44デフォルトの名無しさん (ワッチョイ b66d-AjbO)
2017/09/07(木) 20:45:36.76ID:m3E2HFS70 キーボードマクロ
45デフォルトの名無しさん (ワッチョイ f66f-xkdj)
2017/09/07(木) 21:03:02.57ID:tDqTIin20 そら、Recordset 消してるだけだしな 毎回Recordset 消してどうしたいねん っていう
Save せんでええのんか っていう
Save せんでええのんか っていう
46デフォルトの名無しさん (ワッチョイ 1a06-QyhX)
2017/09/07(木) 22:52:40.38ID:vmFU5V5h0 select * なんてせずに使いたい行だけselect するってのはダメなんかい
47デフォルトの名無しさん (ワッチョイ 1a06-QyhX)
2017/09/07(木) 22:53:51.32ID:vmFU5V5h0 あっ、行じゃなくフィールドね
48デフォルトの名無しさん (アークセー Sx3b-zX58)
2017/09/07(木) 22:58:55.63ID:D42mXrqtx >>42
選べよw
選べよw
49デフォルトの名無しさん (ササクッテロラ Sp3b-r1nS)
2017/09/07(木) 23:53:31.42ID:wb4fzXuzp50デフォルトの名無しさん (ドコグロ MM92-34gH)
2017/09/08(金) 08:13:46.68ID:lYRgyUUIM 削除クエリー走らせるとか
51デフォルトの名無しさん (ワッチョイ e36f-xkdj)
2017/09/08(金) 09:31:09.93ID:+Trj8D4m0 >>43
マウスを動かしてクリック
マウスを動かしてクリック
52デフォルトの名無しさん (ワッチョイ e36f-xkdj)
2017/09/08(金) 09:37:36.00ID:+Trj8D4m053デフォルトの名無しさん (ササクッテロレ Sp3b-r1nS)
2017/09/08(金) 11:23:59.37ID:E+LN5uAqp >>52
レコードセットから列を削除したいのです
やりたいことはこんな感じです
'1.クエリの実行
Set rs = cn.Execute("select A,B,C from foo")
'2.レコードセットから列Bを削除する
rs.Fields.Delete("B")
'3.残った列A,CをA1セル起点に貼り付ける
Range("A1").CopyFromRecordset rs
このとき、Fields.Delete メソッドはレコードセットが開いているとエラーになってしまいます
なので、>>42のように前後にClose、Openで挟んだのですが、Open実行時に削除したはずの列が復活してしまいます
レコードセットから列を削除したいのです
やりたいことはこんな感じです
'1.クエリの実行
Set rs = cn.Execute("select A,B,C from foo")
'2.レコードセットから列Bを削除する
rs.Fields.Delete("B")
'3.残った列A,CをA1セル起点に貼り付ける
Range("A1").CopyFromRecordset rs
このとき、Fields.Delete メソッドはレコードセットが開いているとエラーになってしまいます
なので、>>42のように前後にClose、Openで挟んだのですが、Open実行時に削除したはずの列が復活してしまいます
54デフォルトの名無しさん (ドコグロ MMcb-Qch9)
2017/09/08(金) 12:48:46.68ID:w53+SGPnM5528 (アウアウカー Sa43-G+Vk)
2017/09/08(金) 12:57:54.99ID:pmDC3Jkna56デフォルトの名無しさん (アークセー Sx3b-zX58)
2017/09/08(金) 15:26:46.89ID:ryF3+zd7x57デフォルトの名無しさん (ワッチョイ e36f-xkdj)
2017/09/08(金) 18:09:07.35ID:+Trj8D4m0 >>53
3貼り付けがAとCだけにすれば2は要らないのでは?
3貼り付けがAとCだけにすれば2は要らないのでは?
58デフォルトの名無しさん (ワッチョイ 17e4-60Gy)
2017/09/08(金) 18:32:11.80ID:iUs2XBft0 初めからBをselectしなければ良いだけだけど、それが無理なら
張りつけてからB列消せば良いんじゃね
張りつけてからB列消せば良いんじゃね
59デフォルトの名無しさん (ワッチョイ 9aaa-x/0H)
2017/09/08(金) 20:18:25.34ID:v/BetMU00 select A,C,B のほうがよさげ
60デフォルトの名無しさん (ワッチョイ b754-34gH)
2017/09/08(金) 21:03:05.17ID:ltI+C5Vk0 rsからrs2を作る
61デフォルトの名無しさん (ドコグロ MMba-Qch9)
2017/09/08(金) 21:20:35.90ID:hXO+Cn8GM6242 (ササクッテロレ Sp3b-r1nS)
2017/09/08(金) 23:59:54.71ID:E+LN5uAqp みなさんレスありがとうございます
>>55
やっぱりそうするしかないのでしょうかね
いったん配列に落とすとセルに貼り付けた時データ型やレコード数なども気にしなきゃならなくなるので、できればレコードセットのままなんとかしたいのですが…
>>57
そうなんだろうけど、CopyFromRecordsetだと全フィールド張り付いてしまいます
ループで1セルずつ貼り付けて行くと、>>55の言うような「泥臭い方法」と変わらなくなってしまいます
>>58
なるほど、レコードセットでどうにかできなければそれが一番いい方法かもしれません
>>60
それも考えましたが、rs2に複製の際にエラーが出てしまいました
今は手元に環境がないので、エラーの内容についてはまたの機会にします
>>61
SQLは select * になるかもしれないし、予想がつきません
>>55
やっぱりそうするしかないのでしょうかね
いったん配列に落とすとセルに貼り付けた時データ型やレコード数なども気にしなきゃならなくなるので、できればレコードセットのままなんとかしたいのですが…
>>57
そうなんだろうけど、CopyFromRecordsetだと全フィールド張り付いてしまいます
ループで1セルずつ貼り付けて行くと、>>55の言うような「泥臭い方法」と変わらなくなってしまいます
>>58
なるほど、レコードセットでどうにかできなければそれが一番いい方法かもしれません
>>60
それも考えましたが、rs2に複製の際にエラーが出てしまいました
今は手元に環境がないので、エラーの内容についてはまたの機会にします
>>61
SQLは select * になるかもしれないし、予想がつきません
63デフォルトの名無しさん (ワッチョイ 17e4-60Gy)
2017/09/09(土) 01:05:27.10ID:Nbl3ImVw0 どういうSQLが来るかも分からないのに特定の列を消す必要があるという事だけは分かるのか
64デフォルトの名無しさん (ワッチョイ b62a-nhGI)
2017/09/09(土) 01:14:41.31ID:F1q2327A065デフォルトの名無しさん (ワッチョイ 0b11-r1nS)
2017/09/09(土) 02:28:27.21ID:oVzpXcHU0 >>64
正規表現を使うといいかもです
スマホで手打ちしてるんで細かい部分で間違いがあるかもしれませんが、イメージはこんな感じです
(特にスラッシュのエスケープとか)
Dim strOrg as Sting
Dim strNew as Sting
strOrg = ※文章を代入
With CreateObject("VBScript.RegExp")
.Pattern = "http:////.*$"
.IgnoreCase = True
.Global = True
strNew = .Relpace(strOrg, "")
End With
正規表現を使うといいかもです
スマホで手打ちしてるんで細かい部分で間違いがあるかもしれませんが、イメージはこんな感じです
(特にスラッシュのエスケープとか)
Dim strOrg as Sting
Dim strNew as Sting
strOrg = ※文章を代入
With CreateObject("VBScript.RegExp")
.Pattern = "http:////.*$"
.IgnoreCase = True
.Global = True
strNew = .Relpace(strOrg, "")
End With
66デフォルトの名無しさん (ワッチョイ dbaa-nhGI)
2017/09/09(土) 09:08:52.36ID:ioyoiZXd0 コンパイルエラー:subまたはfunctionが定義されていませんと出ます。
Callされる関数の引数に問題があるのかと思うのですが、原因が分かりません。
Call ShowInIE(ie, "http://www.vba-ie.net/", , 0, 0, 700, 200)
で
Sub ShowInIE(ie As InternetExplorer,
url As String,
Optional viewFlg = True,
top As Integer,
left As Integer,
width As Integer,
height As Integer)
を設定して渡すで良いのでしょうか?
ttps://pastebin.com/aJLAUnfc
Callされる関数の引数に問題があるのかと思うのですが、原因が分かりません。
Call ShowInIE(ie, "http://www.vba-ie.net/", , 0, 0, 700, 200)
で
Sub ShowInIE(ie As InternetExplorer,
url As String,
Optional viewFlg = True,
top As Integer,
left As Integer,
width As Integer,
height As Integer)
を設定して渡すで良いのでしょうか?
ttps://pastebin.com/aJLAUnfc
67デフォルトの名無しさん (ワッチョイ 4eaa-b0o9)
2017/09/09(土) 09:16:22.62ID:gq9mYezw0 「vba subまたはfunctionが定義されていません」で検索!
68デフォルトの名無しさん (ワッチョイ b7e4-NEns)
2017/09/09(土) 10:42:29.03ID:0n3DLxd60 マクロにパスワードかけてたのだが、どうも破られてるらしき兆候があって
ぐぐった結果見つけたこのページの「マクロのパスワードを解除するマクロ」
を試したらほんまに解除できてびっくり
http://neos21.hatenablog.com/entry/2016/09/30/081709
これで破られない対策って誰かご存じないですかね?
自分で根ほり葉ほり動作調べてたら一日かかりそう
ぐぐった結果見つけたこのページの「マクロのパスワードを解除するマクロ」
を試したらほんまに解除できてびっくり
http://neos21.hatenablog.com/entry/2016/09/30/081709
これで破られない対策って誰かご存じないですかね?
自分で根ほり葉ほり動作調べてたら一日かかりそう
69デフォルトの名無しさん (ワッチョイ b7e4-NEns)
2017/09/09(土) 10:44:48.94ID:0n3DLxd60 てか破り方誰でもわかるセキュリティなんて何もしてねえのと同じだ
目からウ●コが落ちた
目からウ●コが落ちた
70デフォルトの名無しさん (ワッチョイ e36f-xkdj)
2017/09/09(土) 11:26:51.38ID:KlPTpWTP0 標準モジュール
71デフォルトの名無しさん (エーイモ SE5a-r+B6)
2017/09/09(土) 12:21:56.16ID:JuaBWqmdE72デフォルトの名無しさん (ワッチョイ dbaa-nhGI)
2017/09/09(土) 13:21:02.45ID:ioyoiZXd0 >>71
ありがとうございます。出来ました。
ありがとうございます。出来ました。
73デフォルトの名無しさん (ワッチョイ b66d-YFDC)
2017/09/09(土) 13:32:44.29ID:eNyHA1sg074デフォルトの名無しさん (ワッチョイ b7e4-NEns)
2017/09/09(土) 13:49:29.47ID:0n3DLxd60 「ない」ってあんたそんなズバリと(^ ^;
APIのエキスパートなら自分でどうとでもするだろうけど
人に聞いて知ってるような方法はないってことですね
しょーがないか
APIのエキスパートなら自分でどうとでもするだろうけど
人に聞いて知ってるような方法はないってことですね
しょーがないか
75デフォルトの名無しさん (ササクッテロル Sp3b-6vZA)
2017/09/09(土) 14:33:51.65ID:OsDiJ+6Ap76デフォルトの名無しさん (ワッチョイ b7e4-NEns)
2017/09/09(土) 14:42:58.59ID:0n3DLxd60 そういう問題じゃないんで・・
パスワードを解析するんじゃなく、記録してるとこからそれ自体引っ張り出して
解除させちゃうマクロらしいから、パスワードの複雑さ関係がないんで
パスワードを解析するんじゃなく、記録してるとこからそれ自体引っ張り出して
解除させちゃうマクロらしいから、パスワードの複雑さ関係がないんで
77デフォルトの名無しさん (ワッチョイ ff1e-uK4n)
2017/09/09(土) 15:11:07.11ID:5iFRXle+0 まず使い方が間違ってる
Excelのパスワードの目的は秘密を守るためじゃなくて、
素人がマクロやシートをうっかり改変して業務に支障を来すのを防ぐのが目的と言われてる
簡単に破れる方法であっても、意図的な操作がなければ破られることはないんで、目的は達成できている
Excelのパスワードの目的は秘密を守るためじゃなくて、
素人がマクロやシートをうっかり改変して業務に支障を来すのを防ぐのが目的と言われてる
簡単に破れる方法であっても、意図的な操作がなければ破られることはないんで、目的は達成できている
78デフォルトの名無しさん (ワッチョイ b62a-hnbz)
2017/09/09(土) 15:41:57.68ID:F1q2327A0 >>65
ありがとう。やってみる。
ありがとう。やってみる。
79デフォルトの名無しさん (ワッチョイ b7e4-NEns)
2017/09/09(土) 16:07:18.45ID:0n3DLxd60 まあパスワードかけるなら出来合いじゃなくて
プログラマのハシクレなら自分でそんくらい作れってことかね
他人をあてにするもんじゃないっすね
プログラマのハシクレなら自分でそんくらい作れってことかね
他人をあてにするもんじゃないっすね
80デフォルトの名無しさん (スプッッ Sd5a-HfVo)
2017/09/09(土) 16:17:06.10ID:OMWVHBMKd 一体どういう目的でパスワードかけるんだろう。実装をどうしても隠したいとかでなけりゃ破られても構わんだろ。
81デフォルトの名無しさん (アウアウカー Sa43-G+Vk)
2017/09/09(土) 17:24:58.63ID:ScenqhoIa 社内で使ってるけど皆が改変して収拾がつかなくなって管理出来なくなるのを防ぐとかだったな。
前に見たパスワード掛けてたとこは。
前に見たパスワード掛けてたとこは。
82デフォルトの名無しさん (ワッチョイ 173d-QyhX)
2017/09/09(土) 17:28:22.68ID:uXhmIN/20 MSの公式見解だとパスワードはワークグループを分けて誤操作を防ぐ為のものであって、セキュリティ性は無いとされているね。
一応、VBAはバイナリファイルを読み書き出来るから、自分で暗号化技術調べてAES的な暗号化ファイルとか生成出来るぞ。
でも苦労して実装しても運用する奴らが素人だと暗号化した意味が無くなるから作り損だぞ。
一応、VBAはバイナリファイルを読み書き出来るから、自分で暗号化技術調べてAES的な暗号化ファイルとか生成出来るぞ。
でも苦労して実装しても運用する奴らが素人だと暗号化した意味が無くなるから作り損だぞ。
83デフォルトの名無しさん (ブーイモ MMff-kzq+)
2017/09/10(日) 03:50:51.77ID:y0QNdkXRM ソフト名忘れたけどVectorにあるExcelアドインで>>68の手法が失敗するやつあったな
84デフォルトの名無しさん (ワッチョイ 5ab3-R8ON)
2017/09/10(日) 05:17:37.27ID:MQQa++S2085デフォルトの名無しさん (ワッチョイ e36f-xkdj)
2017/09/10(日) 06:19:08.10ID:8d86nTZB0 運用ルールで勝手にいじるなって言えばいいじゃん
87デフォルトの名無しさん (ワッチョイ ff1e-uK4n)
2017/09/10(日) 08:56:33.56ID:7PCuqjJO088デフォルトの名無しさん (ワッチョイ b66d-AjbO)
2017/09/10(日) 09:11:12.77ID:emM90UQN0 「何もやってないのに勝手におかしくなった」
これ一番イラッと来るよな
「パソコンが壊れたー(フリーズしてるだけ)」
とか。
これ一番イラッと来るよな
「パソコンが壊れたー(フリーズしてるだけ)」
とか。
89デフォルトの名無しさん (スプッッ Sd5a-HfVo)
2017/09/10(日) 09:12:05.85ID:ZhpxeaJkd 「改変したい点がある。自分でやるのでパスワードを教えてください。」と
直球で要望が来たらどうするの?
直球で要望が来たらどうするの?
90デフォルトの名無しさん (アウアウカー Sa43-8cOM)
2017/09/10(日) 09:17:02.60ID:WLChtAtMa >>89
修正履歴書いて残せばいい
修正履歴書いて残せばいい
91デフォルトの名無しさん (アウアウカー Sa43-8cOM)
2017/09/10(日) 09:21:21.87ID:WLChtAtMa チーム開発でも修正ルールがあるし
会社のシステムを書き換えるには上司の許可いるだろ
会社のシステムを書き換えるには上司の許可いるだろ
92デフォルトの名無しさん (ワッチョイ 9a11-Qch9)
2017/09/10(日) 09:25:28.85ID:Gppr5zJi093デフォルトの名無しさん (ワッチョイ ff1e-uK4n)
2017/09/10(日) 09:31:38.83ID:7PCuqjJO094デフォルトの名無しさん (ワッチョイ b66d-AjbO)
2017/09/10(日) 09:51:20.19ID:emM90UQN0 >>91
vbaには無い。
こういうのは一般事務の女の子向けに男がヘラヘラ書いたもの、ってかvbaが安易に書き換えられる仕様は常識
会社の基幹システムはもちろん無理だけどね
変更許可は絶対に降りない。然るべき手続きが必要
vbaには無い。
こういうのは一般事務の女の子向けに男がヘラヘラ書いたもの、ってかvbaが安易に書き換えられる仕様は常識
会社の基幹システムはもちろん無理だけどね
変更許可は絶対に降りない。然るべき手続きが必要
95デフォルトの名無しさん (ワッチョイ ff1e-uK4n)
2017/09/10(日) 10:26:56.59ID:7PCuqjJO0 >>94
基幹に近い所でVBAが動いてるうちの会社みたいなところもあるんやで
一部上場でテレビCMもガンガン流してて誰でも知ってる大企業
入力ミスをなくすためにワークシートにロックかけて入力から印刷までフォームなしのVBAで組んである
モッサリでめっちゃ使いにくいシステムで見積書とか作らされてる
下っ端の俺にはどうしようもない
基幹に近い所でVBAが動いてるうちの会社みたいなところもあるんやで
一部上場でテレビCMもガンガン流してて誰でも知ってる大企業
入力ミスをなくすためにワークシートにロックかけて入力から印刷までフォームなしのVBAで組んである
モッサリでめっちゃ使いにくいシステムで見積書とか作らされてる
下っ端の俺にはどうしようもない
96デフォルトの名無しさん (ワッチョイ b66d-VF3S)
2017/09/10(日) 10:31:20.17ID:emM90UQN097デフォルトの名無しさん (アウアウカー Sa43-8cOM)
2017/09/10(日) 11:32:55.83ID:fMXB0jq4a 売り上げ金額が合わなかったので勝手に書き換えておきましたとかやってんのか?
98デフォルトの名無しさん (アウアウカー Sa43-8cOM)
2017/09/10(日) 11:38:17.51ID:fMXB0jq4a 知らない人がいつの間にか勝手に書き換えてましたじゃ駄目だろ
99デフォルトの名無しさん (ワッチョイ 2b0f-5bTS)
2017/09/10(日) 11:39:01.10ID:FH1GYxFV0 >>96
アライさんおつw
アライさんおつw
100デフォルトの名無しさん (ワッチョイ b66d-wiQm)
2017/09/10(日) 11:49:00.36ID:emM90UQN0101デフォルトの名無しさん (アウアウカー Sa43-G+Vk)
2017/09/10(日) 12:47:48.18ID:4u5v5mfoa 後は、客はパスワード解除しないだろう、出来ないだろうという前提でパスワード掛けてたことも有ったな。
客の別の部署の奴がプログラムの仕組みが見れては困るという要望に対して。
そういう案件の場合はExcelでやらずにちゃんとシステム組むべきという俺の指摘は営業的事情により却下されたな。
客がそんなに金使いたく無いんだとよ。
客の別の部署の奴がプログラムの仕組みが見れては困るという要望に対して。
そういう案件の場合はExcelでやらずにちゃんとシステム組むべきという俺の指摘は営業的事情により却下されたな。
客がそんなに金使いたく無いんだとよ。
102デフォルトの名無しさん (アウアウカー Sa43-G+Vk)
2017/09/10(日) 12:54:29.64ID:4u5v5mfoa >>94
それやって収拾がつかなくなって、ちゃんと管理しましょうという話になってパスワード掛けることになる。
それやって収拾がつかなくなって、ちゃんと管理しましょうという話になってパスワード掛けることになる。
103デフォルトの名無しさん (ワッチョイ 0b11-p4X9)
2017/09/10(日) 13:27:08.19ID:y19mgzO60 Range("J5:J12").Value = "AVERAGE (RC[-7]:RC[-2])"
これどういう意味ですか?
これどういう意味ですか?
104デフォルトの名無しさん (ワッチョイ 0b11-p4X9)
2017/09/10(日) 13:28:56.73ID:y19mgzO60 >>103
これの右辺が分からないです
これの右辺が分からないです
105デフォルトの名無しさん (ワッチョイ dbe3-otRg)
2017/09/10(日) 14:00:23.18ID:co+DcanR0 エクセルVBAの課題ですが分かりません。
Dim Target As Range
Dim temp As String
For Each Target In Range("C2:C6")
'セルの値をすべて全角に置換して変数tempに代入する。変換する文字列は、Valueプロパティを使って取得する
temp = StrConv(Target.Value, vbUpperCase) ←
'置換後の値の全角スペースを半角スペースに変換し、元のセルに入力する
Range("C2:C6") = temp ←
Next
End Sub
元の値は半角カタカナで別の名前が各セルの記入されています。
矢印の個所が参考書を元に記述しました。
Dim Target As Range
Dim temp As String
For Each Target In Range("C2:C6")
'セルの値をすべて全角に置換して変数tempに代入する。変換する文字列は、Valueプロパティを使って取得する
temp = StrConv(Target.Value, vbUpperCase) ←
'置換後の値の全角スペースを半角スペースに変換し、元のセルに入力する
Range("C2:C6") = temp ←
Next
End Sub
元の値は半角カタカナで別の名前が各セルの記入されています。
矢印の個所が参考書を元に記述しました。
106デフォルトの名無しさん (アークセー Sx3b-zX58)
2017/09/10(日) 14:06:44.63ID:iMMEfei9x >>105
の文章がワカランカ
の文章がワカランカ
10768 (ワッチョイ b7e4-NEns)
2017/09/10(日) 14:26:35.95ID:BQ8Qv0VP0 >>83
ツールあったから結局買いました
情報ありがとう
http://conex-office-password.com/shopdetail/001000000001/
もし駄目でもどうせ1000円だからな
ツールあったから結局買いました
情報ありがとう
http://conex-office-password.com/shopdetail/001000000001/
もし駄目でもどうせ1000円だからな
108デフォルトの名無しさん (アウアウカー Sa43-G+Vk)
2017/09/10(日) 14:49:33.57ID:ECkhuLxaa109デフォルトの名無しさん (ワッチョイ b66d-Jt/Q)
2017/09/10(日) 15:03:50.97ID:emM90UQN0110デフォルトの名無しさん (ワッチョイ b66d-Jt/Q)
2017/09/10(日) 15:06:41.55ID:emM90UQN0 >>105
何が分からんのか具体的に
後多分コードが間違っている
Sub a()
For Each target In Range("C2:C6")
'セルの値をすべて全角に置換して変数tempに代入する。変換する文字列は、Valueプロパティを使って取得する
temp = StrConv(target.Value, vbUpperCase)
'置換後の値の全角スペースを半角スペースに変換し、元のセルに入力する
target.Value = temp
Next
End Sub
何が分からんのか具体的に
後多分コードが間違っている
Sub a()
For Each target In Range("C2:C6")
'セルの値をすべて全角に置換して変数tempに代入する。変換する文字列は、Valueプロパティを使って取得する
temp = StrConv(target.Value, vbUpperCase)
'置換後の値の全角スペースを半角スペースに変換し、元のセルに入力する
target.Value = temp
Next
End Sub
111デフォルトの名無しさん (ワッチョイ ff1e-uK4n)
2017/09/10(日) 15:15:05.13ID:7PCuqjJO0112デフォルトの名無しさん (アウアウカー Sa43-G+Vk)
2017/09/10(日) 15:15:26.00ID:lVUuTaKfa というか、どうしても解除されたくなかったらxllアドインとかにすべきでしょ。
113デフォルトの名無しさん (ワッチョイ ff86-8cOM)
2017/09/10(日) 16:45:46.81ID:ciO3Bw990 >>100
それ持ち逃げしてもばれないよね
それ持ち逃げしてもばれないよね
114デフォルトの名無しさん (ワッチョイ 5ab3-R8ON)
2017/09/10(日) 17:52:32.57ID:MQQa++S20115デフォルトの名無しさん (ワッチョイ 0b11-r1nS)
2017/09/10(日) 22:09:00.85ID:R8jGf7t60 >>105
何がわからないのか全然わからない
そのソースコードを実行するとどうなるのか、期待値は何なのか書かないと
まあ、ひとまず temp を配列にしないとダメじゃない?
Dim temp() As String
Dim i As Integer
Redim temp(Range("C2:C6").Rows.Count)
i=0
For Each Target In Range("C2:C6")
temp(i) = StrConv(Target.Value, vbUpperCase)
i = i + 1
Next
Range("C2:C6") = temp
何がわからないのか全然わからない
そのソースコードを実行するとどうなるのか、期待値は何なのか書かないと
まあ、ひとまず temp を配列にしないとダメじゃない?
Dim temp() As String
Dim i As Integer
Redim temp(Range("C2:C6").Rows.Count)
i=0
For Each Target In Range("C2:C6")
temp(i) = StrConv(Target.Value, vbUpperCase)
i = i + 1
Next
Range("C2:C6") = temp
116デフォルトの名無しさん (ワッチョイ 17e4-60Gy)
2017/09/11(月) 01:14:13.54ID:cJ5w3XMz0 >>115
1セルずつループして処理すればtempを配列にする必要なんてない
どうでもいいけど、全角はvbWideじゃないのかね
全角スペースを半角にするのはReplaceあたり使えば良いんじゃね
課題ならその課題出した奴に聞けよと思うが
1セルずつループして処理すればtempを配列にする必要なんてない
どうでもいいけど、全角はvbWideじゃないのかね
全角スペースを半角にするのはReplaceあたり使えば良いんじゃね
課題ならその課題出した奴に聞けよと思うが
117デフォルトの名無しさん (ドコグロ MM92-Qch9)
2017/09/11(月) 07:33:49.76ID:/uQ7pno7M >>115
速度稼ぐために配列にしてるなら読み出し側もやるべき
速度稼ぐために配列にしてるなら読み出し側もやるべき
118デフォルトの名無しさん (ササクッテロレ Sp3b-kWVg)
2017/09/11(月) 07:48:20.80ID:y+HHQfcAp119デフォルトの名無しさん (スププ Sdba-m+++)
2017/09/11(月) 08:13:17.53ID:ngQru/Z5d >>105
矢印の業務が空行の状態が問題文、矢印の行は君が書いた、と解釈した。
矢印1行目は、vbuppercaseじゃなくて、vbwide。uppercaseは大文字だ。
2行目は、target=temp
そういう問題じゃないようだが、高速化するなら、
Rangeを配列に代入
配列内で計算
配列をrangeに書き戻し
する。
矢印の業務が空行の状態が問題文、矢印の行は君が書いた、と解釈した。
矢印1行目は、vbuppercaseじゃなくて、vbwide。uppercaseは大文字だ。
2行目は、target=temp
そういう問題じゃないようだが、高速化するなら、
Rangeを配列に代入
配列内で計算
配列をrangeに書き戻し
する。
120デフォルトの名無しさん (スププ Sdba-m+++)
2017/09/11(月) 08:14:49.10ID:ngQru/Z5d121デフォルトの名無しさん (ワッチョイ 17e4-60Gy)
2017/09/11(月) 15:42:49.07ID:cJ5w3XMz0 なんで君らは
>置換後の値の全角スペースを半角スペースに変換し
は放置なの?
>置換後の値の全角スペースを半角スペースに変換し
は放置なの?
122デフォルトの名無しさん (スププ Sdba-m+++)
2017/09/11(月) 20:27:23.15ID:X8qu52Lad123デフォルトの名無しさん (ワッチョイ e36f-xkdj)
2017/09/12(火) 02:00:32.49ID:qJTGUifI0 target=replace(temp, "全角スペースと読んでくれ", " ")
124デフォルトの名無しさん (ワッチョイ 23ea-hBAF)
2017/09/12(火) 23:06:27.96ID:cxYAECV80 3万行前後ある列のデータの隣セルに、別シート5000行前後の列から、if条件に該当したものをループで貼り付ける処理をしているけど処理が遅い
3万行の列が外側ループi、5000行の列が内側ループjで回してる
処理時間短縮の為に、最初にiとjのデータを配列で取得して比較を行い
該当するものをセルに出力するように変更した結果、配列使用前より処理時間が短くなった
もっと処理時間を早くするにはどうすればいいかお知恵をください
3万行の列が外側ループi、5000行の列が内側ループjで回してる
処理時間短縮の為に、最初にiとjのデータを配列で取得して比較を行い
該当するものをセルに出力するように変更した結果、配列使用前より処理時間が短くなった
もっと処理時間を早くするにはどうすればいいかお知恵をください
125デフォルトの名無しさん (アークセー Sx3b-zX58)
2017/09/12(火) 23:14:30.57ID:e4D1CdNrx126デフォルトの名無しさん (ワッチョイ db8f-m+++)
2017/09/12(火) 23:23:18.75ID:hrwgqvSF0 >>124
別シート5000をディクショナリーに放り込んで、引いてくれば良いんでない?その手の話で高速化したいなら二重ループはナンセンス。
別シート5000をディクショナリーに放り込んで、引いてくれば良いんでない?その手の話で高速化したいなら二重ループはナンセンス。
127デフォルトの名無しさん (ワッチョイ 173d-QyhX)
2017/09/12(火) 23:27:05.41ID:aYCmToqI0128デフォルトの名無しさん (ワッチョイ 5a11-oWo5)
2017/09/13(水) 00:11:27.19ID:n1InxPaY0 >>124
ここに載ってるDOUBLE TRUE VLOOKUPを試してみてよ
lookupの時間だけ比較してもDictionaryより速いらしいんだが
http://analystcave.com/excel-vlookup-vs-index-match-vs-sql-performance/
アルゴリズムだけ考えたらバイナリサーチより
ハッシュテーブルのほうが速そうなもんだけどな
ここに載ってるDOUBLE TRUE VLOOKUPを試してみてよ
lookupの時間だけ比較してもDictionaryより速いらしいんだが
http://analystcave.com/excel-vlookup-vs-index-match-vs-sql-performance/
アルゴリズムだけ考えたらバイナリサーチより
ハッシュテーブルのほうが速そうなもんだけどな
129デフォルトの名無しさん (ワッチョイ 23ea-xkdj)
2017/09/13(水) 00:31:34.36ID:TkE7wJHp0 >>125-126
ありがとうございます!
なるほど、コレクションかディクショナリーで連想配列を使用すれば早いってことか
イマイチ使い方が分からず使用していなかった
大量にデータを処理する場合は活用すれば、処理が早くなる可能性があるって事なんですね
今後は意識して使わせていただきます
>>127
ありがとうございます!
今のコードは ifがTrue時にその都度セルに出力するコードです。
if 配列A(i)=配列B(j) then
worksheets(出力先シート)cells(i,出力先列)=配列B(j)
end if
結果自体を配列にするというのこういう処理でいいでしょうか?
結果を取得する配列Cを宣言
if 配列A(i)=配列B(j) then
配列C(i)=配列B(j)
end if
この後の処理は、配列C(i)の値をループでシートに出力する以下の処理でしょうか?
worksheets(出力先シート)cells(i,出力先列)=配列C(i)
>>128
ありがとうございます!
これは普通のキーワードでネットで調べてもヒットした記憶がないワードです
今後に活用させていただきます
ありがとうございます!
なるほど、コレクションかディクショナリーで連想配列を使用すれば早いってことか
イマイチ使い方が分からず使用していなかった
大量にデータを処理する場合は活用すれば、処理が早くなる可能性があるって事なんですね
今後は意識して使わせていただきます
>>127
ありがとうございます!
今のコードは ifがTrue時にその都度セルに出力するコードです。
if 配列A(i)=配列B(j) then
worksheets(出力先シート)cells(i,出力先列)=配列B(j)
end if
結果自体を配列にするというのこういう処理でいいでしょうか?
結果を取得する配列Cを宣言
if 配列A(i)=配列B(j) then
配列C(i)=配列B(j)
end if
この後の処理は、配列C(i)の値をループでシートに出力する以下の処理でしょうか?
worksheets(出力先シート)cells(i,出力先列)=配列C(i)
>>128
ありがとうございます!
これは普通のキーワードでネットで調べてもヒットした記憶がないワードです
今後に活用させていただきます
130デフォルトの名無しさん (ワッチョイ 17e4-60Gy)
2017/09/13(水) 00:32:10.56ID:/gH6Ji+W0 ハッシュテーブルはハッシュの算出方法で変わるからな
対象データに対して衝突が少なくて計算の軽いハッシュ関数じゃないと
対象データに対して衝突が少なくて計算の軽いハッシュ関数じゃないと
131デフォルトの名無しさん (ワッチョイ 173d-QyhX)
2017/09/13(水) 00:58:34.20ID:SpyxPvDF0 >>129
配列とセルは相互に直接的なやりとりが出来るんで調べてみて。
いちいちループ回さなくていいから。
簡単に言えば
Dim A As Variant
A = Range(範囲).Cells
とすれば配列Aに範囲の中身が入り、
Range(範囲) = A
とすれば配列Aの中身が範囲に入る。
配列とセルは相互に直接的なやりとりが出来るんで調べてみて。
いちいちループ回さなくていいから。
簡単に言えば
Dim A As Variant
A = Range(範囲).Cells
とすれば配列Aに範囲の中身が入り、
Range(範囲) = A
とすれば配列Aの中身が範囲に入る。
132デフォルトの名無しさん (スプッッ Sd5a-cc0f)
2017/09/13(水) 07:30:42.98ID:F7IQARkod ネットでエクセルVBAを勉強中なんですがオススメ参考本とかないでか?
特にユーザーフォームを使って作業が多いです。
特にユーザーフォームを使って作業が多いです。
133デフォルトの名無しさん (ササクッテロレ Sp3b-kWVg)
2017/09/13(水) 07:35:00.26ID:W36Ef0cBp >>124
条件の内容にもよるけど、ワークシート関数のvlookupは使えないの?
条件の内容にもよるけど、ワークシート関数のvlookupは使えないの?
134デフォルトの名無しさん (スププ Sdba-m+++)
2017/09/13(水) 08:14:57.58ID:6syv7XXEd■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- お前らは“スカイマイルタワー”建設計画を知っているか?
- 万引きJC「すいません許してください!何でもしますから!」←どうする?
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 「黙らせてやろうと思った」自宅マンション10階から高校テニスコート内の女子生徒目掛けて貯金箱を投擲した女の子、殺人未遂で逮捕 [399583221]
- 5時だから窓から5回ちんこ出した
