冬の風邪予防は「鼻○○○」が新常識!?>>

こんにちは、

エクセルのファイルが40近くあります。それぞれ異なったパスワードで保存されています。すべてのファイル名とそのパスワードはわかっています。パスワードのかかっているエクセルファイルを開き、特定の部分(例えばA1のセル)の合計を求めるようなマクロを組もうと思っています。

パスワードのかかっているエクセルファイルを開くようなマクロを組むことは可能でしょうか?もしご存知の方がいましたら、ご教授いただければ助かります。よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ヘルプくらいは見ましょう。



---------------------------------------------------------
Open メソッド
ブックを開きます。

構文
expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended,
Origin, Delimiter, Editable, Notify, Converter, AddToMRU)

expression 必ず指定します。対象となる Workbooks コレクションまたは RecentFile オブジェクトを表すオブジェクト式を指定します。

FileName 必ず指定します。文字列型 (String) の値を使用します。開くブックのファイル名を指定します。

(中略)
Password 省略可能です。バリアント型 (Variant) の値を使用します。パスワード保護されたブックを開くのに必要なパスワードを指定します。パスワードが必要な場合にこの引数を省略すると、パスワードの入力を促すダイアログ ボックスが表示されます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。自分で組んだマクロをよく見たらPassswordとなっていて、そこでひっかっていました。思い込みでした。失礼いたしました。

お礼日時:2008/03/19 11:57

基礎的なエクセルVBA使用知識を調べないで、すぐこのコーナーに丸投げ質問しているように思う。


必要な要素技術はたいしたものは無いようだ。
>もしご存知の方がいましたら、ご教授いただければ助
回答しようとするレベルの人は、みんな知っている。
回答しないのは忙しいのとこんな問題では知的刺激が無いからだろう。質問者の不勉強を公言するようなもの。
ーー
(1)ブックを開く
マクロの記録ぐらいとってみてください。すぐ判る。
今回の特別条件である
   パスワードつきの場合
http://www.moug.net/tech/exvba/0060049.htm
ブックを開くコードWorkbook.Openの引数のひとつ
(2)複数のブックを連続して開く。
一般にこの対象ブックは、フォルダ内の全てのブックとかのケースが多いが
本件では、一定のブックの特定のシート(X)にあらかじめ、ブック名(A列)とパスワード(B列)の対応表を持ち、(場合によってはシート名も)<これは1つの方法だが>
Xの第1行から最終行まで1つ読み込み、1つ読むごとにそのブック名(A列)とB列パスワードでブックを開く。
(3)
そして>「特定の部分(例えばA1のセル)の合計を求める」ことを
Xにリストした、全ブックについて繰り返す。
>例えばA1のセル)の合計、を求めるテクニック
  今回までの合計=1段前までの合計+今回の計数
  s=s+k
というのぐらい判っているでしょうね。
まず(1)、(2)をやって全ブックを訪問するかどうかやってみてください。訪問した(=読んだ)時通る箇所に Msgbox ブック名でブック名を表示をしたら良い。
    • good
    • 1
この回答へのお礼

回答ありがとうございました。#1の方のお礼に書いたように思い込みで、間違いに気がつきませんでした。失礼いたしました。

お礼日時:2008/03/19 11:58

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QエクセルVBAで読み取りパスワード回避

エクセル2010です。
以下のコードで任意のフォルダ内のエクセルBOOKから所定のデータを取得できます。
しかし、指定フォルダ内に読み取りパスワードが設定されたものがあると、開くことができずに止まってしまいます。
読み取りパスワードが同一で、事前に分かっていればコードにPassword:="AAAABBBB" などと書き入れればいいと思うのですが、事前にはわかりませんし、パスワードもそれぞれ異なります。
そこで、開けなかった場合には、そのBOOKを飛ばしてすすみ、別シートに飛ばしたBOOK名を記録しておきたいのです。
(BOOK作成者にあとからパスワードを聞くため)
しかし、残念ながらどのように書けばいいのか思いつきません。
ご指導いただければ幸いです。

