当サイトご案内


  • クリックで応援っ!!

    人気blogランキング


     

    いらっしゃいませ。

     

    「The徒然★Re-Mix」へようこそ。

     

    徒然草序段

     

     「つれづれなるまゝに、日暮らし、硯にむかひて、心にうつりゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ」

     

     の、ように、このブログでは硯の代わりにパソコンに向かって「心にに移り行く」、「よしなしごと」を「そこはか」となく「書きつく」ってます。

     

     それでは、ごゆっくりと当ブログをご覧下さい。

     

     管理者:きかてぃけい

     

    応援よろしくです

    人気blogランキング


無料ブログはココログ

おすすめ(?)サイト

アクセスアップとか

カテゴリー「Excel/VBA」の記事

2009年4月18日 (土)

Excel/VBA備忘録(14)ある範囲のデータを(リンクされた)図として別の場所に貼り付ける『カメラ』機能を使う

 たまにエクセル(Micorosoft Excel)で関数とかオプション、マクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 久々のExcel話です。

 Excelのシートを他のブックのシートにリンクしようと思った時、例えば、結果を表示したいセルに、

 =[Book2]Sheet1A1

 だなんて数式を入れれば良い場合なんかもありますが、セルのフォームとか、すべての情報をリンクできるわけでは無いんですよね。

続きを読む "Excel/VBA備忘録(14)ある範囲のデータを(リンクされた)図として別の場所に貼り付ける『カメラ』機能を使う" »

2008年9月14日 (日)

Excel/VBA備忘録(13)何年かの間にある月の数を調べてみる

 たまにエクセル(Micorosoft Excel)で関数とかオプション、マクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 とある事情で、十何年かの期間は何ヶ月あるのか、ってことを調べることとなりました。

 しかし、私、こういった日付計算が大嫌いで、昔なら、「じょ、冗談じゃないっ!!」って叫んでいるところですが、今の世の中、何かしら自動計算できる方法があるのでは無いかと思い、Webを彷徨っておりましたら、良さそうなものがありましたので紹介しましょう。

Function SamplePro()

    On Error GoTo err_SamplePro

    Dim strA As String ' 変数を宣言します。
    Dim strMsg As String

    strA = InputBox("本日からの経過日数を表示します。" & _
"yyyy/m/d 形式で入力してください。")
    If IsDate(strA) = False Then MsgBox "日付形式と認識できません。": End

    'Now関数と組み合わせています。
    strMsg = strA & "は、今日から " & DateDiff("d", Now, strA) & "日後です。"
    MsgBox strMsg

Exit Function

err_SamplePro:

    MsgBox "予期せぬエラーが発生しました。" & vbNewLine & _
            "エラー番号: " & Err.Number & vbNewLine & _
            "エラー内容:" & Err.Description
    Exit Function

End Function

 (DateDiff 関数…:一日一見より引用)

 これは、(Microsoft)Accsessのことを書かれているサイトさんなんですが、VBAには変わり無いんで、ちょっと拝借します。

 このコードは、希望する日付を入力(これを実行するとウインドウが出て入力を促す)すると、今(まぁ、パソコンの時計)から何日経過しているか、っていうことをメッセージボックスで表示するってものです。

 で、今回は、何時から何時まで、って感じで計算したいので、こいつを私なりに変えたコードを下記に示します。

