Excel VBA 質問スレ Part23

このエントリーをはてなブックマークに追加
952945:2012/04/09(月) 23:51:26.07
>>946

たとえば、宣言部で
Private Type AAA
BBB As String
CCC As String
End Type
Private Type ZZZ
DDD As AAA
EEE As String
End Type

としてやる。
で、プロシージャ内でユーザー定義変数を宣言。
すると、あまり意識せずに多次元配列状態を作り出せる。
Dim A As ZZZ

A.EEE= "文字列"
A.DDD.BBB="入れ子になってる"
A.DDD.CCC="これも"

With A
Debug.Print .EEE
With .DDD
Debug.Print .BBB
Debug.Pring .CCC
End With
End With

この例だとしょぼいけど、似たような内容の変数が
10個も20個も出てくるときにものすごく整理しやすい。
>>950
出来ました。
ありがとうございました。
954営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 10:47:52.39
End(xlUp)は、プロパティですかメソッドですか?
トマトは、野菜ですか果物ですか?
バナナはおやつに入りますか?
>>954
バナナは果物です
>>954
おやつやデザートとして食べるのが果物。
おかずとして食べるのが野菜。
酢豚にパイナップルを入れるのは最近聞いたが
実際に見たことは無い
>>954はウ菜、かつ、バ果者 である
End()はメソッドxlUpは定数
960営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 16:53:30.86
ある特定のフォルダ(例えば、デスクトップ\Test\A01\)にあるExcelファイルだけを開くにはどうすればいいですか?
また、そのフォルダにあるExcelファイルを開かずにその中のセルにある値をいくつか取り出すことは可能ですか?
>>960
> ある特定のフォルダ(例えば、デスクトップ\Test\A01\)にあるExcelファイルだけを開くにはどうすればいいですか?
Workbooks.Open filename:="c:\foo\bar.xls"
で特定のフォルダの特定のブックが開ける

> また、そのフォルダにあるExcelファイルを開かずにその中のセルにある値をいくつか取り出すことは可能ですか?
不可能
>>960
「Excelファイルを開かずに」の「開く」の定義をもうちょっと明確にしないと答えられないよ
963営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 18:21:46.56
>>961
いや、そのフォルダにあるExcelファイルを全部開くという意味です。
そのときによってファイル名は毎回違う、みたいな。
>>963
Dir関数使えばいいよ
965営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 18:45:17.49
>>964
そのDir関数はなんのための関数?どうやって使うの?
966960:2012/04/11(水) 18:45:46.25
そんな関数、本に載ってないからわからん
>>965
お前のExcelにはヘルプが無いのか?ネットに接続できるのにgoogleにはアクセス出来んのか?
968営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 19:03:23.94
使ったことすらない。グーグルは邪道だ。
こんなとこで見も知らぬ他人にきくほうがよっぽど邪道だろ
970営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 19:24:04.95
なんだと、このやろう
Exceは確定申告のために税額を計算するソフト
それ以外の使い方は全部邪道
972デフォルトの名無しさん:2012/04/11(水) 20:40:11.41
いきなり別のソフトの説明されても
973デフォルトの名無しさん:2012/04/11(水) 21:18:22.13
確定申告はそれ用のソフトがあるだろ
エクセでやってる奴ってその程度のお金も出せない貧乏人なの?
974デフォルトの名無しさん:2012/04/11(水) 22:11:36.36
エクセルのほうが高いだろ
975デフォルトの名無しさん:2012/04/11(水) 22:12:54.75
エクセルはそれ以外の用途で買ってて入れてる奴が多い
976デフォルトの名無しさん:2012/04/11(水) 22:24:07.49
ExcelVBAのスキルの前に、スルースキルを身につけろ
977デフォルトの名無しさん:2012/04/12(木) 01:04:05.31
もともと表計算ソフトが税金の計算のために発明されたってのは本当の話
978デフォルトの名無しさん:2012/04/12(木) 10:01:49.86
MS12-027を入れてコモンコントロールを使ったVBAマクロが動かなくなったら
exdファイルを削除してね!
ttp://support.microsoft.com/kb/2664258/
To resolve this issue, you must delete the cached versions of the control type libraries (extender files) on the client computer.
To do this, you must search your hard disk for files that have the ".exd" file name extension and delete all the .exd files that you find.
These .exd files will be re-created automatically when you use the new controls the next time that you use VBA.
These extender files will be under the user's profile and may also be in other locations, such as the following:
C:\documents and settings\username\Application Data\Microsoft\Forms
C:\documents and settings\username\AppData\Local\Temp\VBE
979デフォルトの名無しさん:2012/04/12(木) 10:33:50.90
別々のブックでマクロを共有することって出来ますか?
別々のブックで同じマクロ処理をしたいので、現在はコピーしながら
使っているのですが、マクロの内容が変更になりそうなので
今のうちに共有出来るなら作っておこうと思いまして。

宜しく御願いします。
980デフォルトの名無しさん:2012/04/12(木) 10:59:29.01
>>979
違う様な気がするけどこういうこと?
http://www.moug.net/tech/exvba/0010018.html
981デフォルトの名無しさん:2012/04/12(木) 11:32:55.50
>>980
ありがとうございます。
ググったら
http://d.hatena.ne.jp/language_and_engineering/20090731/p1
こんなのがあって、中身が理解出来ていないのですが、
こちらの方が希望に合ってると思いました。
982デフォルトの名無しさん:2012/04/12(木) 11:36:16.32
いやいや、アドインにしろよ
983デフォルトの名無しさん:2012/04/12(木) 11:53:32.18
写真帳を作成してます。(XP,Excel2003)
選択写真の縮小と圧縮をワンボタンで実行したいのですが、圧縮の方が機能しないのでヒントください。
マクロの記録(図の書式設定から圧縮)でできたコードで、
図のトリミング部分を削除するのチェックを外してマクロ記録したけど、それが実行されてない。