Sub TEST001()
  Dim wb(1) As Workbook
  Dim ws(1) As Worksheet
  Dim myFdr As String, fn As String
  Dim i As Long
  With Application.FileDialog(msoFileDialogFolderPicker) 'フォルダ指定
    If .Show = True Then
       myFdr = .SelectedItems(1)
    Else
      Exit Sub
    End If
  End With
  Application.ScreenUpdating = False '画面更新を一時停止
  Set wb(0) = ThisWorkbook 'このコピー先ブックをwb(0)とする。
  Set ws(0) = wb(0).Sheets(1) 'wb(0)の1枚目のシートをws(0)とする。
  fn = Dir(myFdr & "\*.xls*") 'フォルダ内のExcelブックを検索
  Do Until fn = Empty '全て検索
    Application.EnableEvents = False
    Set wb(1) = Workbooks.Open(myFdr & "\" & fn, UpdateLinks:=False, ReadOnly:=True) 'そのブックを開きwb(1)とする。
    Set ws(1) = wb(1).Worksheets(1)
    i = i + 1
    ws(0).Cells(i, "A").Value = ws(1).Range("B2") 'ws(0)に転記
    ws(0).Cells(i, "B").Value = wb(1).Name
    ws(0).Cells(i, "C").Value = ws(1).Name
    wb(1).Close (False) '保存せず閉じる
    Application.EnableEvents = True
    fn = Dir 'フォルダ内の次のExcelブックを検索
  Loop '繰り返す
  Application.ScreenUpdating = True '画面更新停止を解除
  MsgBox i & "個取得"
End Sub

エクセル2010です。
以下のコードで任意のフォルダ内のエクセルBOOKから所定のデータを取得できます。
しかし、指定フォルダ内に読み取りパスワードが設定されたものがあると、開くことができずに止まってしまいます。
読み取りパスワードが同一で、事前に分かっていればコードにPassword:="AAAABBBB" などと書き入れればいいと思うのですが、事前にはわかりませんし、パスワードもそれぞれ異なります。
そこで、開けなかった場合には、そのBOOKを飛ばしてすすみ、別シートに飛ばしたBOOK名を記録しておきたいの...続きを読む

Aベストアンサー

#2、cjです。#2お礼欄へのレスです。

>> ThisWorkbook(の名前)を処理から除外しておいた方が安全ではあります。(コードは示しません)
>
>以下のようにしてみましたが、よろしいでしょうか?

はい。考え方として正しいですし、完全に解決出来ています。
拘るなら、ループの中で何度も取得し直す固定的なプロパティは、
事前に変数に纏めておいた方が何かと有利になりますね。

>> 同様にワークブックの二重起動についても考慮に入れた方がより無難になるかも、です。

>なるほど、すでに開いていることも考えられますね。
>残念ながら、この対応法がわかりません。

基本的なこととして、部分的に仕様を変える時には、視野を拡げて、
他の部分を含めて全体的な仕様への影響を考えに入れるよう習慣付けた方が好いです。
例えば、ThisWorkbook以外に、
転記元となるべきブックが実行前に既に開いていたとして、
そのブックに未保存データがある場合、どうしようか、とか。
仮に二重に開くことを回避できても、そのまま目を瞑って転記したとすると、
そのブックを上書き保存せずに閉じるようなことがあれば、
せっかく転記したリストに不整合が起きる可能性がある訳で、、、。
未保存の問題をクリア出来たとして、
その(開いていた)ブックを含めて、転記したブックを一様に閉じてしまったりしたら、
他の編集作業に支障があるのではないか、とか、、、。
まず大雑把な仕様の方向付けを仮に決めてみて、
その為に必要な技術で、足りないものがあれば、習得に努めて、
見通しが立ったら仮の仕様を再検証してみて、
大雑把に書いてみて、調整を加えて、ってな流れで考えてみたり、、、。
そんなこんなで、ユーザー目線を加味しながら妥協点を見つけてみて、仕上げていく、とか。
実務上の必要と十分に照らして仕様を整理することから始めないと、
"対応法が"わからないのは誰でも一緒です。

でも、なんか、今回の場合は、大変そうだから、
ThisWorkbookとPERSONAL.XLS以外のブックが開いていないことを確認
してから処理に進むようにしてみる、とか、
もう少し踏み込んで、、、
ThisWorkbookとPERSONAL.XLS以外に開いているブックが、
指定したフォルダにあるかどうかを先に確認して、
強制的に閉じちゃう、か、処理を中止して閉じてから実行して貰う、とか、
簡単に済ませちゃってもいいでしょうね。
近隣のQAを見ても、何も手当てしてない場合が多いようですし、、、。
ただ、今回はブックの開き方に特殊を認めている訳ですから、
二重に開くことを無視して実行するのだけは避けた方がいいでしょう。
最悪でも運用上の注意喚起(周知)は必要です。

参考に、前段に挙げた問題点に対して積極的に対策する方法を考えてみました。
次の投稿で書いたものを掲げてみます。
既出のコードでは、未保存の場合への対策が難しかったので、
手法的に大幅に変えたものになりました。
他にもケアしないといけないと気づいていることもあるのですが、
(大文字小文字を区別しないファイル名判定、とか、環境的な条件とか、色々)
今の処の(短時間で形にする為の)妥協点、ということです。
ただ、エラー処理の仕方は#2よりだいぶマシになっています。
Shellを扱うかどうかは別にしても、
処理対象の一覧を先に取得しておくのは、
事後の処理に何かと融通性をもたらすかとは思います。
あくまで参考程度ですが、、、。


(次の投稿に続きます)

#2、cjです。#2お礼欄へのレスです。

>> ThisWorkbook(の名前)を処理から除外しておいた方が安全ではあります。(コードは示しません)
>
>以下のようにしてみましたが、よろしいでしょうか?

はい。考え方として正しいですし、完全に解決出来ています。
拘るなら、ループの中で何度も取得し直す固定的なプロパティは、
事前に変数に纏めておいた方が何かと有利になりますね。

>> 同様にワークブックの二重起動についても考慮に入れた方がより無難になるかも、です。

>なるほど、すでに開いていること...続きを読む

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

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

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QExcelブックの保護パスワード判定方法

VB6.0で、Excelブックが保護パスワードされているかどうかの
判定を行いたいです。
以下のようにHasPasswordプロパティを使用してみたのですが、
保護パスワード付きのExcelブックでテストしてみると
Workbooks.Openの部分で処理が止まってしまい、先にすすみません。
基本的にやり方が間違えているんでしょうか?
お分かりになる方がいらっしゃいましたら、教えてください。
よろしくお願いします。

  Dim xlApp  As Excel.Application
  Dim xlBook  As Excel.Workbook

  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Open("C\:TEST.xls")
If xlBook.HasPassword Then
Msgbox("保護パスワードあり")
Else
Msgbox("保護パスワードなし")
End If
  Set xlSheet = Nothing
  xlBook.Close
  Set xlBook = Nothing
  xlApp.Quit
  Set xlApp = Nothing

VB6.0で、Excelブックが保護パスワードされているかどうかの
判定を行いたいです。
以下のようにHasPasswordプロパティを使用してみたのですが、
保護パスワード付きのExcelブックでテストしてみると
Workbooks.Openの部分で処理が止まってしまい、先にすすみません。
基本的にやり方が間違えているんでしょうか?
お分かりになる方がいらっしゃいましたら、教えてください。
よろしくお願いします。

  Dim xlApp  As Excel.Application
  Dim xlBook  As Excel.Workbook

  Set xlApp = Crea...続きを読む

Aベストアンサー

以下のよいうにして見ましょう

Set xlApp = CreateObject("Excel.Application")
Set xlBook = nothing
On Error Resume Next
Set xlBook = xlApp.Workbooks.Open("C\:TEST.xls", PassWord:="")
if err.Number <>0 then
  if err.Number = 1004 then
    MsgBox("保護パスワードあり")
  else
    MsgBox( Err.Description )
  end if
else
  MsgBox("保護パスワードなし")
  xlBook.Close
end if
on error goto 0
xlApp.Quit
set xlApp = Nothing
set xlBook = Nothing
といった具合です

Qエクセル(excel)のパスワード解除について

パスワードがかかっているエクセルのファイルが大量にあり、
パスワードもなにかわかっていてるのですが、いちいち開くときにパスワードを入力するのが大変です。
(ちなみに、パスワードはすべて同じです。)
そこで、一括してパスワードを解除するファイルがあれば教えて頂きたいです。


よろしくお願いします。

Aベストアンサー

> 一括してパスワードを解除するファイルがあれば教えて頂きたいです。

そのようなものは作らなければありませんよ。
作るための確認です。
パスワードとは読み取りパスワードのことですね?
すべて同じ読み取りパスワードが設定されたエクセルのファイルが特定のフォルダー内に大量にあるのですね?
それらのファイルの読み取りパスワードをすべて無しにしたいのですね?
以上の前提が正しければ以下のVBAを標準モジュールに記載したエクセルファイルを、必ず解除したいファイルがあるフォルダー内に保存してください。

標準モジュールに記載する方法は
1.新しいエクセルを開き、AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。
2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。

Sub TEST01()
  Dim myFn As String
  Dim pw As String
  Dim wb As Workbook '以上変数宣言
  pw = InputBox("解除する読み取りパスワードを入力してね。")
  Application.ScreenUpdating = False '画面更新一時停止
  myFn = Dir(ThisWorkbook.Path & "\*.xls?") 'エクセルBOOK検索
  Do While myFn <> "" '対象が存在する限り続行
    If myFn <> ThisWorkbook.Name Then 'ファイル名が自分の名と違っていれば
      Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & myFn, Password:=pw) '開く
      With wb
        Application.DisplayAlerts = False '警告一時停止
        .SaveAs Filename:=wb.FullName, Password:="" 'パスワードなしで上書保存
        .Close False '閉じる
        Application.DisplayAlerts = True '警告停止解除
      End With
    End If
    myFn = Dir() '次検索
  Loop '繰り返し
  Application.ScreenUpdating = True '画面更新停止解除
  MsgBox "終了しました。"
