TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
D言語 Part34
2進数や16進数を覚える意味がわからない
【SICP】計算機プログラムの構造と解釈 Part3
Xamarin Part6
【初心者歓迎】最新COBOLについての質問スレ
TypeScript(MS) VS Swift(Apple)
関数型言語一般
Excel VBA 質問スレ Part55
スレ立てるまでもない質問はここで 149匹目
【Electron】ハイブリッドアプリ開発総合【Cordova】

Excel VBA 質問スレ Part63


1 :2019/09/16 〜 最終レス :2019/10/31
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part62
https://mevius.2ch.sc/test/read.cgi/tech/1561303297/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

2 :
ぽこちん

3 :
Rこ

4 :
おつちん

5 :
糞レスで埋めるなら前スレのCSVファイルをQueryTablesで読むサンプル残しとく超参考になった
967 デフォルトの名無しさん (ワッチョイ 1fce-Nl8y) sage ▼ New! 2019/09/13(金) 00:48:49.27 ID:VS8vqVEc0 [1回目]
文字列として読み込めば0は消えない
あとLineInputよりクエリのがずっと速い

サンプル

Sub CSVread()
  With Worksheets("Sheet1") '読み込むシート
  With .QueryTables.Add(Connection:="TEXT;C:\tmp\test.csv", Destination:=.Range("A1")) 'ファイル名とセル位置
    .TextFilePlatform = 932 '文字コード指定
    .TextFileCommaDelimiter = True 'カンマ区切り指定
    .RefreshStyle = xlOverwriteCells 'セルに上書き
    .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat) '各列を文字列に指定
    .Refresh 'シートに読み込んで表示
    .Delete 'クエリを切断
  End With
  End With
End Sub

6 :
ぽこちん

7 :
全部丸投げの教えてクレクレはR

8 :
LongLong型に定数値として4,294,967,296を与えておきたいのですがLongの範囲を超えているせいか、必ず後ろに#が付いてしまいます
用途としては強引にunsigned Long的に使う為のオフセットなのですが#を付けない方法はありますか?

9 :
Verylong型

10 :
Rこ

11 :
>>8
式は書けないんだったっけ…

12 :
LongPtr

13 :
前スレの最後でセルに色をつけるコードを作って頂いた者です。職場で試してみましたが思い描いた通りに動いてくれました!これを機に自分で作れるように勉強したいと思います。作って下さった方、本当にありがとうございました…!

14 :
ぽこちん

15 :
スレチなのは分かってるけど詳しい人がここにしかいなさそうだから、もし知っていたら教えてほしい

ブックに保存されたクエリをOLAP等で使い回すためにODCファイルとしてエクスポートしたいんだが、「既存の接続」コマンドからクエリのプロパティを開いても「接続のエクスポート」のボタンが無効になっていてうまくエクスポート出来ない
どうしたらうまくエクスポートできるのか知りたい

16 :
珍ぽこりん

17 :
すみません。
エラーが分からず・・・教えてください。

下記コードで、”型が一致しません”というエラーが出ています。

Dim Ringi1 As Worksheet
ThisWorkbook.Activate
Set Ringi1 = Workbooks(Range("B6")).Worksheet("Sheet1")  ←エラー

ThisworkbookのB6には”テストファイル.xlsx”が入っています。

よろしくお願いします。

18 :
>>17
Worksheet(Range("B6"))じゃなくてWorksheets(Range("B6").Value)でしょう

あとRange("B6")はどのシートのB6セルなのかな?
この書き方だとThisWorkbookがActivateされたときにアクティブになってるシートのB6セルが参照されてしまうので、ちゃんとシートを指定して書いたらどうかな
例えばThisWorkbookの一番目のシートのB6セルにファイル名が書かれている前提ならこうなる

Dim Ringi1 As Worksheet
ThisWorkbook.Activate
Set Ringi1 = Application.Workbooks(ThisWorkbook.Worksheets(1).Range("B6").Value).Worksheets("Sheet1")

19 :
ポコポコてぃんてぃむ

20 :
>>8
つけないのは無理だったと思う
今スマホだから試せないけど # が嫌というだけなら ^ ではどうかな?
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/longlong-data-type

21 :
てぃむてぃむ

22 :
ブックAのシート1〜iまでのA1セルの数字を合計した数字をブックBのA1セルに転記したいのですが、どう書けばいいでしょうか?

23 :
>>22
マルチポストはやめよう

24 :
VBAのエディタに未だに慣れない・・・visual studioみたいな至れり尽くせりな開発環境があればなぁ

25 :
>>24
アドオン入れるなり作るなりするとマシになる

26 :
>>18
コードをヒントにして、成功しました!
ありがとうございました。