手動でするとデータサイズが900KB→150KBになるが、マクロ実行では900KBのまま。

Sub 写真圧縮()
On Error GoTo ErrorCheck
Selection.ShapeRange.PictureFormat.Brightness = 0.5
Selection.ShapeRange.PictureFormat.Contrast = 0.5
Selection.ShapeRange.PictureFormat.ColorType = msoPictureAutomatic
Selection.ShapeRange.PictureFormat.CropLeft = 0#
Selection.ShapeRange.PictureFormat.CropRight = 0#
Selection.ShapeRange.PictureFormat.CropTop = 0#
Selection.ShapeRange.PictureFormat.CropBottom = 0#
ErrorCheck:
MsgBox "写真を選択"
End Sub

トリミング部分削除のチェックを外した方がサイズが小さくなるのも疑問だけど、よろしくお願いします。
984デフォルトの名無しさん:2012/04/12(木) 12:06:58.32
>>983
excel vba 図 圧縮
でググる
985983:2012/04/12(木) 13:18:54.90
>>984
レスありがとうございます。
書く前に一応検索して、いろいろ試してみたのですが、自分の思うようにいかず(理解できず)、
結局シンプルな組み合わせが理想だったので>>983の方法を選びました。
縮小の方↓はうまくいき、最終的にこれら二つを組み合わせようと考えてます。

Sub 写真縮小()
On Error GoTo ErrorCheck
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Height = 232.5
Selection.ShapeRange.Width = 309.75
Exit Sub
ErrorCheck:
MsgBox "先に写真の選択"
End Sub


986デフォルトの名無しさん:2012/04/12(木) 19:22:48.64
ある特定のフォルダ(例えば、デスクトップ\Test\A01\)にあるExcelファイル(ファイル名は不定)だけをすべて開くにはどうすればいいですか?
また、そのフォルダにあるExcelファイルを開かずにその中のセルにある値をいくつか取り出すことは可能ですか?
987デフォルトの名無しさん:2012/04/12(木) 19:31:39.02
我々はスルースキルを身につけたのでもう釣られません
988デフォルトの名無しさん:2012/04/12(木) 19:41:29.78
つまらない大人になっちゃったんだね
989986:2012/04/12(木) 19:43:58.23
アホが一匹釣れた(ワラ
990デフォルトの名無しさん:2012/04/12(木) 19:53:25.65
Win7Ultimate Excel2010

連想配列使いたくて
Set dic = CreateObject("Scripting.Dictionary")
こうしても「変数が定義されていません」とエラーが出るんだけど、何がいけないの?
991デフォルトの名無しさん:2012/04/12(木) 20:33:28.01
変数dicの宣言し忘れか?
992デフォルトの名無しさん:2012/04/12(木) 20:57:14.54
993デフォルトの名無しさん:2012/04/12(木) 22:25:54.70
デザイン あ
994990:2012/04/13(金) 10:12:00.33
自己解決しました
原因はOption Explicit宣言してた為に結果>>991さんの言うとおりになっていました
995デフォルトの名無しさん:2012/04/13(金) 16:31:49.57
標準モジュールにAuto_Openを作って、マクロの自動実行をする時にセキュリティ警告が出るのが嫌で、
下記のようなvbスクリプトをネットで拾って使ったのですが、Auto_Openが実行されません。(ブックは表示されます。)

Option Explicit
Dim objExcelApp, strPath
Const BookName = "hoge.xls"’実行するファイル
Set objExcelApp = CreateObject("Excel.Application")
With WScript
strPath = Replace(.ScriptFullName, .ScriptName, "")
End With
objExcelApp.Workbooks.Open strPath & BookName, False, False
objExcelApp.Visible = True
Set objExcelApp = Nothing

ファイルをクリック等で開くと実行されるのでマクロ自体は間違いないと思うのですが、
このスクリプトがおかしいのか、何かエクセル側で設定する項目があるのか
教えて下さい。

環境はExcel2003+XP SP3です。
宜しく御願いします。
996995:2012/04/13(金) 17:00:21.61
自己解決しました。
Auto_Openを実行するには RunAutoMacros  の記述が必要でした。
スレ汚し、済みません。
997デフォルトの名無しさん:2012/04/13(金) 17:01:26.67
998デフォルトの名無しさん:2012/04/13(金) 17:18:38.00
質問したいけど新スレ立たないのかな

*やりたいこと*
シート内のセル設定情報をテキストで保存して、読み出し
→帳票のテキストデータ化

*必要なこと*
セルに設定された各種プロパティの保存

*知りたいこと*
プロパティがデフォルト以外に変更されたセルを発見する方法


構造体だかクラスだか設定して該当範囲の一括調査・設定するしかないのだろうか
999デフォルトの名無しさん:2012/04/13(金) 17:19:44.16
1000デフォルトの名無しさん:2012/04/13(金) 17:23:45.82
>>998
もっと具体的に書かないと第三者には伝わらないよ
とりあえず>>2を読み返して質問し直した方がいい
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。