他のファイルを参照し変数に代入しましたが
参照式まで代入されてしまいますが、これを回避したいです。
='C:\フォルダ名\[ファイル名.csv]シート名'!$A$1
理由としては、参照先を知られたくないためです。

Dim A(9) As Variant
A(0) = Path & "!$A$1" 'ここの部分の書き方を教えてください。
.Range("B1").Value = A(0)

変数は入力ミスをした場合に元に戻すために使います。

A 回答 (6件)

マクロの前後にApplication.ScreenUpdatingを入れれば表示の更新止めれるので


ステータスバーにも数式バーにもばれたくないものは出ませんが。
これではだめなんですかね?

Private Sub Test()
Application.ScreenUpdating = False  'Screenの動作を止める

・・・・・・・
・・・・・・・

Application.ScreenUpdating = True  'Screenの動作を戻す
End Sub
    • good
    • 0

ちなみに数式バーに式が表示されなくてもメニューの編集→リンクの設定でどのファイルにリンクしてるのかが分かりますから「参照先を知られたくない」という条件はクリアできません。



またCSVを参照している場合には、起動時にデータの更新をする旨選択すると、更新が出来ないと表示されて参照先を開くことが出来ますので、結局参照先は知られてしまいます。
    • good
    • 0

参照式が見える見えない以前に


>='C:\フォルダ名\[ファイル名.csv]シート名'!$A$1

マクロでこの式をただセルに放り込んでも,肝心のCSVの値を引っ張ってこさせる事は出来ません。
そのやり口で値を取ってこさせるためには,原則として「事前に」目的のCSVを「開いておく」必要があります。


で,どうせCSVを事前に開くのなら,わざわざ参照式形式にしないで,開いたCSVの所定の値を直接読み取って「変数」に代入してしまえばおわりです。
そのための「CSVを開く方法(CSVから値を読み出す方法)」は,回答1などで寄せられているアドバイスのURLも大変役に立ちますし,また
application.screenupdating = false
workbooks.open filename:="c:\test\test.csv"
a(0) = workbooks("test.csv").worksheets(1).range("A1").value
workbooks("test.csv").close savechanges:=false
application.screenupdating = true
などのようにふつーに操作するのも簡単な方法です。
    • good
    • 0

変数 Path に ='C:\フォルダ名\[ファイル名.csv]シート名' を入れたいって事でしょうか



> 理由としては、参照先を知られたくないためです

どの時点で知られたくないのか分かりませんが
どちらにしても参照先が分からないような参照は出来ないと思いますが…

あと、セルに式を入れるのでしたら
Range("B1").Formula = A(0)
がよろしいと思われます。
    • good
    • 0

数式を隠したのならば、VBAで行わなくても次の方法は如何でしょうか。


(1)該当セルを選択→セルの書式設定→保護タブ→表示しないを選択、シート保護
(2)エクセルのグレードが不明ですので「シート保護」操作はキーワードで検索して下さい。
    • good
    • 0

やりたいことってこんなこと?



http://www.moug.net/tech/exvba/0060086.htm

ちょっと文章じゃイメージがわかないのですが。。??

この回答への補足

エクセルの数式バーに参照式が表示されてしまいます。
これは、必要ないので変数に代入しないで参照先にあるセルに表示されているデータのみを変数に代入したいのです。
質問の仕方が下手でした。ごめんなさい。

補足日時:2011/04/17 20:02
    • good
    • 0

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


人気Q&Aランキング