Sub nissu_keisan()

    Dim strA As String ' 変数を宣言します。
    Dim strMsg As String

    MsgBox DateDiff("
m", Range("a1").Value, Range("b1").Value) & "箇月です。"
   
End Sub

 これは、セルA1に計算を開始する日付を、セルB1に終了する日付を入力して実行すると、その期間、何箇月あるかってのをメッセージボックスへ出力します。

 ここでミソなのが、上記赤字で示した箇所です。

 この場合"m"を指定していますが、そうするといわゆる"月"を指定することとなります。

 他にも、色々あるようなんで、詳しくはここをクリックお願いします。

 で、実際に実行してみますと、

Excelmanth

 と、まぁこんな感じです。

 なお、もし上手くいかない場合、私が説明できるのはここまでですので、後はWebかなんかで頑張って調べてみてください。

 (リンク先(多謝): Microsoft Access Club

”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング

2008年9月12日 (金)

Excel/VBA備忘録(12)シート(名)のリストを作ってみる

 たまにエクセル(Micorosoft Excel)で関数とかオプション、マクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 私の場合、なんだか処理するデータが膨大になってくると、シートがアホみたいに増えまくってしまうことがたまにあります。

 そんな状態でも、まだシートを増やしたくなってシートを追加してシート名を変更すると、Excelから、

Excelsamenameope

 とか行って、シート名の変更を断られることがあったります。

 これって、結局、新しく作ったシート名前を変更しようと思ったとき、同じシートがあるんで変更できせんよ、ってメッセージなんですが、なんせシートが多く、前付けた名前を覚えてなかったりするんで、このメッセージを私はたまに見かけます。

 また、他シートのセルをリンクする場合なんか、ヘンなシート名とか超長いシート名とかにすると、それを覚えきれずに、リンクのシート名を確認すべくシートのタブをひたすらクリックしてる、なんてこともあったります。

 まぁ、自分が悪いんですが、「Excelのクセに生意気だぁ~っ!!」(ジャイアン風)って思って、結構、「ムカッ!!」って来ることもあったりします。

 で、機械相手にムカッ腹立てても不毛だし、精神衛生上良く無いんで、シート名の一覧を作れば、そのシートだけ見てシート名を確認できるのになぁ、なんて思ったりする訳です。

 で、まぁ、マクロでそういったものを自動的に作れれば良いかなぁ、なんて思ってWebを彷徨っていましたら、少し変更すれば使えそうなものがあったんで紹介しましょう。

Sub No17()

'VBAパーツNo.17 ブック内のすべてのシート名を表示
Dim i As Integer

    For i = 1 To sheets.Count
        MsgBox (i & "番目のシート名は " & sheets(i).Name & " です。")
    Next i

End Sub

 (Excelあらかると VBAパーツより引用)

 上記のサイトさんからのマクロを少し拝借して、下記のように変更します。

 Sub sheets_list()

 Dim i As Integer

    For i = 1 To sheets.Count
        ActiveSheet.Cells(i, 1) = sheets(i).Name
    Next i

 End Sub

 ちなみに、マクロの編集や実行のやり方は、こちらをご覧下さい(無責任な私)。

 で、実際に実行してみます。

 まず、下記のようなシート構成だったとします。

Excelsheetnamelist01ini

 マクロを実行します。

Excelsheetnamelist02macro

Excelsheetnamelist03macroope

「sheets_list」を実行すると、

Excelsheetnamelist04finish

 上記のようにセルA1からシートが登録されている順番でリストを作ることが出来ています。

  なお、もし上手くいかない場合、私が説明できるのはここまでですので、後はWebかなんかで頑張って調べてみてください。

 (リンク先(多謝):Excel☆ Excelでお仕事!(Excel全般の解説サイト) ☆

”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング

2008年8月 9日 (土)

Excel/VBA備忘録(11)Sendkeysステートメントでキーを複数回押したような動作をさせてみる

 たまにエクセル(Micorosoft Excel)で関数とかオプション、マクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 Excelって結構、コマンドとかステートメントが対応してない(プリンタの設定とか)があるんで(もしかしたら、そんなのもあるのかも知れませんが、調べるのがメンドい)、そんな時は、Sendkeysステートメントを使って強引に処理したりするんですが、結構忘れることがあるんですね、私的に。

 それは、「同じキーを何回も押す」ってヤツです。

 これってしばらく使わないと忘れてしまうんで、今回、書いておこうと思います。

 まずは、下記をご覧下さい。

同じキーストロークを続けて複数回送るには、キーの後ろに回数を指定します。

 

コマンド 意味
SendKeys "{UP 5}" ↑キーを5回押した
SendKeys "{A 10}" Aを10回押した

 (Office TANAKA - VBA講座:SendKeysステートメントより引用)

 まぁ、そんな感じです。

 (リンク先(多謝):Office TANAKA

”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング

2008年4月23日 (水)

Excel/VBA備忘録(10)条件付き書式を使う

 たまにエクセル(Micorosoft Excel)で関数とかオプション、マクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

  今回は、ホントに自分用の備忘録として書きますので、説明不足している点が多々ございますがご了承ください。

 「意味わかんねー」って方もいらっしゃるかと思いますが、よろしければ少しお付き合いください。

 一応、何をしたいのか大まかに書きますと、ある基準となる値があり、その他の値が、指定された範囲の場合にセルの色を指定した色で塗りつぶす、ということです。

 それでは、本文に移ります。

 例えば、下記のような表があったとします。
 Photo

 同じ行のJ列の数値と、J列以外の数値でJ列のセルから各同行のセルを引いた値によってその(J列以外の)セル下記のようにセルの色を塗りつぶしたいとします。

 ①値が-100以上、100以下の時は白(自動)
 ②値が-200以上、200以下の時は緑
 ③値が-200未満、200超の時は赤

 で、これの設定をExcelの機能である「条件付き書式」で行います。

 先に結果の画像を貼っておきます。
  Photo_3

 ちなみに、本文はExcel2000で説明しています。

 まず、セルI4をクリック(アクティブ)にします。

 次に、メニューバーの「書式(O)」→「条件付き書式(D)」で、「条件付き書式」ウインドウを表示し、下記のように設定します。
 Photo_2

 条件(1)が上記①の条件です。

 意味としては、セルJ4からI4を引いた値が-100以上かつ100以下である場合、ということになります。

 また条件(2)が上記②の条件ですが、これも条件①と同じ意味を持ち、数値が-200、200の違いです。

 条件(3)は上記③の条件ですが、条件が違うので、書式も少々違ってきます。

 意味としては、セルJ4からI4を引いた値が-200未満または200超である場合、ということになります。

 なお、セルJ4の前に「$」が付いているのは、この後、この書式をコピーするとき、基準となる列をコピーによって相対的にズラさない為です。

 で、後は、「コピー(C)」をします。

 そして、セルC4からI18を範囲選択して貼り付けるのですが、この時、「型式を選択して貼り付け(S)」の「書式(T)」で貼り付けます。

 ”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング

2008年3月 7日 (金)

Excel/VBA備忘録(9)BASP21のメソッドSendMailのパラメータmailfrom記述留意点

―お断り―
  今回は、かなり専門的というか、マニアックなことを書いて
 いると言うことをご了承ください。


 唐突ですがBASP21っていうASPがあって、これが結構便利なんです。

 んでもって、そのBASP21の動作を色々試してるんですが、たまにどーしても上手く行かないことがあったりして、その時は一所懸命に調べて何とか動作させるんですね。

 で、動いてしまうとほったらかしにして、そのやり方を忘れてしまい、再度使う時が来ると、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、BASP21の手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 今回は、BASP21のメソッド、SendMailのパラメータmailfromについて書きます。

 実は、ExcelのVBAを使ってメールを送信できるものなのか実験していたのですが、こいつがなかなか上手く動いてくれなかったんですね。

 で、多分、認証のところで引っかかっているんだろう、って思って、BASP21 DLLなんかで色々調べてみたんですが、どーしても分からない。

 で、色々Webで検索していると、おしえて!HOME'Sくん VB6.0とBASP21を用いてyahooメールからメール送信する方法:っていうサイトに、

http://www.hi-ho.ne.jp/babaq/basp21.html#0002​)
を見ると、第3引数は、
>  "ユーザ名:パスワード" & vbTab & "認証方式"
> ●SMTP AUTH を使う 2000.07.20 New!
> mailfrom = "<hoge@barbaz>" & vbTab & "user1:pass1"  ' AUTH LOGIN
> mailfrom = "<hoge@barbaz>" & vbTab & "user1:pass1" & vbTab & "CRAM-MD5"  ' AUTH CRAM-MD5
となってますけど・・・


 (以上、赤字おしえて!HOME'Sくん VB6.0とBASP21を用いてyahooメールからメール送信する方法:より引用)

 って書いてあったんです。

 ・・・、あれ?BASP21 DLLでは

msg = bobj.SendMail(svname,mailto,mailfrom, subj,body,files)
(中略)
mailfrom [in]  送信元メールID。SMTP AUTH(認証)を使う場合、
         タブで区切って ユーザ名とパスワードを指定できま
         す。
          "ユーザ名:パスワード" & vbTab & "認証方式"
         認証方式は、AUTH LOGIN (省略値)と AUTH
         CRAM-MD5 が使えます。
         "user1:pass1" "user1:pass1" & vbTab & "LOGIN"
         "user1:pass1" & vbTab & "CRAM-MD5"
         バージョン20010911よりAUTH PLAINサポート。
         "user1:pass1" & vbTab & "PLAIN"


(以上、赤字BASP21 DLLより引用)

 なんだけどなぁ・・・。

 それにメールアドレスに山括弧(注:"<"、">"のことね)も欲しいのかなぁとも思いました。

 まぁいいや、と、思い、取りあえずおしえて!HOME'Sくん VB6.0とBASP21を用いてyahooメールからメール送信する方法:の方法でやってみると、

   ・・・これが送信できてしまったんですねぇ。


 と、言う訳でまとめますと、mailfromの書式は、

 mailfrom[in]

 "<メールアドレス>" & vbTab & "ユーザ名パスワード" "& vbTab & "認証方式"

 凡例)

  メールアドレス:aaa@bbb.cccとかのいわゆるアドレス、プロバイダ
                         とかに契約している受信メールアドレスの場合が
            多い?

  ユーザ名   :契約しているメールとか、プロバイダとかにログイ
            ンする場合に入力する名前(YahooだったらYahoo
           IDとか)。

  パスワード   :同上ログインする場合に入力するワード(入力す
            ると*********とか表示されるヤツ)。

  認証方式    :Outlook Express(以下”OE”)だったら、「このサ
            ーバは認証が必要」にチェックを入れるような
             場合は必要かも。
            方式は色々あるんですが、方式が分からない
            場合はかたっぱしから試してみる(どうせ
            ”LOGIN”と”CRAM-MD5”と”PLAIN”しか無い
            し)。

  あと、山括弧はつけた方が無難かも。

 って感じですかね。

 なお、もし上手くいかない場合、私が説明できるのはここまでですので、後はWebかなんかで頑張って調べてみてください。

<リンク先(多謝):BASP21 DLLおしえて!HOME'Sくん:IT用語辞典 e-Words:

”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング

2008年3月 5日 (水)

Excel/VBA備忘録(8)ヘッダとかにブックが保存されているパスを自動で入力する

 たまにエクセル(Micorosoft Excel)で関数とかオプション、マクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 勤め先ではエクセルでデータを作ったとき「セルに保存先のフォルダ名を入力するように」、と良く言われます。

 これは、そのデータと一緒に保存先のパスを印刷すれば、保存先を知らない人でも紙を見てデータにアクセスできる、っていう”そんなデータ管理で良いのか”的な話ではあるんですが、まぁ、そう言われたら仕方が無いってのが、サラリーマンの悲しい性ってトコでしょうか。

 まぁ、誰が考えたか知りませんが、その保存先っていうのが、異常に深いフォルダ階層のところにあって、「そりゃ、パス入れろって話になるわなぁ」なんて思ったりする訳でもあるんですが。

 しかし、そんな長ったらしいパスをだらだらと手入力するのも超馬鹿らしいんで、簡単にパスが入れられる方法が無いものかとWebを彷徨ったところ、このブログでExcel/VBA備忘録(4)・セルにシート名を入れるっていう記事で書いた、

 =RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))
   -FIND("]",CELL("filename",A1)))

ってのをセルに入れるときに、

  =CELL("filename",A1)

 ってするだけで、パスからシート名まで入るってのが分かっていたんで、その方法で入力してたんですね。

 ところがっ!ですよ、最近Excelでデータを作成していたとき、印刷するセルの範囲一杯にデータを作ったもんですから、その長ったらしいパスを入れる場所が無くなってしまったんですね。

 「こりゃ困った」なんて思って、どーしよーかなぁ、なんて思っていたら「ヘッダに入れりゃ良いじゃんっ!」、なんて思いついたんですね。

 ところが、ですな、私の使っているExcelとWindowsの環境が古くて、「表示(V)」→「ヘッダとフッタ(H)」→「ヘッダ/フッタ」タブの「ヘッダ(またはフッタ)の編集(C)」ボタンで開く「ヘッダー」ウインドウの所に、パスが入力できるアイコンが無いんですね。

 「う゛ーん、これは更に困った」っていう感じになったんですが、まぁ、何かしら方法があるだろう、と思い、Webを彷徨ってみたところ、09-01_insatu:というサイトの「印刷のヘッダにパスをいれるには?」に、その方法が書いてありましたので紹介しましょう。

 まず、「ツール(T)」→「マクロ(M)」→「Visual Basic Editor(V)」で”Visual Basic Editor”(以下”VBE”)を開きます。

 希望するブックの「ThisWorkbook」をダブルクリックとかで開きます。

 開いた「ThisWorkbook」に、以下のコードを入力します(コピペとかの方が早いかも)。

 Private Sub Workbook_BeforePrint(Cancel As Boolean)
  ActiveSheet.PageSetup.CenterHeader = ThisWorkbook.FullName
 End Sub

 (赤字は09-01_insatu:より引用

 VBEを閉じます。

 以上で終わりです。

 印刷を実行すると、そのブックが保存されてる(絶対)パスが中央のヘッダへ入力されて印刷されました。

 また、入力したいヘッダを変える場合は、上記「CenterHeader」ってのを、右なら「RightHeader」、左なら「LeftHeader」に変更すればOKでした。

 なお、もし上手くいかない場合、私が説明できるのはここまでですので、後はWebかなんかで頑張って調べてみてください。

<リンク先(多謝):ミコの黄色いおうち: 

”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング

2008年3月 4日 (火)

Excel/VBA備忘録(7)現在日時を入力するショートカット

 たまにエクセル(Micorosoft Excel)で関数とかオプション、マクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 事の発端は、勤め先で人の作ったExcelのシートのデータを修正している時でした。

 シートの中で、あるセルに、そのとき作ったと思われる日付と時刻が入力されていました。

 しかも、ご丁寧に時刻には”秒”まで入っています。

 「暇な人もいるもんだ」とか思いながら修正することしばし、シートを更新したということを分かるようにする為、先ほどのセルを修正することになりました。

 「うーん、何で”秒”まで入ってるんだろう・・・、面倒臭いなぁ」、などと思い、適当に手入力で直そうと思った刹那、「待てよ・・・、もしかして、現在時刻とか一発で入力できる何か操作とかがあるんじゃ無いのか、もしかして?」、と思い、Webを彷徨ってみましたら・・・、ありましたねぇ、そーゆー機能が。

 見つけたのは、くじ雷電: Excelのショートカット:というサイトさんです。

 曰く、 

 「Ctrl+;」、(つまり「Ctrl」キーを押しながら、「;」キーを押すと)現在日付
 「Ctrl+:」、(つまり「Ctrl」キーを押しながら、「:」キーを押すと)現在時刻

 とのこと。

 実際やってみるとその通りだったんで、その時は、「よかったなぁ」って思ってありがたく使わせてもらいました。

 んで、現在でも結構使ったりしますんで、結構重宝するショートカットでは無かろうかと思います。

 なお、もし上手くいかない場合、私が説明できるのはここまでですので、後はWebかなんかで頑張って調べてみてください。

<リンク先(多謝): くじ雷電:

”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング

2008年1月28日 (月)

Excel/VBA備忘録(6)自動リンクのメッセージを表示しない

アドゲー天国エディタ(edita.jp)
ブログにビール注ぎゲーム「生一丁プレミアム!」を貼ろうキャンペーンはこちら

↑注)JavaScriptをONしないと表示されません。

 たまにエクセル(Micorosoft Excel)で関数とかオプション、マクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 あるブックに他のブックのリンクを貼ったとき、そのブックを起動したとき、下記のようなメッセージが出る場合があるかと思います。

Autolink

↑クリックで表示(画像を表示した場合に戻る場合はブラウザの戻るボタンで戻ります)

 これが結構ウザいんで、このメッセージを表示しないような方法を紹介します。

 当該のブックを開いた後、メニューバーの「ツール(D)」→「オプション(O)...」で「オプション」ウインドウを表示し、そのウインドウの「編集タブ」をクリックすると下記のように表示されると思います。

Option

↑クリックで表示(画像を表示した場合に戻る場合はブラウザの戻るボタンで戻ります)

 で、上記のように「リンクの自動更新前にメッセージを表示する」のチェックを外します。

 これで終わりです。

 私もこれを試して見ましたが、上手く行きました。

 なお、この方法は設定したエクセルだけで有効のようなので、設定されていないエクセルで、この操作を行わず当該の設定をするには、マクロを組むか何かしないとダメかも知れません。

 なお、もし上手くいかない場合、私が説明できるのはここまでですので、後はWebかなんかで頑張って調べてみてください。

<リンク先(多謝):Shun's Page

”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング

2008年1月27日 (日)

Excel/VBA備忘録(5)シートがあるかチェックし、なければ追加する

アドゲー天国エディタ(edita.jp)
ブログにビール注ぎゲーム「生一丁プレミアム!」を貼ろうキャンペーンはこちら

↑注)JavaScriptをONしないと表示されません。

 たまにエクセル(Micorosoft Excel)で関数とかマクロ(VBA)を使うこともあるんですが、昔使ったことがある手法があったとしますよね。

 んで、その時すでにその手法を忘れてて、「どうだったかなぁ~?」とか言いながら、結局Webを探し回ると凄く時間と労力がかかるんで、とりあえず、自分用に、忘れたときのメモとして、Excelの関数やVBAの手法を書こうと思います。

 ちなみに、本文章についてご質問を承っても十分な回答を差し上げる自信は全くありません。

 疑問などがございましたら、本文末尾に参考にさせてもらったサイトのリンクを貼っておきますので、そちらを参照ください。

 では、本題に移ります。

 まず、エクセルのブック(xlsファイル)がネットワーク上にある場合、複数のユーザ(PC)から同じブックを開いたとき、後から開いたユーザが「読み取り専用」か「通知」で開くことになり、リアルタイムに編集できない、ってのが何とかならないかなぁ、って思っているんですね。

 で、これの解決方法を、なんとなく考えると、ユーザごとに編集用のブックを持っていて、あるブックが複数の「ユーザごとの編集用のブック」から必要なシートを引っ張ってきて、まとめることができるブックがあれば良いんじゃないかと思ったんです(シートを「まとめるブック」は閲覧するだけで良ければの話ですが・・・)。

 じゃぁ、これを具体的に出来るようにするにはどーすれば良いか、というと、「ユーザごとの編集用のブック」からシートをコピーして、「まとめるブック」に貼り付ければ良いんじゃないか、って思ったんです。

 ところが、ここで想定される問題が、「まとめるブック」に「ユーザごとの編集用のブック」からコピーしてくるシートと同じ名前がある場合、コピーしてきたシートは名前を変えて「まとめるブック」に貼り付けられる、ということ。

 これだと何か気に入らないので、「ユーザごとの編集用のブック」からシートをコピーしてくる場合、事前に「まとめるブック」上に同じ名前のシートが無いかを確認し、それを発見したら削除して、それからコピー&ペーストすれば良いのではないか、ということを思いついたんです。

 で、そんな方法がどっかに書いてないかなぁ、なんて思ってWeb上をさまよっていると、シート操作ってサイトに少し改造すれば使えそうなものがあったんで紹介しましょう。

 これは、指定されたシートがあるかチェックし、無ければ追加するってモノなんですけど、何故これを紹介するのか、と言うと、「シートを探す」っていうのが、まず一つ、そして「無ければ追加」するって所のコードを「あれば削除」するっていうコードに変更すれば、目的が達成されそうな気がするからです(まぁ、考察の一つとお考え下さい)。

 それではいよいよ紹介します。

 まず、ExcelのVBE(Visual Basic Editor)を起動して標準モジュールに下記コードをコピー&ペーストします。


  Sub Sheet_Add5()
   Scheck = 0
      For Each sheet_name In Worksheets
     If sheet_name.Name = ("検索シート名") Then
      Scheck = 1
    Exit For
     End If
  Next
    If Scheck = 0 Then
     Sheets.Add.Name = "検索シート名"
    End If
  End Sub


  (上記、シート操作より引用)

 これで終わりです。

 このマクロを動作させるには、Excelの「ツール(T)」→「マクロ(M)」→「マクロ(M)」で「Sheet_Add5」を選択し「実行(R)」をクリックします。

 結果、シート名、「検索シート」が無い場合は「検索シート」という名前のシートが作成され、有る場合は何も変化が無いと思います。

 と、言う訳で、これを手がかりに、目的のマクロを考えようかなぁ、なんて思います。

 なお、もし上手くいかない場合、私が説明できるのはここまでですので、後はWebかなんかで頑張って調べてみてください。

<リンク先(多謝):Shun's Page

”グッ”と来ることが書いてあったらクリックお願いします
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

人気ブログランキ

ング
2017年12月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31