End Sub

3.Alt+F11キーでワークシートへもどります。
4.解除対象となるファイルがある一フォルダー内に名前を付けて保存する。(パス取得のためマクロ実行前に必ず一度は「保存」してあることが必要です。)
5.Alt+F8キーで出てきたマクロ名(TEST01)を選択して実行します。

> 一括してパスワードを解除するファイルがあれば教えて頂きたいです。

そのようなものは作らなければありませんよ。
作るための確認です。
パスワードとは読み取りパスワードのことですね?
すべて同じ読み取りパスワードが設定されたエクセルのファイルが特定のフォルダー内に大量にあるのですね?
それらのファイルの読み取りパスワードをすべて無しにしたいのですね?
以上の前提が正しければ以下のVBAを標準モジュールに記載したエクセルファイルを、必ず解除したいファイルがあるフォルダー内に保存してく...続きを読む

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QvbaでvbaProjectのパスワード解除する

マクロを作成したエクセルファイルがあるのですが、配布した数が1万ほどありまして、
今回、vbaプログラム自体を変更しなければいけなくなりました。

そこで、調べた結果vbaをvbaで編集することまではわかりました。
http://officetanaka.net/excel/vba/vbe/index.htm

しかし、配布したエクセルファイルのvbaProjectにパスワード保護をかけていまして、上手く動作しません。

