X



Excel VBA 質問スレ Part63

■ このスレッドは過去ログ倉庫に格納されています
0589デフォルトの名無しさん (ワッチョイ 6f5f-ANgw)
垢版 |
2019/11/05(火) 21:16:39.16ID:rpaa5EWu0
フォルス?フォールスだろ?
英語知らんのかな
0591デフォルトの名無しさん (ワッチョイ 6f5f-ANgw)
垢版 |
2019/11/05(火) 21:32:19.18ID:rpaa5EWu0
いや単にバカなだけだろw
0601デフォルトの名無しさん (オッペケ Sr0f-I9Tk)
垢版 |
2019/11/07(木) 00:18:34.56ID:Vgod5FHRr
すみません。
最新のWindows10でVBAを実行したところ、VBScript.RegExpのCreateObjectに失敗しました。
IEのVBS機能が無効化された影響によるものでしょうか?
回避策等ありますでしょうか?
0602デフォルトの名無しさん (アークセー Sx0f-Arvb)
垢版 |
2019/11/07(木) 03:57:12.24ID:sFRacxbxx
>>601
試してないけどJScriptを使ったらどうかな
32bit環境ならScriptControl オブジェクトをCreateObjectで生成してJScriptの正規表現を使う
62bit環境ならMSHTMLオブジェクトでIEのエンジンのJScript実行環境を生成して、そこからJScriptの正規表現を使う
0603デフォルトの名無しさん (ワッチョイ 0fcc-OQ0I)
垢版 |
2019/11/07(木) 19:03:46.63ID:JqbJgiKT0
同じフォルダ内の他のファイルを削除しようとすると
ファイルは削除されますが、
「実行時エラー'70': 書き込みできません。」
がでて処理が止まります。
Dim aa As String
aa = ThisWorkbook.Path & "\"
Kill aa & "*.*"

どうすれば止まらずに処理できますか
0604デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)
垢版 |
2019/11/07(木) 19:14:00.49ID:JuEkRQF70
>>603
自分の手で自分の頸を吊ってみればわかるぞ
0611デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)
垢版 |
2019/11/07(木) 20:19:39.30ID:JuEkRQF70
>>610
馬鹿は死ねよ
0618デフォルトの名無しさん (アークセー Sx0f-Arvb)
垢版 |
2019/11/09(土) 08:05:58.77ID:FLPipJw+x
>>603
Dim fso As Object
Dim fr As Object
Dim fl As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set fr = fso.GetFolder(ThisWorkbook.Path)

On Error Resume Next

For Each fl In fr.Files
If fl.Name <> ThisWorkbook.Name Then
fl.Delete
If Err.Number <> 0 Then
Debug.Print "Err.Number:" & Err.Number &" FileName:" & fl.Name
Err.Clear
End If
End If
Next fl
0621デフォルトの名無しさん (アークセー Sx0f-Arvb)
垢版 |
2019/11/09(土) 10:39:45.65ID:YT93jrBPx
>>620
そのやり方だとNASとかにある共有ファイルを他人が開いてる場合には判定不可能

>>619
対象のファイルをエクセルファイルとして開かずにVB6のOpen ステートメントの追記モードで開くのがオーソドックスなやり方
他のユーザーエンティティが編集権をロックした状態だとファイルが開けずエラーが発生することを利用する
エラーコードを調べて0より大きい場合はファイルが開かれている、そうでなければファイルが開かれていないと判断する
ただし負荷対策が最適化されていないネットワーク環境でサーバーの応答が遅くなっている場合、数分前に誰かが閉じたファイルを開いていると判定してしまうので要注意

'サンプルコード
Sub Sample()
If IsFileOpened("任意のブックのフルパス") Then
MsgBox "開かれています"
Else
MsgBox "開かれていません"
End If
End Sub

