VBAプログラミング&Tips集のHappy! Happy! Islandトップページへ

Access VBAプログラミング&Tips
エクセルマクロ(Excel VBA)プログラミング&Tips
VBScript・JScriptプログラミング&Tips for WSH
プログラミング基礎・入門
Access・Excel用フリーソフトのライブラリ
質問掲示板

HTMLの書き方講座
オレの話を聞けぇ♪
侍ゲームセンター
おすすめリンク集
管理人プロフィール
管理人へメール
更新履歴
利用規程
サイトマップ



Copyright(C)1999-2006
結城圭介。,
All rights reserved.




[広告]
この掲示板では、主にVBAプログラミングに関する疑問や質問などの話題を扱っています。当サイトで紹介しているVBAプログラミングや、その他の関連するVBAプログラミングに関する質問があれば、気軽にカキコしてください。基本ルールは「質問する側はその内容を明確に」、「答える側は困っている方の気持ちをくみ取って」です。難問も、みんなでかかれば、怖くない!?

この掲示板はマルチスレッド式の掲示板です。VBA質問掲示板の利用規約の範囲内であれば誰でも自由にスレッド作成・返信・閲覧を行なうことができます。なお、VBA質問掲示板の利用規約は、スレ作成・記事投稿前に必ずお読み下さい。
新規にスレッド(話題)を作るときは、すぐ下にある新規スレッド作成をクリックし、新規専用フォームから新規記事を投稿してください。
既存のスレッドに返信を行なう場合には、各スレッドの一番下にある返信専用フォームより投稿してください。
質問毎にスレッドを作成してください。ただし、回答に対する質問はスレッド内への投稿してOKです。なお、1スレッド当りの記事数は500件で、これを超えると過去ログへ移動します。
名前の後ろへ半角#と任意の半角アルファベットor数字を加えると、名前の後ろに暗号化された10桁のIDが付加されます。
名前と10桁のID(トリップ)の間にある記号は「★…管理人(結城) ●…サブ管理人 ◆…一般ユーザ」を意味します。
管理人(結城)のレスは諸般の事情により遅いです。ご了承くださいm(_ _)m

【新作】実践COBOLプログラミング入門
ウチのサイトはVBA・VBScriptが中心のサイトですが、管理人は実はCOBOLer(コボラー=COBOL使いの意味)でもあります。その流でCOBOL本も書いてみました。COBOLを勉強したい方、よろしくです!

最速攻略 Excel VBA サンプル大全集
Excel VBAプログラマーにはサンプル集として、VBAを使わないExcelユーザーには便利アドイン(ツール)集として幅広く使える上、VBAサンプルやアドインのほとんどがExcel 97, 2000, 2002, 2003と幅広く対応!さらに、番外編のCD-ROM収録の綴じ込み付録にも、便利ツール・汎用クラスモジュールからゲームまでてんこ盛り!
新着スレッド
1: チェックボックスの貼り付け (1)   2: ACCESS2000での画像の操作 (6)   3: 初めてなんですけど (3)   4: 全部の列でマクロを走らせたい (3)   5: 7×7の魔方陣について…… (1)   6: プロシージャ単位でのイベントの同時起動について (2)   7: VBScriptでIEとIEコンポーネントブラウザの判別の仕方 (2)   8: FTPでファイルのダウンロード (2)   9: excel 2007について教えてください (3)   10: VBAの言語の意味がわかりません!! (2)   11: telnet コマンドの出力本語をテキストに出力するには?? (2)   12: 一番前に表示させたいのですが (6)   13: ACCESS 二重起動の防止について (2)   14:  簡単な質問ですみません (3)   15: VBAでシートAの範囲をシートBに値のみ反映させたいの・・ (5)   16: パスワード求める窓が閉じるまで待ってから処理を継続 (3)   17:  数字の桁の操作方法がわかりません (8)   18: DLソフト (1)   19: EXCEL2007のchart定義でパラメーターが無効のエラー (6)   20: ファイル読み込み&EXCEL羅列 (2)   21: 処理中のメッセージを表示させる (6)   22: CSV書き出し (4)   23: ボタンを貼り付けたセルの位置を取得するには? (3)   24: AccessVBA (2)   25: FTPでAccess接続する方法 (3)   26: ファイル名に枝番つけるには (7)   27: Excel グラフの塗りつぶしを半透明にする (1)   28: 最終列への入力 (3)   29: CSV書き出し (1)   30: エクセルからブログに投稿するには (3)  
チェックボックスの貼り付け
[1] るな - 2008/07/23 15:07
選択しているセルにコントーロールボックスのチェックボックスを貼り付けるマクロを作成したいのですが教えて頂けないでしょうか?