めっちゃお優しいですね!!

27 :
あいうえお

28 :
>>23
初めてなので許してください
そして教えてください

29 :
>>25
オススメ教えて

30 :
かきくけこ

31 :
なにぬねの

32 :
>>22
ブックAのシートでループ

33 :
>>28
R、馬鹿

34 :
>>33
うるせえウンコマンクソして寝ろ

35 :
馬鹿の本性なんてこんなもん

36 :
>>28
ならマルチポスト放置してないで一つに絞ろう

37 :
らったったっらたた

38 :
すみません。
考えてもわからないので教えてください。

Dim Wb2 As Workbook
Set Wb2 = Workbooks(Range("B7").Value)

エラーメッセージ:インデックスが有効範囲にありません。

B7セルには<テストファイル.xlsx>が入っているとします。

Workbookにワークブック名を入れようとしているのですが、
なぜエラーなのでしょうか・・・?

39 :
SetするWorkbooksは、ファイルが開いていないといけなかったんですね。
自己解決しました。
失礼しました。

40 :
>>39
dドライブ直下にあるとして
Set Wb2 = Workbooks.open ("d:¥" & Range("B7").Value)
なら自動的にファイルを開いてオブジェクト扱いになる

41 :
>>40
そんな書き方もあるんですね!
勉強になります。
(私のコードは無駄が多そう・・・。)

42 :
変に答えると幼稚な馬鹿がつけあがる

43 :
と、幼稚な馬鹿が申してます

44 :
あかさたな

45 :
VBAからIEを操作してhtmlで書かれたデータを取りに行くコードを書いています

ターゲットのサイトでは、一度に20件のデータしか表示されず
一番下までスクロールするたびに20件ずつ追加されます(データは全200件です)

htmlでは、20件のデータの下に「::after」と書かれており、スクロールが一番下に近づくと
新たな20件がロードされ、その下に「::after」が現れます

質問ですが、一度に200件全てのデータを取るためにはIEでスクロールさせる必要があるように思いますが
その場合、SendKeysを使って、SendKeys "{PGDN}" のようにするしかないのでしょうか?

それとも他に、何か良い方法があるようでしたらアドバイスをいただきたくお願い申し上げます

46 :
querytables.addでCSVファイルをエクセルシートに貼り付けたとき、グループ化で非表示にされている部分に正しく貼り付けられるのはいいのですが、グループ化非表示から表示状態にされてしまいます。
非表示部分に貼り付けつつ、非表示のままにするにはどうしたらいいでしょうか?
貼り付け先シートの元々の表示・非表示状態はそのままにしたいんですがよい方法はありますか?

47 :
sendkeysはなるべく使わない

48 :
abcdefg

49 :
>>45
ページの作りによる。
例えばあなたは20件ずつなどと言っているけど、URLの入力など次第で200件全部表示できるかもしれない。
スクロールが必要かも分からないがSendkeysなんて使うのは子供と考えて良い。

50 :
>>47>>49
レスありがとうございます。
私もSendKeysは使いたくなかったので質問した次第です

> ページの作りによる。
ターゲットサイトは、dアニメのランキングのページです。
https://anime.dmkt-sp.jp/animestore/CR/CR00000013_001

ここからランキングのデータを抜き出して来ようと思ってますが、20件ずつしか表示されず…
何かいい方法はないでしょうかねぇ

51 :
あーざーやーかーにー
いーろづいたっ

52 :
うちの会社に、元SEでVBAバリバリ書ける、という人が
入ってきたんですが、色々Excel作業の自動化をお願いするために
現行の作業手順をお見せしたら、「ここの、Excel関数を使っているところは
意味が分からないので、関数の使い方から説明してください。」といわれ、
VLOOKUPとは、からお話ししないといけないそうで、もう自分でVBA
書こうかと思ってしまいます。
はじめはこういうもので、すぐ慣れてくれるんでしょうか?
「SEの資格」を持っている、という触れ込みの、部長の知り合いなので扱いは
要注意なのです。はぁ。

53 :
経歴詐称があった場合、解雇はできるのか

結論から言うと、解雇できる場合もあればできない場合もあります。
一口に経歴詐称といっても、軽微なものから重大なものまであり、全てのケースで解雇が可能とすることは合理的ではないからです。
解雇ができるケースは、「重要な経歴」を詐称されたときに限られます(重要な経歴とは何を指すのかは下記で説明します)。

職歴に関する経歴詐称

