Excel VBA 質問スレ Part37 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2015/06/10(水) 16:18:49.84ID:T4wZlTyk★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Applications』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
前スレ:Excel VBA 質問スレ Part36
http://peace.2ch.net/test/read.cgi/tech/1420790342/
関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0175デフォルトの名無しさん
2015/09/05(土) 01:35:28.25ID:fWJB10zn0176デフォルトの名無しさん
2015/09/05(土) 12:59:48.67ID:27LdtAAJexcelで作る必要性が全くないね
0177デフォルトの名無しさん
2015/09/05(土) 17:54:33.70ID:AhcKUtwZGoogleで画像検索すればいいと思う
あとはGoogleDriveにアップロードする
簡単
0178デフォルトの名無しさん
2015/09/05(土) 23:20:16.13ID:zbH+HliEExcelのシート上でパス+ファイル名を貼り付けるマクロをどなたか作成宜しくお願いします
0179デフォルトの名無しさん
2015/09/06(日) 00:11:58.38ID:aG8A0DfZそれぐらいなら任せとけ
0180デフォルトの名無しさん
2015/09/06(日) 02:26:50.72ID:QNZbRBDg0181デフォルトの名無しさん
2015/09/06(日) 07:19:16.95ID:8yRgk1H40182デフォルトの名無しさん
2015/09/06(日) 10:31:01.32ID:ZpREkUvSファイル名のリストがほしいってことだろ
コマンドプロンプトで ↓ やるのを覚えたほうがマシ
dir /b > list.txt
0183デフォルトの名無しさん
2015/09/06(日) 14:11:28.24ID:Ni3aZmcx0184デフォルトの名無しさん
2015/09/06(日) 16:24:47.90ID:tXhFn+hoExcelVBAでやろうとするとやや面倒な部類かな
いやそうでもないか
0185デフォルトの名無しさん
2015/09/06(日) 18:15:02.28ID:Ir/JiN9vシートに貼るところだろ
0186デフォルトの名無しさん
2015/09/06(日) 22:37:16.01ID:BIq/lpvc単に別名保存すると開いているファイルが別名になってしまいます。
この場合元ファイルを呼ばなければその後の処理が別名ファイルにされるようになりますこれでは困るため
開いているファイルはそのままに自分の複製を別名で保存したい場合はどう書けばいいのでしょうか?
0187デフォルトの名無しさん
2015/09/06(日) 22:45:54.30ID:cd39hwxLってのができればいいね
0188186
2015/09/06(日) 23:05:37.24ID:BIq/lpvc「SaveCopyAs」 でできるようで
Sub テスト()
ActiveWorkbook.SaveCopyAs Filename:="C:\テスト" & Format(Date, "yyyymmdd") & ".xls"
End Sub
↑こう書けば日付時刻を追記して別名保存できます!!
てかVBAのスレって2つあるの?!w
0189186
2015/09/06(日) 23:10:24.49ID:BIq/lpvcDate, "yyyymmdd"
↓
Date, "yyyymmddss"
こうすれば秒も記載されるので毎秒保存が可能に!ww
Sub テスト()
ActiveWorkbook.SaveCopyAs Filename:="C:\テスト" & Format(Date, "yyyymmddss") & ".xls"
End Sub
注意点としては".xls"はお使いのシートの拡張子にする必要が有ります。
0190186
2015/09/06(日) 23:20:28.89ID:BIq/lpvc0191186
2015/09/06(日) 23:46:39.37ID:BIq/lpvchttp://www.heyuguys.co.uk/images/2011/06/Agent-Smith.jpg
0192デフォルトの名無しさん
2015/09/07(月) 16:09:48.26ID:ipfcnQUP作り方は自由だけれども、
マクロがあるブックと別名で保存されては困るブックを
別のファイルにしてもいいのでは?
マクロ実行時に自己のバックアップを取る仕様も
まぁアリというばアリですけど。。。
0193デフォルトの名無しさん
2015/09/07(月) 21:04:51.95ID:W99FKy8k0194デフォルトの名無しさん
2015/09/09(水) 13:15:34.54ID:jmO3TJP8どんなエラーが発生したかによってそれぞれ処理をしたいのですが
その方法はどうしますか?
0195デフォルトの名無しさん
2015/09/09(水) 13:25:46.11ID:4sL8a6ZM0196デフォルトの名無しさん
2015/09/09(水) 13:43:27.11ID:jmO3TJP80197デフォルトの名無しさん
2015/09/09(水) 13:43:31.07ID:b8GIKhZ4ググれタコ
0198デフォルトの名無しさん
2015/09/09(水) 13:48:38.84ID:4sL8a6ZM0199デフォルトの名無しさん
2015/09/09(水) 14:11:04.56ID:jmO3TJP8あなたはわたしをおちょくっているのですか?
0200デフォルトの名無しさん
2015/09/09(水) 14:22:03.62ID:4sL8a6ZM0201デフォルトの名無しさん
2015/09/09(水) 14:30:43.82ID:jmO3TJP8当分われわれ二人はこのスレに居つくんだからな。
0202デフォルトの名無しさん
2015/09/09(水) 14:49:10.85ID:gDta/uVC0203デフォルトの名無しさん
2015/09/09(水) 15:34:57.30ID:p04zzSzWErr
0204デフォルトの名無しさん
2015/09/09(水) 16:11:12.71ID:JKr9Wstlエラー処理のやり方は、
http://officetanaka.net/excel/vba/statement/Resume.htm
実行時エラーの一覧は、
http://officetanaka.net/Excel/vba/error/execution_error/index.htm
0205デフォルトの名無しさん
2015/09/09(水) 16:56:50.32ID:jmO3TJP8ありがとうございます。
この>>204下のエラー番号の表ってこのサイト見ずに自分のPC内だけで完結できないかしらね?
オブジェクトブラウザに書いてるとか。
0206デフォルトの名無しさん
2015/09/09(水) 17:03:34.47ID:JKr9Wstl完結の意味がよくわからないけど、オブジェクトブラウザで見る範囲にはないと思うよ。
こんな感じで自作するしかないと思う。
https://support.microsoft.com/ja-jp/kb/146864
0207デフォルトの名無しさん
2015/09/09(水) 17:05:00.60ID:JKr9Wstl> Public Const ERR_DEVICEUNAVAILABLE = 68
> Public Const ERR_BADFILENAMEORNUMBER = 52
> Public Const ERR_PATHDOESNOTEXIST = 76
> Public Const ERR_BADFILEMODE = 54
みたいに自分で定義するってこと。
0208デフォルトの名無しさん
2015/09/09(水) 19:03:42.51ID:nekRxL7K0209デフォルトの名無しさん
2015/09/09(水) 19:23:36.06ID:604Cwjpa0210デフォルトの名無しさん
2015/09/09(水) 20:24:09.31ID:X10C1ufTそれ Error( ) 関数より便利なん?
0211デフォルトの名無しさん
2015/09/11(金) 07:11:03.47ID:FH5ZvDtcウェブページを画像にしてアクティブシートに貼り付ける方法が有れば教えて下さい。
ユーザーフォームの位置を取得してスクリーンショットをトリミングして等とやって
みたのですがうまくいかなくて
0212デフォルトの名無しさん
2015/09/11(金) 12:11:40.35ID:7m9SebXZ0213デフォルトの名無しさん
2015/09/11(金) 12:59:51.44ID:LxNrmawzGetWindowDC
CreateCompatibleDC
CreateCompatibleBitmap
SelectObject
BitBlt
SetClipboardDataを使ってクリップボードにコピーして
ActiveCell.PasteSpecialで貼り付けられないかな
0214デフォルトの名無しさん
2015/09/12(土) 05:10:31.32ID:dQMUA4G2頂いたアドバイスを参考にしてコード書いてみます。
本当にありがとうございました。
0215デフォルトの名無しさん
2015/09/13(日) 00:26:15.78ID:f7snMU36ここで変数やFor文を使えるようにできませんか?
0216デフォルトの名無しさん
2015/09/13(日) 00:29:38.04ID:G9dQlaUzマルチはダメですよ
0217デフォルトの名無しさん
2015/09/13(日) 04:20:00.29ID:gQnlFA4p普通に使えるんだが
0218デフォルトの名無しさん
2015/09/13(日) 14:30:53.21ID:uDM41CsS自分も知らなかった。1行に書くと、使えるんだね。ありがとう。
for i = 1 to 5:debug.print i:next i
0219デフォルトの名無しさん
2015/09/13(日) 18:55:46.40ID:nhNM0pAX0220デフォルトの名無しさん
2015/09/13(日) 23:20:47.36ID:nQBKdNbgついでに最後の i も必用ない
for i = 1 to 5:?i:next
俺は ?range("aa1").column みたいな感じで電卓がわりに使ったりしてる
適当なキーワード打ってF1押せばヘルプへのショートカットになる
0221デフォルトの名無しさん
2015/09/14(月) 01:33:32.22ID:h9CenDqd0222デフォルトの名無しさん
2015/09/14(月) 08:48:07.90ID:GfOr66Lgなりません
0223デフォルトの名無しさん
2015/09/14(月) 21:30:26.31ID:wEl1Y90n2013で業務報告書的なものに独学(参考書&ぐぐり)で以下のvbaを仕込みました
@エクセルからワード起動し、コピー&ペーストで文書作成
A同book内でfor…if…で別シートの一覧表に業務報告書の内容を一部転記
が、作成後に別事務所では2007、2010等が現役であることが判明
私の無知による後の祭ではありますが、参考書が2000/2003/2007/2013対応などと謳っていることから命令文はさほど変わらないと推測し、
下位がインストールされている事務所のPCで2013で書いた命令分をコピー&ペーストすれば下位ソフトで動くようになったりますでしょうか?
0224デフォルトの名無しさん
2015/09/14(月) 22:20:13.44ID:37XjVVHj動きます
0225デフォルトの名無しさん
2015/09/14(月) 22:31:29.64ID:XpNdN7EG下位から上位は比較的問題が起こりにくいけど、
上位から下位はよくよくテストしないとダメだろうね。
予期せぬ問題が発生することがある。
例えばシートの行数が65536行に減ったり、セル内の文字列が場合によって256文字制限が掛かったり。
0226デフォルトの名無しさん
2015/09/15(火) 01:34:51.81ID:JwuMU5pI早々の回答かたじけないです
>>224
暗闇に一筋の光が…
>>225
2013を覚醒させるほどの命令はしてませんので大丈夫ぽいですが、
過信せずデバグりたいと思います
next
0227デフォルトの名無しさん
2015/09/15(火) 22:56:57.09ID:cXCl5+xgオートシェイプ2つをグループ化し、縦横比を固定にしたいのです。
shpN(1)、shpN(2)にオートシェイプのnameが入っています。
ActiveSheet.Shapes.Range(shpN).group ・・・グループ化できました。
Selection.LockAspectRatio = True ・・・エラー
Selection.ShapeRange.LockAspectRatio = True ・・・エラー
(なんとか).LockAspectRatio = True だと思うのですが。
0228デフォルトの名無しさん
2015/09/15(火) 23:17:43.49ID:KQEQzEy1〜 .LockAspectRatio = msoTrue
0229デフォルトの名無しさん
2015/09/15(火) 23:33:41.39ID:KQEQzEy1With ActiveSheet.Shapes.Range(shpN)
.Group
.LockAspectRatio = msoTrue
End With
0230デフォルトの名無しさん
2015/09/15(火) 23:38:11.19ID:cXCl5+xgレスありがとう。どちらもやってみたんだけど、エラーになるんです。
(グループ化直後、selectionされてない?のかな。)
で、以下で自己解決しました。
For Each gp In ActiveSheet.Shapes
If gp.Type = msoGroup Then
gp.LockAspectRatio = msoTrue
End If
Next
0231デフォルトの名無しさん
2015/09/17(木) 03:28:54.63ID:lZOvbfrn0232デフォルトの名無しさん
2015/09/17(木) 03:58:01.75ID:pl8Hj06Whttp://i.imgur.com/FrbauP0.jpg
0233デフォルトの名無しさん
2015/09/17(木) 08:45:59.29ID:negR8wPL登録しておいた文章を簡単に入力する方法はありますか?
たとえば
tを押したときに"Thank you very much for"
bを押したときに"Best Regards, (my name)"
など20個以上の登録しておきたい文章があるんです。
0234デフォルトの名無しさん
2015/09/17(木) 08:47:10.12ID:negR8wPLタッチタイプができるので大文字のところだけ0.1秒くらいタイミングが遅れて困っているんです。
0235デフォルトの名無しさん
2015/09/17(木) 10:20:20.73ID:GcR8xHdeyenマークは?
0236デフォルトの名無しさん
2015/09/17(木) 11:20:58.68ID:1vkd1c9N0237デフォルトの名無しさん
2015/09/17(木) 11:49:58.02ID:kipa1zpm0238デフォルトの名無しさん
2015/09/17(木) 11:52:52.51ID:Y9+umF8P0239デフォルトの名無しさん
2015/09/17(木) 12:39:55.33ID:+3F+8mBw0240デフォルトの名無しさん
2015/09/17(木) 13:19:44.18ID:1vkd1c9N\ ヽ / /
‐、、 殺 伐 と し た ス レ に 鳥 取 県 が ! ! _,,−''
`−、、 __/\ _,,−''
`−、、 _| `〜┐ _,,−''
_ノ ∫
_,.〜’ /
───────‐ ,「~ ノ ───────‐
,/ ` ̄7
| 島 根 県 /
_,,−' ~`⌒^7 / `−、、
_,,−'' 丿 \, `−、、
,'´\ / _7 /`⌒ーへ_,._⊃ /`i
! \ _,,-┐ \ _,.,ノ r‐-、、 / !
゙、 `ー--<´ / L. ,〜’ ゙、 >−一'′ ,'
y' U `ヽ/ / ヽ ヽ '´ U イ
____
/ __ | \____\
___/__ / ̄ ____|____ \ \____\
//ヽ /___ /|\ \ \____\
/ / ヽ / /__ / | \ \_______
/ / / / / / | \ | \
/ / / / _/ __/ | \__ | \  ̄―_
0241デフォルトの名無しさん
2015/09/17(木) 14:28:57.33ID:zQMTeEfi0242デフォルトの名無しさん
2015/09/17(木) 19:21:57.39ID:ZEBJNCr9Excel だとコンマよりタブの方がよく使う
0243デフォルトの名無しさん
2015/09/17(木) 21:27:50.77ID:nm8tfio5キーボードの配列によっては=はshift押さないものもある
これもまた使ってるキーボード次第だけど、10キーの+をビターンと押してみるとか
0244デフォルトの名無しさん
2015/09/18(金) 02:08:42.21ID:OwYf98or40行目を変更して、再度データを読み込みます。そうすると、最初の1から20までを
表示するのですが、40行目を表示させることはできないんでしょうか?。
できれば、40行目を変更する時点で一番上に表示されてる、例えば26行目から
表示させることとか、できないでしょうか。
0245デフォルトの名無しさん
2015/09/18(金) 03:58:21.92ID:jaUEyIYl指定の項目を画面に表示させたいならEnsureVisible()を使う
Private Sub CommandButton1_Click()
With ListView1
With .ListItems(40)
Call .EnsureVisible
'.Selected = True
End With
'Call .SelectedItem.EnsureVisible
End With
End Sub
0246244
2015/09/18(金) 18:55:44.91ID:JBxUncF1やってみました。できました!。ありがとうございました。
ググっていろいろやってみて、どうしてもわからず
ここに質問しました。よかったー。どうもでした。
0247デフォルトの名無しさん
2015/09/19(土) 06:25:19.76ID:MRSgSgPN2015/08/27 1:04:03
上のような日付時刻のデーターから2つの差分の経過時間日数を表示させるには
どのように書けば良いのでしょうか?
0248デフォルトの名無しさん
2015/09/19(土) 07:03:55.20ID:ZcnBR6n/セルにシリアル値が入ってるとして
差 = Range("B1").Value - Range("A1").Value
0249デフォルトの名無しさん
2015/09/19(土) 07:20:25.72ID:ABga1iDK0250デフォルトの名無しさん
2015/09/19(土) 08:36:36.43ID:jW6yRKIIそれって>>247の言う「経過時間日数を表示」することになるのかね?
0251デフォルトの名無しさん
2015/09/19(土) 09:21:22.56ID:xryWHhpWセルに表示するなら書式設定でできるかと
0252デフォルトの名無しさん
2015/09/19(土) 10:19:50.27ID:jW6yRKII0 3:26:13 (← 3時間26分13秒経過 の意味)
477 1:12:34 (← 477日1時間12分34秒経過 の意味)
みたいに表したいんじゃないかと想像したんだが、どうだろう。
0253デフォルトの名無しさん
2015/09/19(土) 11:16:51.77ID:xryWHhpWセルの書式 - 表示形式 - 分類(C) - ユーザー定義で種類(T) に d hh:mm:ss
0254253
2015/09/19(土) 11:23:41.09ID:xryWHhpW0255デフォルトの名無しさん
2015/09/19(土) 12:39:08.79ID:N5F00OSs0256デフォルトの名無しさん
2015/09/19(土) 13:01:19.07ID:GIof26cq時間を特定のフォーマットで表示する
別の話だから
前者は>>248で良いだろ
後者は元質問者がどう望んでるか分からんから回答できんわ
0257デフォルトの名無しさん
2015/09/19(土) 23:52:44.74ID:U6It5g+sなぜかヘルプに載ってないシート関数
0258デフォルトの名無しさん
2015/09/21(月) 07:41:10.03ID:TLTHusWTADODB.Connection
ADODB.Recordset
を使って見ているんですが
書き込みのとき文字型になるので
書き込み先の関数が反映されないのですが対処方法ないですか?
0259デフォルトの名無しさん
2015/09/21(月) 09:14:39.19ID:6Qd0iGUJそもそもADOでExcelシート開いて関数動くのか?
文字列型とかそういう問題じゃない気がするんだが
0260デフォルトの名無しさん
2015/09/21(月) 10:36:58.18ID:MLBJrwW+混ざってて、-/-と空白は” “か”不明”で処理して、年号は拾いたいです。
うまい方法あったら教えて下さい。
0261デフォルトの名無しさん
2015/09/21(月) 10:41:23.41ID:wKVLsJx8IsDate()で日付として読み込めるかどうか判断できる。
空白は日付として解釈出来るので別途判断が必要。
0262デフォルトの名無しさん
2015/09/21(月) 10:43:56.79ID:wKVLsJx80263デフォルトの名無しさん
2015/09/21(月) 13:35:26.77ID:TLTHusWTデータを書き込んだ後に、エクセルを開くと
数字が文字型で入っているから関数が計算しないんだ
0264デフォルトの名無しさん
2015/09/21(月) 20:04:31.29ID:Kfx74dr5>Excel2007を開かないで読み込み、書き込みしたいので
なぜ?その必要性は?
0265デフォルトの名無しさん
2015/09/21(月) 20:20:21.00ID:Zmx0dOIG>Excel2007を開かないで読み込み、書き込みしたい
エクセルを開かないで、どうやってブックに書き込みするつもりなんだい?
あと、ADODBはVBScriptで作成してるのかい?
0266デフォルトの名無しさん
2015/09/21(月) 20:47:10.32ID:6Qd0iGUJちょっと実行環境とコード晒して
0267デフォルトの名無しさん
2015/09/21(月) 22:14:40.79ID:TLTHusWTコードは会社なんで連休明けにまた質問します。
数秒毎に書き込みをすることが結構あるので
毎回OPENするのを見るのはうっとうしいなぁと思ってるんですが
エクセルに書き込みをするのはやっぱりOPENしてからが普通かな
0268デフォルトの名無しさん
2015/09/21(月) 22:59:15.59ID:F/XEG3RA0269デフォルトの名無しさん
2015/09/21(月) 23:37:00.23ID:c1rO/cpsたいていの関数は数値でも文字列でも処理してくれるのに
0270デフォルトの名無しさん
2015/09/22(火) 01:33:16.60ID:RmAixVRL0271デフォルトの名無しさん
2015/09/24(木) 10:18:47.70ID:omyXVQMB0272デフォルトの名無しさん
2015/09/24(木) 10:41:14.56ID:X5tdJ92l0273デフォルトの名無しさん
2015/09/27(日) 01:20:22.02ID:F07ZjUKBExcelが変更されたって検出できなければ再計算されないのさ
auto_openとかでApplication.Calculate
と書いとけば開いた時に再計算されるよ
0274デフォルトの名無しさん
2015/09/29(火) 09:44:27.26ID:wb2Wnzgx可能です
■ このスレッドは過去ログ倉庫に格納されています