ACCESS2000での画像の操作
[1] 鹿丼 - 2008/07/22 11:11
現在、ACCESS2000を使用しています。
そこで、jpg画像をテーブルに保存・読み込み等の操作を行いたいのですが、やり方がわかりません。

VBAでのやり方を教えていただきたいのですが…


[2] YU-TANG - 2008/07/22 14:46
こんにちは、YU-TANG です。

> 現在、ACCESS2000を使用しています。
> そこで、jpg画像をテーブルに保存・読み込み等の操作を行いたいのですが、やり方がわかりません。
>
> VBAでのやり方を教えていただきたいのですが…

画像を何形式で読み込みたいのでしょうか?
OLEオブジェクトに変換して読み込みたいのか、元のファイルのままの
バイナリイメージを読み込みたいのかによって、まったく違う話に
なりますので。

以下、VBA サンプルコード付きの技術情報です。

1. OLEオブジェクトに変換して読み込みたい場合
http://support.microsoft.com/kb/198466/ja

2. バイナリイメージを無変換で読み込みたい場合(DAO)
http://support.microsoft.com/kb/210486/ja

3. バイナリイメージを無変換で読み込みたい場合(ADO)
http://support.microsoft.com/kb/194975/ja
http://support.microsoft.com/kb/255632/ja
http://support.microsoft.com/kb/258038/ja

ただし、1 は簡単に言うと Access 2002 以上では表示されなくなる
(=バージョンアップした途端にトラブル発生&DB作り直し)場合が
多いので、激しく非推奨です。

それでは。

[3] 鹿丼 - 2008/07/22 14:51
ありがとうございます!
jpg画像をバイナリで表示・登録できるようにしたいのですが、なんとかがんばってみます!

[4] YU-TANG - 2008/07/22 21:46
一点訂正。

> ただし、1 は簡単に言うと Access 2002 以上では表示されなくなる
> (=バージョンアップした途端にトラブル発生&DB作り直し)場合が
> 多いので、激しく非推奨です。

Access 2003 の誤りです(激しく非推奨であることに いささかの
変わりもありませんが)。

以下、MS 公式の参考リンクです。

Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

データベースにイメージを格納する
http://office.microsoft.com/ja-jp/access/HP052802251041.aspx

後者は、タイトルとは裏腹に、データベースにイメージを格納*しない*
方法についても言及されていますので、メリットとデメリットを天秤に
かけて検討されるとよいと思います。

それでは。

[5] 鹿丼 - 2008/07/23 13:50
お返事、ありがとうございます!

ADOでデータの登録を行っているため、バイナリデータの登録もADOでやろうとしてみたのですが、どうもうまくいきません。

やはり、SQLサーバー等が必要なのでしょうか?


[6] YU-TANG - 2008/07/23 20:48
うまくいかないとは、具体的にどのような状態を指していますか?
登録時に○○というエラーが出る、とかいろいろ有りえますが。

初めてなんですけど
[1] kusu - 2008/07/22 13:50
初めてVBAをはじめるんですが、まずは何からやればいいのかよく分かりません。なにかアドバイスがあればご指導お願いいたします。

[2] YU-TANG - 2008/07/22 15:27
こんにちは、YU-TANG です。

