- ベストアンサー
VBA 他のPCでも使いたい
エクセルVBA初心者です。 Workbooks.Open Filename: についてですが 「C:\Documents and Settings\たぬき\デスクトップ\どんぐり.xls」 を開くプログラムは 「C:\Documents and Settings\きつね\デスクトップ\どんぐり.xls」 を開きません。 例えば どんぐりエクセルのセルA1にPC名を代入して、それを利用して ファイルを開く方法とか ファイルの場所をファイル名から返して開く方法があれば教えて下さい。 仕事柄必要となっております。 分かり易くよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>よろしければ、スラッシュの意味と「”&」の意味を教えて下さい。 スラッシュは、実際には¥(円マーク)になります。 ディレクトリの区切りです。 ”は、文字列を囲む時に使います。 &は、文字列の連結に使います。 >それとcells(1,1)は、今アクティブになっているBOOKのシートの ということでしょうか? そうです。 >range("a1")とかでもOKなのでしょうか。 OKです。 #1の答えには、”が1カ所抜けていました。 正しくは" & cells(1,1) & "\ です。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 初歩的な内容ですが、以下のようにしたらよいと思います。 なお、#1で出来ているなら、こちらは無視して構いません。 なお、'\' などのことを、パスセパレータと呼びます。 厳密に、バックスラッシュなどの環境の違いを必要とするなら、最初に、Application 側から、取得して書くべきだと思います。 Dim Ps As String 'パスセパレータを取得するオプション Ps = Application.PathSeparator '(1) Sub OpenFilePrc() Dim FName As String FName = Range("A1").Value '入力がない場合 If FName = "" Then Exit Sub If Dir(FName) <> "" Then Workbooks.Open FName Else MsgBox "ファイルが見つかりません。" End If End Sub '(2) '--------------------------------- Sub FileOpenPrc2() Dim FName as String FName = Application.GetOpenFilename _ ("Excel(*.xls),*.xls") If FName = "False" Then Exit Sub Workbooks.Open FName End Sub '(3) EXCELの起動と同じユーザーのデスクトップにある場合 '---------------------------------- Sub FileOpenPrc3() Dim FName As String Dim myPath As String 'デスクトップフォルダを取得 If FName = "" Then Exit Sub myPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" If Dir(myPath & FName) <> "" Then Workbooks.Open myPath & FName End If End Sub
お礼
こっこんばんわ!! むずかしいですね。 特に三番です。でもいつか理解するぞう!! ファイル名からでも行けるわけですね。 二つ同じ名前があっても大丈夫なのかしら。 No1さんと2つのやり方でやってみます。 何とか今日中にできそうです。ありがとうございました。
- toshi_2000
- ベストアンサー率30% (306/1002)
以下の通り。 filename:="C:\Documents and Settings\" & cells(1,1) & \デスクトップ\どんぐり.xls"
補足
早速の回答、ありがとうございます。 非常にたすかります!!! よろしければ、スラッシュの意味と「”&」の意味を教えて下さい。 他の方法でも使ってみたいです。 それとcells(1,1)は、今アクティブになっているBOOKのシートの ということでしょうか? range("a1")とかでもOKなのでしょうか。
補足
なるほど~”文字列”&代入&”文字列”って感じで使えるわけですね。 a = @@@@ "& a &"とも使えるか試してみます。 これからの仕事の勉強になりましたし、 非常に重要な手がかりになりました。 きっとできる人からすると簡単なことなんでしょうね!! ありがとうございます。