職歴を詐称していた場合は、採用後の仕事の内容、賃金に直接影響を及ぼすもののため、重要な経歴を詐称していると判断される可能性が高いと言えます。
判例では、グラバス事件(東京地判平成16年12月17日 労判889号52頁)があり、プログラミング能力がなかったにも関わらず、あたかもスキルがあるかのように経歴書に記載。
採用面接でもそのように説明して、ソフトウェア会社に採用されたが、経歴詐称を理由とする懲戒解雇が認められたという事例があります。

54 :
そもそも触れ込みから嘘だったのかまで疑ったらキリがないから、そこんとこは何とも言えないけど、
元SEが本当なら、少なくともVB(VBAじゃなく)は書けるけど、普通のオフィスワークはあんましてこなかった、とかじゃないの?
そんな感じのSEさんと一緒に仕事したことはある。ちょっと教えてあげたらあっという間に習得したけど。
でもやっぱ利用頻度の低い関数(LOOKUP系)や若干特殊な使い方(SUMPRODUCTを複数条件の判定や抽出に使うとか)には苦慮してた。

55 :
>>52
バリバリ書けるSEならExcelの基本的な関数ぐらい自分で調べられるものだがそれすらできないのはバリバリ具合すら怪しい予感

56 :
>>52
バリバリのエンジニアがVBA使う仕事に応募なんてしません

57 :
>>52
そもそも謎の「SEの資格」とか言ってるお前も似たようなもんだろ…

58 :
知らないことを知らないと言えるやつはまだ大丈夫だわ
ホントにやばいやつってのはな・・・

59 :
もちろんできますよ大丈夫です(やべっ何もわからん どうしよー)

60 :
>>50
スクロールしないで取得したかったんだが解析面倒で断念。
スクロールはSendkeysではなく、HTMLWindow2のscrollToなどを使う。

https://pastebin.com/V7S3XW71

61 :
VBAって必要になったら都度気合いで調べながら書いて、しばらく書かない間に忘れてまた必要になったらまた調べて覚え直すってことを繰り返してる気がする

62 :
>>52
VBA使いでExcel関数を使わない人もいるからな。
俺はどっちも使うけど両方同時に使うのは避けることが多い。

63 :
>>59
簡単にそんなこと言うと、その時点でバレるぞ。
普通は分かってたら詳細や、かつてその技術でハマッた体験談を語るもんだ。

64 :
あいうえお

65 :
>>60
> スクロールしないで取得したかったんだが解析面倒で断念。
> https://pastebin.com/V7S3XW71

おお、わざわざここまで!
大変お手数をおかけすることとなってしまい、申し訳ないやら嬉しいやら…ありがとうございます!!

> スクロールはSendkeysではなく、HTMLWindow2のscrollToなどを使う。
最近、ネットのブログなどを参考に
見よう見まねでExcelのVBAとIE操作を両方一緒に始めたのですが…

ループで200項目取り出すまでの条件の書き方、スクロールの書き方、すごく参考になります!
ランキングデータの取り出し方…、ここまでシンプルに書けるものなんですね!!

恥ずかしながら、まだオブジェクトとかコレクションとかアイテムとかがごっちゃになってて頭で整理できておらず
文法エラー(?)の嵐に悩まされつつコードを書いてる段階で…"ChildNodes"とかもまだ使ったことないです…

本当に感謝です。

66 :
また幼稚なゆとり世代馬鹿か

67 :
他人の批判しても成果はあがらない

68 :
凄く基本的な質問だと思うのですが、
Range("A1".Offset(0,12)).Activate
はだめで、
Range("A1").Offset(0,12).Activate
が正しいのはなんでなのでしょうか?

69 :
>>68
VBAでそのへんを正しく理解するのはまず不可能だしその必要もないから、定型句だと思って暗記しなさい
ちゃんと理解したかったらJavaのようなきちんとしたオブジェクト指向言語を学ぶことをお勧めする

70 :
>>68
引数が間違ってるから

71 :
>>68
一番目の式の方は、"A1".Offset(0, 12)という表現がVBAの構文上無効で何も値を返さない式になっている
なので、参照先のセル範囲の名前をバリアント型の引数として要求しているRangeプロパティ式の評価に失敗してしまい、Rangeオブジェクトの取得にも失敗する

文字列や数値のリテラルに.(任意の値)と続けて何らかのオブジェクトにアクセスしようとしても、そもそもそのようなアクセスルールが定義されていないので当然失敗する

反対にRange("A1").Offset(0,12)の方は構文上無効な表現がなく、RangeオブジェクトのメンバのOffsetプロパティ式を正しく用いているので、Offsetプロパティを介してA1セルから12列分座標移動したセルを取得することができる

72 :
なにぬねの

73 :
VBAのリテラルはメンバを持たないから
他言語だと型変換とかあるんだけど

74 :
リテラルがそのままstring型オブジェクトとして使える言語だとメンバアクセスできて楽だよね