> 初めてVBAをはじめるんですが、まずは何からやればいいのかよく分かりません。なにかアドバイスがあればご指導お願いいたします。

月並みですが、書店に行って自分に合いそうな入門書を買いましょう。
入門書は、まさに「何からやればいいのかよく分か」らない方向けに、
何をやったらいいかプロの方がレクチャーしてくれる本です。
こちらを主宰していらっしゃる結城さんの著書にも言えることですが、
良い入門書には、間違いなくお金を払ってでも読む価値があると私は
思います。
Amazon で通販とかでもいいですが、本と人との相性というのも有るので、
可能であれば中身をあるていどパラ読みできた方がベターです。

あと、これも月並みですが、もし周りに訊ける人が居れば、訊きながら
やってみてください(相手の方の迷惑にならない範囲で、ですが)。
文章では伝わりづらくても、目の前で実際に操作しているのを見ていると
簡単に理解できるということは多々あります。

なんか「学問に王道なし」みたいな内容になりましたが、単に自分が
アホだから効率のいい学習法を知らないだけかもしれないです。
いろいろ意見がある中にこういういのもある、くらいに思っておいて
ください。

それでは。

[3] kusu - 2008/07/22 16:06
早速お返事いただきありがとうございます。早速書店に行って色々みてみようと思います。また、なにか分からないことがあったときはアドバイスお願い致します。(喜)

全部の列でマクロを走らせたい
[1] とび - 2008/07/19 22:07
下記のマクロにおいてD列にデータがある場合、
全てに同様にマクロを走らせたいのですが、
どのようにすればよろしいでしょうか?
よろしくお願いします。

Const keta As Long = 50
Dim s As Variant
Dim i As Long, j As Long, k As Long
Dim v() As Variant
    s = Split(Range("D1").Value, vbLf)
    k = 0
    For i = 0 To UBound(s)
        For j = 1 To Len(s(i)) Step keta
            ReDim Preserve v(k)
            v(k) = Mid$(s(i), j, keta)
            k = k + 1
        Next
    Next
    Range("D1").Value = Join(v, vbLf)


[2] YU-TANG - 2008/07/20 19:50
こんばんは、YU-TANG です。

> 下記のマクロにおいてD列にデータがある場合、
> 全てに同様にマクロを走らせたいのですが、

Dim i As Excel.Range
For Each i In Union([D:D].SpecialCells(xlCellTypeConstants), _
                    [D:D].SpecialCells(xlCellTypeFormulas))
    ' ここで処理したいサブルーチンを呼ぶ
    ' 例) i.Value = hoge(i.Value)
Next

…みたいな。
D 列に数式が有り得ないなら、xlCellTypeFormulas を Union する
必要はありません。念のため。

それでは。

[3] とび - 2008/07/21 16:51
YU-TANGさん

お忙しい中、ありがとうございます。

7×7の魔方陣について……
[1] キム・ミンチ - 2008/07/21 07:34
講義の宿題で7×7の魔方陣をVBEで解いてこいといわれました。
しかしながら自分のスキルではどうにもなりませんでした。

自分はIFやDim等までしか習っていません。
課題の注意点としては

1から49までの数値を検出
「1」は1行目の中央(4列目)に書き出す
基本的に、数値の書き出す順番は斜め上に移動
また、書き込む数値を「7」で割った場合の余りが「1」の時
書き込みの場所は下方向に移動する。

枠をはみ出した場合
  上にはみ出した(行)の場合  7行目に
  右にはみ出した(列)の場合  1列目に 
それぞれ移動

以上のような条件でエクセルのVBEを用いて解きたいのですが、どうにも分かりません。
心優しき方は教えていただけると幸いです。
よろしくお願いします。




プロシージャ単位でのイベントの同時起動について
[1] TAMA - 2008/07/17 16:36
 仕事上、あるブックを開いてcalculateイベントを実行しているのですが、