なので、vbaでvbaProjectの保護を解除したいのですが、何かいい方法がありましたら、
ご指導の程よろしくお願いします。


※vbaProjectのパスワードはわかっています。

Aベストアンサー

最初に、リンク先のOfficeTanakaのサイトに書かれてあるものは、アマチュア用でもなければ、プロ用でもないもので、そのような手法が受け入れられるはずがありません。

>vbaでvbaProjectの保護を解除したいのです
Sendkeyでバスワードを送ることは可能ですが、それをしても、次の段階が出てきます。コード編集ではセキュリティ解除をしなければなりませんから、Resistry操作が出てきます。そうすると、アンチウィルスに引っかかってくる可能性も出てきます。だから、OfficeTanakaの話は現実的ではないことが、お分かりになるかと思います。そんなに簡単なことではないはずです。

1万コピー配布で、なぜ、その後の方策を立てなかったのか、と思います。
基本的には、アドインスタイルを取ります。アドインにするためには、特別に配布用のインストーラーが必要になってきますが、フリーで手に入ります。

また、アップデート用のブックを配布とはいっても、ワークシート上はすでにユーザーが手を付けているので、そのまま、ブック自体を配布することは出来ないはずです。新しいブックに、シートコピーをして新しいブックに移し替え、新しいブックにして使ってもらう方法を考えます。しかし、コントロールツールなどがあれば、それはすげ替えることが利きませんから、予め置いておくか、マクロで設けるしかありません。こちらとしては、この程度しかアイデアがありません。

最初に、リンク先のOfficeTanakaのサイトに書かれてあるものは、アマチュア用でもなければ、プロ用でもないもので、そのような手法が受け入れられるはずがありません。

>vbaでvbaProjectの保護を解除したいのです
Sendkeyでバスワードを送ることは可能ですが、それをしても、次の段階が出てきます。コード編集ではセキュリティ解除をしなければなりませんから、Resistry操作が出てきます。そうすると、アンチウィルスに引っかかってくる可能性も出てきます。だから、OfficeTanakaの話は現実的ではないことが、お...続きを読む

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報