Function IsFileOpened(fliepath as String) As Boolean
On Error Resume Next
Open filepath For Append As #1
Close #1
If Err.Number > 0 Then
IsFileOpened = True
Err.Clear
Else
IsFileOpened = False
End If
End Function
0622デフォルトの名無しさん (オッペケ Sr0f-I9Tk)
垢版 |
2019/11/10(日) 03:17:05.03ID:7c8MD0U8r
>>621
ブックを開いているときは~$ファイル名の隠しファイルが作られるからそれを見たら
0623デフォルトの名無しさん (スププ Sdbf-38dS)
垢版 |
2019/11/10(日) 16:07:54.61ID:mlZHtGvXd
行番号が1-9まで1ずつ加算されてる中で3ごとにブロックとして処理の始点を1,4,7行にしたいんだけど行番号から式で求められないかな?
for i=1to9
if i<4 and i>0 then 処理1
elseif i<7 and i>3then 処理2
else 処理3
next i
これを分岐なしでスマートに書きたい
123456789→111444777って変換式が欲しい
0624デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)
垢版 |
2019/11/10(日) 16:20:12.48ID:ISabdlL+0
>>623
馬鹿は小学生からやり直せ
0626デフォルトの名無しさん (スップ Sdbf-IAD9)
垢版 |
2019/11/10(日) 16:54:56.61ID:CxUi7EKzd
VBAの時点でスマートじゃないから
0629デフォルトの名無しさん (ワッチョイ dbce-DaD1)
垢版 |
2019/11/10(日) 17:46:44.80ID:f9aUABsd0
>>623
変換するだけなら
i - (i - 1) Mod 3
で111444777になる
3つの処理に分けたいなら
Select Case i
  Case 1, 2, 3
    処理1
  Case 4, 5, 6
    処理2
  Case Else
    処理3
End Select
0631デフォルトの名無しさん (アークセー Sx0f-Arvb)
垢版 |
2019/11/10(日) 17:55:48.55ID:CHmVk7q0x
>>623
111777999を割り出す変換式を使うのではなく、行番号を3で割った商が1の場合だけ処理を行うようにするのは駄目なの?
例えばこんな感じ

For i = 1 To 9
If i Mod 3 = 1 Then
'処理
End If
Next
0641デフォルトの名無しさん (ワッチョイ 4bc4-PySg)
垢版 |
2019/11/11(月) 21:20:23.51ID:ar1IlrsX0
ブックAのUserFormのボタンから1つ下のフォルダに入っているブックBのUserFormを起動させたいのだけど、
ネットで探した「Application.run Thisworkbook.path & "\〜\ブックB!subプロシージャ名"」というのを記載して実行させたけど、
エラーになってしまいましたが、これはどこが悪いのでしょう…
0653デフォルトの名無しさん (ベーイモ MM7f-tVd4)
垢版 |
2019/11/12(火) 10:11:19.95ID:n8VUgOjjM
スレチですまん。
俺はVBAをやってるが上司から言われました。(うちの部署、10名のうち、VBAを作れる人は二人だけ、、、)

AIが集計をしてくれるからEXCELは必要ない時代が来るねと言ってた。

反論出来る?
0655デフォルトの名無しさん (アウアウクー MM0f-n17R)
垢版 |
2019/11/12(火) 10:28:50.68ID:l0mUz5CNM
まぁAIが台頭してくる頃にはその上司は居ないだろうからスルーでいいんじゃない?