これと平行して違うブックでcalculateイベントを実行したときに両方の計算
するタイミングが重複した場合、計算が遅くなったりすることはありますでし
ょうか?一応、

Sub 計算2()

    Dim myDate As Date
    myDate = DateValue(Now())
    Application.OnTime TimeValue("03:00:00") + (myDate), "計算"
    Application.OnTime TimeValue("03:15:00") + (myDate), "計算"

End Sub

 のようにしてかぶらないようにこちらから指定する方法を考えたのですが、
もし、ご存知の方がいらっしゃいましたら、お教え願えませんでしょうか。お
願いします。

[2] TAMA - 2008/07/19 21:13
 すみません。会社の上司に聞いたら人の認識できないくらいの速さで計算されるとのことで、解決しました。
 失礼いたしました。

VBScriptでIEとIEコンポーネントブラウザの判別の仕方
[1] いし - 2008/07/17 20:25
VBScriptで、
IEの右クリックから呼び出した場合と、
IEコンポーネントブラウザの右クリックから呼び出した場合を、
見分ける方法について教えて下さい。

navigator.appnameやnavigator.useragentは、
IEコンポーネントブラウザから呼び出した場合でも、
IEそのものに成ってしまって、区別出来ないので、、、

どうぞよろしくお願い致します。

[2] YU-TANG - 2008/07/20 19:21
こんばんは、YU-TANG です。

> VBScriptで、
> IEの右クリックから呼び出した場合と、
> IEコンポーネントブラウザの右クリックから呼び出した場合を、
> 見分ける方法について教えて下さい。

ないと思いますが…。

そもそも、なぜそのようなことをしたいのでしょうか。
自分の感覚だと、Web ページ内からコンテナを識別する必要がある
状況というのは、よほど特殊というか、ちょっと想像が付かないです。
IE も Web Browser コントロールも、同じレンダリング エンジンを
ラッピングしているだけですから、Web ページ内から見たときに
違いが何も無いのが当然なわけで、違いが無いならふつうはそれを
気にする必要も当然無いはずなのですが。

何となく手段を間違っている気がしますので、いったい何のために
そのような手段を取ろうと思ったのか、その辺を明らかにすれば、
もっと単純で現実的な代替手段があるかもしれません(ないかも
しれませんが)。

それでは。

FTPでファイルのダウンロード
[1] さとる - 2008/07/17 11:28
現在、VBAを利用してリモートサーバにFTP接続を行い、リモートサーバ上のファイルをダウンロードする段階でつまづいてます。

・問題点
ファイルをダウンロードしないで、ファイルが消えていく…サーバのログからして、FTP接続は正常に行えています。

・ソースの一部
…省略…
Sub prcFTPDownLoadSample()

Dim lngRC As Long
lngRC = fcInternetOpen

If lngRC = 0 Then

lngRC = fcFTPConnect("192.168.***.***", "****", "****")

If lngRC = 0 Then
Call fcFTPGetFile("/work/test.txt" _
, "C:\test.txt" _
, FTP_TRANSFER_TYPE_ASCII)
Else
MsgBox ("失敗しました。")
End If
End If

Call fcFTPDisConnect
Call fcInternetClose
MsgBox ("処理が終了しました。")
End Sub

Function fcFTPGetFile(dRmt As String, dLc As String, dMd As Long) As Boolean

fcFTPGetFile = FtpGetFile(lngFtpHnd _
, dRmt _
, dLc _
, False _
, FILE_ATTRIBUTE_NORMAL _
, dMd + INTERNET_FLAG_RELOAD _
, 0)

End Function
…省略…

VBAを始めたばかりの初心者ですがご教授いただけますようお願いいたします。

[2] YU-TANG - 2008/07/20 19:07
こんばんは、YU-TANG です。

> ・問題点
> ファイルをダウンロードしないで、ファイルが消えていく

どこからでしょうか?
サーバからファイルが消えるのか、クライアントにあるファイルが上書き
されずに消えるのか、分かりませんが。