75 :
たちつてやと

76 :
VBEはインテリセンスがクソ

77 :
VBEは静的に型判定できるリテラルくらいハイライト表示対応してくれと思う

78 :
そもそもExcelのおまけ機能だし

79 :
はひふへほ

80 :
イミディエイトとローカルのウインドウ、上下にドッキングしてしまったのだけど、左右にドッキングするようにはどうすればいいのだろう…

81 :
>>80
ドラックすれば良いんじゃない?
位置調整は難しい場合があるけどウィンドウ枠の表示が変わった時に離すとドッキングするから試行錯誤してみれば良い。

82 :
やいゆえよ

83 :
いきしちにひみいりい

84 :
>>80
移動させる時に判定のシビアなガイド枠みたいなのが出るから置きたい位置にハマるまで頑張る

85 :
VBAの代わりにPython実行環境を取り込む動きがあるらしいね
もしそうなったらVBA界隈の閉塞感も変わるかな

86 :
まじ?
エクセルやってる一般社員様がpython始めたらどうなるんだろ

87 :
おっぱいでexcelを自動化する

88 :
Pythonエンジン搭載は色んな理由で見送られたはず

89 :
>>85
未だにこういう馬鹿がいるのか

90 :
Python搭載は見送られて代わりにJavaScriptが搭載されるという記事をどこかで見かけましたが。

どなたか>>46わかるかたお願いします。

91 :
>>90

>>89
>>未だにこういう馬鹿がいるのか

92 :
jsだったらgasと同じような感じになるのかな
gasはそもそもスプレッドシート自体の機能が物足りないからイマイチだったんだけど

93 :
これからJSエンジンが実装されるならTypeScriptベースで型付け強制になるだろうな

94 :
.ClearContents と .Value="" では実行後のセルの状態は異なりますか?

95 :
何も載らないよ
Excel自体クラウド上で使うようになってきてるから
マクロみたい使うならJavaScriptなのかもね

96 :
きーよしー
こーのよーるー

97 :
ハーゲーはー ひーかーり

98 :
最近はExcel操作のためにVBAを使うのはもうなんか最後の手段って感じがする
PowerQuery(M言語)、PowerPivot(DAX)、JavaScript、Python、PowerShellのどれかで書く方が楽だしメンテも簡単

99 :
趣味が大がかりになってきて使う材料の管理が煩雑になってきたのでExcelを使って管理しようかなと考えています

工程が1,2,3…とあって、それぞれの工程で使う部材は今のところ重複はなく(今後どうなるかわからない)部材毎に色違いやグレード違い等の派生品があり、
用途としては工程毎に使う部材を別シートにリストアップしたり、規定量を割ったものをピックアップ
部材の管理番号を振るとき
番号は工程や派生に関わらず一列で一意の連番
3列で工程ー工程内の部材を連番ー派生を枝番
工程に関わらず部材毎に連番ー派生品を枝番
マクロを組むときこれらのうちどうするのがよい構造になるでしょうか?

100 :
まず3行にまとめます。


100〜のスレッドの続きを読む
クラス名・変数名に迷ったら書き込むスレ。Part28
データベースプログラミング全般スレ
Ruby 初心者スレッド Part 63
sizeof(char)が必ず1でも、省略すべきではない
1行ずつC++を書いてプログラムを作成するスレ
+ JavaScript の質問用スレッド vol.123 +
Ruby 初心者スレッド Part 66
MATLABプログラミング 質問箱 その4
くだすれDelphi(超初心者用)その57
プログラミングのお題スレ Part17
--------------------
【環礁宇宙】◆日食なつこ ◇ 3日目◆【永久凍土】
NHK連続テレビ小説「はね駒(こんま)」 part1
令和最大のハジブル
メギドにハマったジータちゃんbot
【研修】 SE(システムエンジニア)内定者集まれー 【IT】
【三船敏郎】ピクチャーブライド【工藤夕貴】
【ポンタ】ポンタ【ポンタ】
東京卍リベンジャーズ 24【和久井健】
[スクープTV ScooP!tv]寺やる!寺井一択★7
エラルド=コイルという探偵も雑談員ですから 205大探偵
オールナイトニッポン MUSIC10
【B.LEAGUE】リンク栃木ブレックスpart29【BREX】
スクリーンヒーロー産駒応援スレ part26
クロスアンジュ天使と竜の輪舞はスパロボに寄生する糞アニメ15
オークションで頭に来たこと・腹が立ったこと
■□■ドラマ視聴率2019年4月期【73】■□■
大谷翔平がテニスしてたら
世界史上で朝鮮民族が成した偉業
四国中央わいせつバスケ
BANANA FISH #45
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