それかそのAIの設定?は誰がやるんだよっ!
そんな事も分からん様なヤツの方が必要なくない?ってw
0658デフォルトの名無しさん (ドコグロ MM8f-keNo)
垢版 |
2019/11/12(火) 13:51:05.18ID:kiUdBOPaM
○データフロー中に存在する、辻褄合わせのためのデータ加工
→業務フローの見直し、システムの改善、ETLツールの導入等により脱VBA
○ルールベースで実施可能な、機械的な意思決定のためのレポート作成
→完全な自動化により脱VBA
○ルールベースでは困難な、人間的判断を必要とする意思決定のためのレポート作成
→BIツール等に置き換えて脱VBA
AIを使うとしたらこの3番目だけど、そこまでいく前にやるべきことはいくらでもある
それをやり尽くしてAIの導入を検討する頃にはVBAなんかとっくに無くなってるはずだから、VBAとAIが直接競合することなんて無いよ
0659デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)
垢版 |
2019/11/12(火) 14:15:36.08ID:fOVSc9po0
現在のAIが何をやってるか知らない馬鹿ども
0662デフォルトの名無しさん (ササクッテロレ Sp0f-9pxj)
垢版 |
2019/11/12(火) 23:57:00.45ID:NVQBnRcZp
構文ミスって無限ループが発生した時にエクセルが固まるやつはなんか対策ないんか?
0667デフォルトの名無しさん (ワッチョイ fb7c-t5zK)
垢版 |
2019/11/13(水) 11:30:26.61ID:0dM9Rqjm0
いつかはExcelもPCも必要なくなる時代は来るだろうけど今は必要だからな。データ管理する以上はExcel、Accessは最後まで残りそうだけどな。
将来的に事務職がなくなれば、事務管理してる上司もいらないから、新しい仕事探したほうがいいね
Pythonだけ出来ても仕事ないよ
0672デフォルトの名無しさん (ドコグロ MM3f-keNo)
垢版 |
2019/11/13(水) 15:26:24.21ID:zYuYteZMM
その時点で世の中の自称VBAプロの半数以上よりは上だと思う
世の中のVBA使いのレベルは想像を絶するほど低いから、
少しでも何が役に立つもの作れるようになったら「VBAを使いこなせます」と言っちゃっていいよ
0674デフォルトの名無しさん (ワッチョイ 9fda-AXNO)
垢版 |
2019/11/13(水) 19:26:09.82ID:YFdnwmN50
VBAエキスパートなんかあるのか・・。
VBエキスパートではなく。

トランスフォーマー検定じゃなくて、
トランスフォーマーガム検定みたいな感じか?
違うか。
0676デフォルトの名無しさん (ワッチョイ 2be5-NsPY)
垢版 |
2019/11/13(水) 19:58:58.25ID:YIACCBmB0
A列で適当な色でフィルターをかけて、B列の可視セルをC列の値✕D列の値にする場合はどうすれば良いでしょうか。
for each in specialcells(xlCellTypeVisible)
b.value=c.value*d.value
next
にしていますが、データ2000くらいあるとと遅いです。
b.specialcells(xlCellTypeVisible).value=を用いれば早くなりそうですが、よく分かりません。
分かる方いましたら教えて下さい。
0681デフォルトの名無しさん (ササクッテロ Sp0f-jIeE)
垢版 |
2019/11/13(水) 21:12:54.98ID:xS2J4sOcp
質問失礼します。
vbaからc++のdllへ引数を渡してc++で処理し、配列をvba側に返したいです。
引数で渡すものは、配列ではありません。

文字列や数値をvbaで受け取ることは出来るのですが、配列はどのようにc++から受け取れば良いのでしょうか?

お願いします。
0682デフォルトの名無しさん (ワッチョイ 2be5-NsPY)
垢版 |
2019/11/13(水) 21:45:08.38ID:YIACCBmB0
>>679
>>680
ボタンを押した時だけ変更するようにしたいので、式を入れるのは難しいかと思います。
またまた後だしになるんですが、他にも色々ボタンを配置して、このボタンを押すとB=Cとしたり、こっちのボタンを押すとB=1.1*Dという感じにしています。
0685デフォルトの名無しさん (ワッチョイ 02da-6HYk)
垢版 |
2019/11/14(木) 20:59:40.88ID:17R2nmHB0
>>682
色以外にフィルタをかけられる要素は無いの?
あるなら、一旦解除して配列に入れて、該当行だけ計算して、またセルに戻して再度フィルタ。

>>681
普通に受け取れると思うけど。
ByRef的に受け取るの?
■ このスレッドは過去ログ倉庫に格納されています

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