> ・ソースの一部
> …省略…

省略されると検証の仕様が無いです。

たとえば定数の宣言漏れが原因だったりしても、これでは元のコードでは
きちんと宣言されていて、転記時に省略されただけなのか、元のコードにも
無いのか、エスパーさん以外にはまったく判別がつきません。

まず結城さんのサンプル通りの単純なソースで動くことを確認してみては
いかがですか。それで動くなら、いま作っているコードにそれと違う部分が
必ずあるはずで、そこに問題があることが容易に推測できます。
逆にサンプルどおりで動かないなら、環境依存か単純なパラメータ間違い
かもしれません。

それでは。

excel 2007について教えてください
[1] koji - 2008/05/26 22:23
すみません、質問が2点あります。

1.
excel 2003以前の場合、Shiftを長押ししてファイルをダブルクリックすると、マクロの実行を中止して開く事が出来ますが、excel 2007の場合はこの方法だとマクロを中止する事が出来ません。
どのようにすれば、excel 2007でも同じようにマクロの実行を中止出来るのかどなたか教えてください。

2.
excel 2003以前の場合、以下のような構文だと印刷プレビューのメニューバーで[閉じる]や[ファイル]→[印刷]が利用出来たのですが、excel 2007ではUIリボンの印刷プレビューメニューが表示されず、なおかつexcel自体が動かなくなってしまいます。
ただし、画面の更新をしない部分の構文を消すと印刷プレビューメニューは表示されます。でもこの場合、必要以上に印刷対象のシートに移動してしまいます。
画面の更新をしない構文を生かして、UIリボンの印刷プレビューメニューも生かす方法をどなたか教えてください。

------------------------------------------------
「オープニング」シートにユーザーフォームを表示させて、印刷ボタンを押した場合の構文

Sub 印刷()

'   画面を更新しないようにする
Application.ScreenUpdating = False

 Sheets("用紙").Select
     X = MsgBox("用紙を印刷プレビューしますか?", 1 + 32, "印刷プレビュー")
          
        Select Case X
          Case 1
      ActiveWindow.SelectedSheets.PrintPreview
            End Select

        Sheets("オープニング").Select
        Range("H17").Select

'   画面を更新できるようにする
Application.ScreenUpdating = True

End Sub
------------------------------------------------


どうか宜しくお願いします。

[2] おせっかい - 2008/06/20 08:51
1.に関してですが、プレビューでとまったときに、マクロを中止するのではなく、プレビューを中止するには、F4とALTキーを押すとプレビューが閉じて、マクロが動きます。
2.については、私も色々と試してみましたが、PrintPreviewの構文の前後をApplication.ScreenUpdating = True とApplication.ScreenUpdating = Falseではさんで対処しました。きれいな対処法ではありませんが、参考になれば

[3] koji - 2008/07/16 08:29
おせっかいさん、返事が遅くなってすみません。m(__)m
PrintPreviewの構文の前後をはさむで解決いたしました。
ありがとうございました。

VBAの言語の意味がわかりません!!
[1] ぱんやしゃん - 2008/07/14 11:43
単語の意味がわからないんです。・・・
教えてください!!

こんなのです↓
「Selection」とかー
「ShapeRanga」とかー
「ScaleWidth」とかです
お願いします
教えてください!!

[2] kanabun - 2008/07/14 17:46
> 「Selection」とかー
> 「ShapeRanga」とかー
> 「ScaleWidth」とかです
コード上の 分からない単語のうえにをマウスでポイントしてから、
[F1]キーを押してください。ヘルプが表示されます。
説明をよんでも分からないことがあったら、分からない部分を
掲示板で質問してください。
ただし、
> ShapeRanga
はスペルが正しくないので、[F1]キーを押す以前に ShapeRangeに
修正しておいてください。

[F1]キーを押してもヘルプが起動しないときはOfficeCDから
ヘルプをインストールしてください。


MT-BOARD v0.5
Copyright (C) Kent Web 2002