Profileyoukey spacesBlogLists Tools Help

Blog


    April 20

    ホームページを作る(Excel)

     ここに書き込むのは何年ぶりでしょう? なんとか細々と生きていました(w
     
     さて、今回はブログっぽいホームページをExcelマクロで作成してみたのでご紹介します。
     実物はここです ⇒ http://youkeyspace.com/
      ・「ROOM」ごとにシートを用意(「あれこれROOM」「紅茶ROOM」「映画ROOM」の3シート)
      ・各ROOM(シート)は表形式で入力(フィールドは「タイトル」「内容」「更新日」の3つででOK)
      ・各ROOM(シート)ごとに1クリックでHTMLファイルを作成できるし、
       全ページのHTMLファイルを1クリックで作成することもできる
      ・cssは別途用意
     HTMLがわかればとても簡単にできます。
     cssは別に用意するので、デザイン(色、ヘッダー部画像など)の変更は簡単です。
     各ページはマクロでテーブルを作成(<table>タグ)しているので、この形式の変更は
    無理ですが、サイズはcssで変更可能です。
     
    そのうち少しずつマクロをご紹介していけたらと思います。 
     
    追伸:
    [amazon.co.jp で買う]ボタンを表示させたくないのですが、方法がわかりませんでした。
     
    October 14

    マクロを複数のブックで共有する(Excel)

     
    久しぶりに覚書です。
     
    あるExcelのマクロ(VBA)をつくったのですが、毎回新しいデータ(Excelのブック)が
    送られてくるので、その都度マクロをコピー&ペーストしていました。
    でもこれは非効率。そこで、ひとつのマクロを複数のブックで共有する方法を調べ
    ました。
     
    ■方法
     『個人用マクロブック』にマクロを保存します。
     個人用マクロブックの名前は『PERSONAL.XLS』でした。 
     
    ■個人用マクロブックの作り方
     [ツール]メニューの[マクロ]の[新しいマクロの記録]を選択して、表示したダイアログ
     の「マクロの保存先」に『個人用マクロブック』を指定します。
     その後[OK]ボタンをクリックしてマクロの記録を開始し、何もせずに記録を終了します。
     
     注意:
     [ツール]メニューの[マクロ]の[マクロ]を選択して表示する「マクロ」ダイアログでは
     『個人用マクロブック』は指定できません。
     
    ■個人用マクロブックにマクロを追加する
     『個人用マクロブック』は最初は非表示になっているので、[ウインドウ]メニューの
     [再表示]を選択して表示させます。
     その後、[ツール]メニューの[マクロ]の[マクロ]を選択して編集します。
     
     
     個人用マクロブックのシートに参照用の定数データを追加したのですが、
    再び「表示しない」設定にしておかないと、Excelブックを開くたびに表示されて
    わずらわしかったです(苦笑)
    ちなみに、個人用マクロブックはこの↓フォルダにありました。
    C:\Documents and Settings\xxx\Application Data\Microsoft\Excel\XLSTART
    スタート時に読み込まれるファイルはここに置けばいいのかな?
     
     
     
    February 10

    Excelでカレンダ(VBA)

    多くの人は、仕事でスケジュールを書くときに何を使っているのでしょう?
    Microsoft Project とかかな?
    わたしはラフスケッチはExcelにカレンダを書いてやっているのですが、
    カレンダを手入力するのは面倒。そこでカレンダを挿入するマクロを
    作ってみました。
     
    年月を指定して、どこかセルを選択してから[カレンダ挿入]ボタンを
    クリックすると、図のような1月分のカレンダを挿入します。
    簡単なコード(VBA)でできます。うるう年などの難しい計算も必要
    ありません。
     
    <<2006.2.13追加>>
    お待たせしました。コードをご紹介します。
    エラー処理とかしてないので、適当に追加してください。
    コードが変でも怒らないでね。
    年月を指定するところはリストにしてます。
     
    ----------
    Private Sub cmdButton_Click()
        Dim strYear As String
        Dim strMon As String
        Dim week As Variant
        week = Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")
        Dim nFontColor As Integer
        Dim nCnt As Integer
        Dim cel As Range
        Dim nline_cnt As Integer
            
        '指定された年月
        strYear = Cells(2, 2)
        strMon = Cells(2, 4)
       
        '1~3行目には出力できない
        If 4 > ActiveCell.Row Then
            MsgBox "1行目から3行目までには出力できません。" & vbCrLf & _
                   "出力する先頭のセルを選択後、ボタンをクリックしてください。", vbExclamation + vbOKOnly
            Exit Sub
        End If
       
       
        '月を出力
        Set cel = Cells(ActiveCell.Row, (ActiveCell.Column) + nCnt)
        cel = CStr(strMon)
        Set cel = Range(Cells(ActiveCell.Row, (ActiveCell.Column) + nCnt), Cells(ActiveCell.Row, (ActiveCell.Column) + nCnt + 6))
        cel.Interior.ColorIndex = 17
        cel.MergeCells = True
        cel.HorizontalAlignment = xlCenter
     
        '曜日を出力
       
    For nCnt = 0 To 6
            Set cel = Cells(ActiveCell.Row + 1, (ActiveCell.Column) + nCnt)
            cel = week(nCnt)
            cel.Interior.ColorIndex = 15
        Next
        
        '日付出力
        nline_cnt = 2
        For nCnt = 1 To 31
            '曜日を取得する
            On Error Resume Next
            Err = 0
            this_date = Weekday(strYear & "/" & strMon & "/" & CStr(nCnt))
            If Err <> 0 Then
                Exit Sub
            End If
      
            '曜日の色
            Select Case this_date
                Case 1: '日曜日
                    nFontColor = 3
                    nline_cnt = nline_cnt + 1
                Case 7: '土曜日
                    nFontColor = 5
                Case Else
                    nFontColor = 1
            End Select
      
            '日を出力する
           
    Set cel = Cells((ActiveCell.Row) + nline_cnt, (ActiveCell.Column) + this_date - 1)
            cel = nCnt
            cel.Font.ColorIndex = nFontColor
       Next
      
    End Sub
     
    ----------
     
    September 23

    MOT Expert

    先日MOT事務局から
    のお知らせがきていました。(一応MOT取得者なので)
     
    この資格、どのくらいニーズがあるのか気になります。
    わたしは今のところ「MOT Expert」の取得条件を満たしていない
    のですが、もしニーズがあるのなら考えてみようかな、と。
     
    MOTはWord2003Excel2003しかもっていないのですが、Access
    VBAでプログラムを書いていたこともあってわりと好きです。
    会社で発表する機会が多いのでPowerPointも使い慣れてるし、
    Outlookは毎日使ってます。
     
    しかも「経営」とか「業務改善」とか興味があったりします。
    財務諸表がわかるようになりたくて始めた簿記は、面白くなっちゃって
    独学で2級までとってしまいました。
    せっかくなので何か人の役に立つことで使えるとうれしいのですが。
     
    まぁ、プログラムをかくのも好きなんですけどね。
    July 15

    PDF変換でページが増える(Word)

    先日ある資料を作ったときのことです。
    Wordで作ってPDFに変換したのですが、Wordで125ページの資料が、
    PDFに変換すると134ページになるんです。
    変換されたPDFファイルを見てみると図が大きくなっていました。
    何が原因かと調べてみたら・・・。
     
    【原因】
     資料にはたくさんの図があるのですが、
      ・図を挿入ではなくリンクしている
      ・印刷オプションの印刷前にリンクを更新するオンである
     これらが影響したようです。
     
    【対処方法】
     印刷オプションの印刷前にリンクを更新するオフにしたら大丈夫でした。
     
    会社のPCで作ったのですが、PDFに変換するのに40分もかかりました。
    その間PCで他の作業もできないし、ちょっと直すのも大変ですね。
    仕方がないのでお昼休みに変換しました。
    ちなみにPDFのバージョンは6.0です。7.0はもう少し早いのかな?
    April 22

    該非判定 (Microsoft Access)

    先日、Microsort Access 2000 を使ったアプリケーションの
    該非判定(輸出管理)をしました。
    Access 2000 のランタイムを一緒に配布するので
    Access 2000 の輸出に関することを調べたのですが、
    ちゃんとMicrosoftのHPに出ていました。

    輸出に関するQ&A
    パラメータシート

    Access 2000 のパラメータシートをダウンロードすると、
    提供技術名に Internet Explorer  と記載されているのですが、
    これはこれでよいのだそうです(規制対象が Internet Explorer 
    の暗号化機能だからだそうです)。

    ちなみに Access 2000 は『EAR規制対象』でした。

    April 19

    Outlook 2003 をインストールしました

    やっとOffice2003を買ってもらえたので、インストールしました。
    仕事の関係上、Accessは旧バージョンを残す必要があるのですが、それ以外はすべてOffice2003に置き換えました。Access は2000、2002、2003 が共存中です。

    一番使いたかったのはOutlookです。
    マクロ、Outlook Today をはじめ、各種設定は引き継がれたようです。
    以前こちらでご紹介したマクロも問題なく動作しています。

    Outlook 2003 で使いやすくなったのは次の点です。(※あくまで個人の感想です)
     ・フラグの色分け
     ・検索フォルダ
       フラグを設定したメールや未読のメールを簡単に探し出せます
     ・他の人の予定表を並べて表示できる
       これができるのはExchangeを使っているからかな?

    逆に使いにくくなったのは、(※あくまで個人の感想です)
     ・Outlook 2002までは左側のグループを自由に作成できたのですが、それができなくなったこと
    です。お気に入りフォルダにショートカットは追加されるのですが、これを階層構造できるといいのに...。と、好き勝手に思っています。できるのかな??

    便利な機能や使い方を発見したらご紹介します。

    January 25

    InfoPath 2003

    今日は『Microsoft Office InfoPath 2003』のセミナーに行ってきました。
    InfoPath をひと言で言うと、、、XML対応製品です(かな?)。XMLファイルを作成したり、Webサービスと連携できたりします。 Microsoft Office Professional Enterprise Edition 2003 に含まれています。

    初版とSP1ではバージョンアップくらいの差があるそうです。使うのであればSP1をインストールするようにとのことでした。本日はSP1の説明だったのですが、ある程度のことはノンプログラミングで可能でした。SP1の前はごりごりコードを書かなくては動かなかったそうです。UIを作成するときのコントロールも揃っていて使いやすそうでした。あとは何に使うか、です。今扱っているWebアプリにInfoPathを使えないかな。

    January 09

    InterConnect について

    先日の無償セミナーでは『Microsoft Office InterConnect 2004』についても聞けたので、今日はInterConnectの感想です。

    InterConnect は「電子名刺交換ソフトウェア」です。
    紙のデータを電子データに置き換えるというのは今の流れにあっているのですが、実際に交換するには、
     ・Outlook2003が必要
     ・双方が『InterConnect』を使用していなければならない
    というのが難しいかな...と思いました。
    閉じた環境で使用するのであればそれなりに使えるかも知れませんが...。

    まぁ、道具は使いようですからね。

    January 04

    仕事始め ( Microsoft OneNote)

    今日から仕事始めの人は多いのではないでしょうか。
    わたしは今日も休暇をとっています。明日はリハビリ、明後日から仕事を開始する予定です。
    いつも思うのですが、お休みってあっという間ですね。お休みに入る直前が一番楽しいような...。

    お正月休みに脳が溶け出すほど休んでしまったので、今日は軽くジャブです。
    お正月休み前にMicrosoft製品の無償セミナーに行ったのでそのご報告を。

    OneNote』という製品のセミナーに行ってきました。
    OneNoteはいわゆる(?)デジタルノートです。テキストや音声、グラフィックスなどの情報をまとめることができます。紙のノートのように好きなところに書くことができます。デモを見て「いいな」と思ったのは
     (1)Web上の領域の取り込み
     (2)データの結合と分割
     (3)ノートフラグ
    です。(1)はWebブラウザ上で取り込みたい領域を選択し、OneNote上にドラッグ&ドロップするとOneNoteに追加できるというもの。URLも追加されます。
    (2)は任意の場所に挿入した文字列を別の文字列上にドラッグすると2つの文字列が1つに結合し、また、1つの文字列の任意の部分を選択して別の場所にドラッグすると文字列が分割するというもの。
    (3)は追加したテキスト等にフラグを設定すると、ノートフラグの概要作業ウインドウで選択などの操作が簡単にできるようになるもの。

    思っていたより使いやすそうでした。ただ、VBAがないのが残念かな。

    December 16

    「Outlook Today」のカスタマイズが保存されない

    久しぶりに「Outlook Today」をカスタマイズしようとして遭遇した現象です。
    Outlook 2002 ですが、原因がわかってみれば以前から引きずっていたような...。

    【現象】
    Outlook 2002 を使っているのですが、「Outlook Today」のカスタマイズが保存されません。以前は保存できたのですが...。

    【原因】
    「Outlook Today」のプロパティの[ホームページ]タブの「アドレス」に存在しないフォルダが指定されていました。(プロパティは(「Outlook Today」を右クリックして、ショートカットメニューから選択して表示できます)

    Outlook95くらいからOutlookを使っていて、個人フォルダの情報を引き継いできたのですが、それがいけなかったのかも。

    【解決方法】
    「Outlook Today」のプロパティの[ホームページ]タブの[既定に戻す]ボタンをクリックします。

    わたしの環境では「ランタイムエラー」が表示されましたが、Outlookを再起動すると問題なく動作するようになりました。

    【その他】
    いままで何度かOutlookをアップデートしてきましたが、アイコンが表示されない部分がありました。あまり気にしてはいなかったのですが、今回の問題を解消するとアイコンが表示されるようになりました。なーんだ。

    December 14

    Accessの再配布可能パッケージで問題発生(補足)

    昨日書いた内容への補足です。

    以前も同じ現象が、、、
    『インストール中に「システムにある一部のシステムファイルが最新ではないので…」 とメッセージが出て、
    再起動してもまた同じメッセージが出る』という問題ですが、2001年11月ごろにも経験したことがあります
    (もう3年も経つのですね...)。
    そのときは、Windows 2000 の Service Pack 1 をインストールすると解決しました。

    目に見える現象は同じでも、いろいろと原因があるのですね。

    December 13

    Accessの再配布可能パッケージで問題発生

    ちょっと妙なタイトルですが(相変わらず日本語が下手で)、、、
    本日ディストリビューション ウィザードで作成したAccess2000のアプリケーションのインストーラで
    ある問題が発生しました。

    【問題】
     WindowsXPにはインストールできるのにWindows2000にインストールしようとすると次のメッセージ
     がでました。

      『システムにある一部のシステム ファイルが最新ではないので、セットアップを続行できません。
       セットアップでこれらのファイルを更新しても良い場合は [OK] をクリックしてください。もう一度
       セットアップを実行する前に Windows を再起動する必要があります。システム ファイルを更新
       しないでセットアップを終了する場合は [キャンセル] をクリックしてください。』

     メッセージにしたがって再起動して、再度インストールしようとするとまた同じメッセージが出ます。
     2回チャレンジしたのですが、状況は同じでした。
     

    【原因】
     インストーラをXPで作成したことが原因のようです。Microsoftのサイトに次のような情報がありました。
      [OFF2003] [PRB] Office オートメーションで、RPC スタブとの互換性がないというエラーが発生する

     これによると、

     『Microsoft Visual Studio または Microsoft Platform SDK に付属の再配布可能なバージョン
      ではなく、Windows XP 版の OLE オートメーション システム ファイルがインストールされた場合に
      発生します。Oleaut32.dll の以前のビルドと異なり、
    Windows XP 版の Oleaut32.dll は以前の
      バージョンの Windows オペレーティング システムでは使用できません。

     なのだそうです。DLLのバージョンも記載されていました。これを見るとまさしくそのバージョンでした。

      OLE オートメーション ファイル】 Windows XP版】 Visual Studio再配布可能バージョン】
       Oleaut32.dll           3.50.5014.0     2.40.4275.1
       Asycfilt.dll             3.50.5014.0     2.40.4275.1
       Stdole2.tlb            3.50.5014.0     2.40.4275.1
       Olepro32.dll            5.0.5014.0     
    5.0.4275.1

     重要なことは、OLE オートメーション システム ファイルのうち最初の 3 ファイルはビルド番号が同じ
     であること
    、そして Windows XP 版の Oleaut32.dll のバージョン番号が 2.40 ではなく 3.50 で
     始まること
    だそうです。つまり、3.50で始まるものは使ってはいけないということですね。

    【解決策】
     Windows2000で作るというのがよいのかも知れませんが、セットアップしている時間もなかったので
     次のようにしてみました。

     以前Windows2000で同様に作成したインストーラがあったので、
      (1)以前作成したCABファイルを解凍し、
        (2)インストール時に必要なファイル(Setup.lst の [Bootstrap Files]に記述されている)
        を今回作ったCABファイル(これも解凍しておく)に上書きコピーする
      (3)再び配布用のCABファイルを作成する(ディストリビューション ウィザードは使わずに
        圧縮して作成)
     これでOKでした。

    【感想】
     インストーラを作るのにこんなに時間がかかるとは思いませんでした・・・。

    December 12

    Outlook2003を使いたい

    Outlook2003 を使っている人は多いのでしょうか?わたしは会社ではまだ 2002 を使っています。

    先日Microsoftの某無償セミナーで Outlook2003 の機能紹介をしていたのですが、2002 より全然よいですね!いいなぁ、と思った機能は、
     (1)テーマでの並べ替え
     (2)フラグの色
    です。(1)では同じ内容に関するメールをスレッド表示してくれます。フォルダをいくつも作る必要がないのがいいですね。「同じ内容」というのは件名で見ているようです(ある件名とそれに対する返信)。
    (2)は関連する内容を同じ色にしたり、色に"要返信"などの意味をもたせたりしていろいろ活用できそうですね。

    いつになったら会社(というか、所属部署)の Officeは 2003 になるのでしょう。

    【追加】 <--2004/12/14
     今日Outlook2002で確認してみたら「テーマ別」での並べ替えがありました。
     2003との違いはスレッド表示でしょうか?
     2002では微妙にスレッド表示されているところもあるのですが、ほとんどないように思います。

    October 25

    図をセルに合わせる(Excel)

    今日はExcelの質問(相談?)がありました。

    【質問】
    図をセルにあわせて配置したいんだけど、簡単な方法はない?

    【回答】
    [ALT]キーを押しながら図を移動するとセルにあわせて配置できます。

    ちょっとしたことだけど、便利ですよね。

    October 14

    値集合ソースを動的に設定するときの問題(Access)

    今日はAccessについてです。よくわからない現象に悩まされています。

    コンボボックスを「非連結」にし、動的に値集合タイプや値集合ソース、列数などを設定しています。
    ところが、最初に連結列に指定したフィールドのデータ型が数値型だと、値集合タイプ/ソースを変えて連結列をテキスト型のフィールドにしても、そのコンボボックスには数値しか入力できないという現象が発生しました(コンボボックスのリストにはテキスト型のデータが表示されるのですが、選択すると「このフィールドに入力した値が不正です。たとえば数値型のフィールドに文字列を入力しました」とメッセージが出ます)。

    これでは困るので、このコンボボックスの初期値にテキスト型のフィールドを連結列として設定しました。最初に設定(選択)したデータがテキスト型だと次に連結列に設定したデータの型が数値型でも大丈夫なようです。
    ところが、いくつかのフォームに関してはこれで問題なく動作したのですが、あるフォームだけは解決しませんでした。コンボボックスの設定は同じです。なぜでしょう???

    Access2000と2002で発生しています。ふ~む。

    October 13

    Outlookのメモを付箋として使う(Outlook)

    今日はちょっと趣向を変えて(?)、個人的に使っているマクロ(自作)をご紹介したいと思います。

    会社では普段Outlookを使っていて、メモを付箋として使おうとしました。でも、OutlookのメモはOutlookの終了と共に閉じ、Outlookを再起動しても開いてくれないんですよね。
    そこで、Outlookの起動と共にメモを開くマクロをつくりました。起動と共に開くのは分類が「起動時に表示」のメモだけです。(Outlook2002、2003で動作確認済みです)

    【使い方】
    1.メモを作成し、メモの分類を「起動時に表示」にします。「起動時に表示」はデフォルトでは存在しないので
      追加してください。
    2.マクロのセキュリティを「」にします。
      Outlookの[ツール]メニューの[マクロ]の[セキュリティ]を選択して設定します。
    3.マクロを貼り付けます。
      ①[ツール]メニューの[マクロ]の[Visual Basic Editor]を選択し、
      ②プロジェクトエクスプローラの「ThisOutlookSession」をダブルクリックしてコードエディタを開き、
      ③次のマクロを貼り付けます。

    -----↓ここからマクロです↓-----
    ' Outlook起動時
    Private Sub Application_Startup()
        Dim myNameSpace As NameSpace
        Dim myFolder As MAPIFolder
        
        Set myNameSpace = Me.Application.GetNamespace("MAPI")
        Set myFolder = myNameSpace.GetDefaultFolder(olFolderNotes)
        
        DisplayNote myFolder
       
        Set myFolder = Nothing
        Set myNameSpace = Nothing
     End Sub


    Private Sub DisplayNote(myFolder As MAPIFolder)
        Dim nFolderCnt As Integer
        Dim objNoteItem As NoteItem
       
        For Each objNoteItem In myFolder.Items
            If objNoteItem.Categories = "起動時に表示" Or _
               InStr(1, objNoteItem.Categories, ", 起動時に表示", vbTextCompare) Or _
               InStr(1, objNoteItem.Categories, "起動時に表示, ", vbTextCompare) Then
                objNoteItem.Display Modress
            End If
        Next
        
        nFolderCnt = myFolder.Folders.Count
        For nCnt = 1 To nFolderCnt
            DisplayNote myFolder.Folders(nCnt)
        Next

    End Sub
    -----↑ここまでマクロです↑-----


    自分でいうのも変ですが、思ったより便利でした。
    少しでも工夫すれば、よくなるものですね。また何か思いついたら作ってみようと思います。

    October 06

    折れ線グラフの縦軸と横軸を入れ替える(Excel)

    今日はこんな質問がありました。

     

    【質問】
    Excelの折れ線グラフの縦軸と横軸を入れ替えたいのですが。

    【回答】
    それは無理だと思います。

     

    調べたところ無理だと思われたのでこのように回答したのですが、縦軸と横軸を入れ替える方法はあるのでしょうか??

    September 23

    ファイルを使用中のユーザがいるか知りたい(Access)

    今日はめずらしくAccessの質問がありました。とりあえず回答しましたが・・・(汗)。

    質問:
    ファイルを使用中のユーザがいるか知る方法はありませんか?

    回答:
    Accessの機能としてはないようです。
    メニュー画面を開くときにログインユーザのネットワークIDを取得し、メニュー画面を閉じるとき(アプリケーションを終了するとき)に該当するネットワークIDを削除するというのではいかがでしょう。WindowsAPIのGetUserName()が使えます。
    サンプルを作ってみました。サンプルではファイルを使用しているユーザのネットワークIDとコンピュータ名がわかるようにしました。

    ~*~*~*~  ここからサンプルです  ~*~*~*~
    ●はじめに

    このサンプルを使うときは、つぎのようなテーブル(フィールド2つ)とフォーム(テキストボックス2つ配置)を準備してください。

     1. テーブル(名前:T_1)
     (1)フィールド名:UserID     データ型:テキスト型  サイズ:255
     (2)フィールド名:CompName  データ型:テキスト型  サイズ:255

     2. フィールド(名前:F_1) ←レコードソース:T_1
     (1)テキストボックス  名前:UserID     コントロールソース:UserID
     (2)テキストボックス  名前:CompName  コントロールソース:CompName

     

    ●サンプルの動作
    フォームを開くとユーザIDとコンピュータ名がテーブルに追加され(同時にフォームに表示され)、フォームを閉じると該当するユーザIDとコンピュータ名のレコードがテーブルから削除されます。

     

    ●フォーム モジュール(フォーム F_1 に貼り付けてください)
    =====↓ ここから ↓=======================================
    Option Compare Database
    Option Explicit

    Private Sub Form_Close()
        Dim strSQL As String
        Dim strUserID As String
        Dim strCompName As String
       
        strUserID = GetUserNameString()
        strCompName = GetComputerNameString()
        strSQL = "DELETE * FROM T_1 WHERE UserID = '" & strUserID & "' AND " & _
                 " CompName = '" & strCompName & "';"
        DoCmd.RunSQL strSQL
       
    End Sub

    Private Sub Form_Load()
        Dim strString As String
       
        If 0 < DCount("*", "T_1") Then
            DoCmd.RunCommand acCmdRecordsGoToNew
        End If
       
        strString = GetUserNameString()
        Me!UserID = strString
       
        strString = GetComputerNameString()
        Me!CompName = strString
      
        DoCmd.RunCommand acCmdSaveRecord
       
    End Sub
    =====↑ ここまで ↑=======================================

     

    ●グローバルモジュール(グローバルモジュールに貼り付けてください)
    =====↓ ここから ↓=======================================
    Option Compare Database
    Option Explicit

    'API 関数の宣言
    Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

    '---------------------------------------------
    '関数名 : GetUserNameString
    '機 能 : ユーザー名を取得します
    '引 数 : なし
    '戻り値 : String  ユーザー名
    '---------------------------------------------
    Public Function GetUserNameString() As String
        Dim strName As String * 256     '文字列バッファ
        Dim lngSize As Long             '文字列の長さ
        Dim lngRet As Long              'API関数の戻り値
       
        On Error GoTo ErrorHandle
       
        lngSize = Len(strName) - 1
        lngRet = GetUserName(strName, lngSize)              'API関数
        If lngRet = 0 Then
            'エラーが発生した場合
            GetUserNameString = ""
        Else
            'API関数正常終了
            GetUserNameString = Left(strName, lngSize - 1)  '有効文字列のみを返す
            Exit Function
        End If
    ErrorHandle:
        'エラーが発生した場合
        GetUserNameString = ""
    End Function


    '---------------------------------------------
    '関数名 : GetComputerNameString
    '機 能 : コンピュータ名を取得します
    '引 数 : なし
    '戻り値 : String  コンピュータ名
    '---------------------------------------------
    Public Function GetComputerNameString() As String
        Dim strName As String * 256     '文字列バッファ
        Dim lngSize As Long             '文字列の長さ
        Dim lngRet As Long              'API関数の戻り値
       
        On Error GoTo ErrorHandle
       
        lngSize = Len(strName) - 1
        lngRet = GetComputerName(strName, lngSize)          'API関数
        If lngRet = 0 Then
            'エラーが発生した場合
            GetComputerNameString = ""
        Else
            'API関数正常終了
            GetComputerNameString = Left(strName, lngSize)  '有効文字列のみを返す
            Exit Function
        End If
    ErrorHandle:
        'エラーが発生した場合
        GetComputerNameString = ""
    End Function
    =====↑ ここまで ↑=======================================

    ※GetUserNameString()とGetComputerNameString()は次のサイトにあったものを参考にさせていただきました。
      ありがとうございました。
     http://www.accessclub.jp/bbs2/0001/beginter00587.html

     

    September 21

    図を少しだけ動かす(Word)

    今日はWordの質問がありました。

    質問:
    図を少しだけ動かしたいのにできない。

    回答:
    [ALT]キーを押しながら
    図を移動させてください。通常はグリッド線に沿って移動しますが、[ALT]キーを押すとグリッド線を無視して移動させることができます。


    ちょっとしたことですが、知らないとイライラしますよね。