2017-08-02 13 views
0

デスクトップに保存されたpythonスクリプトを呼び出すVBAコードを作成しています。これは私のVBAコードです。IOError:[Errno 2] Excelファイルにアクセスしているときにそのようなファイルやディレクトリがありません

このPythonスクリプトは、デスクトップに配置されたExcelファイル内のアドレスを読み込みます。私はPythonスクリプトを直接実行すると、完全に実行されます。しかし、私はVBAコードを実行しているときに、Pythonスクリプトが開きますが、Excelファイルが利用できないというエラーが表示されます。 Pythonスクリプトのコードは次のとおりです。

import xlrd 
import geocoder 
import openpyxl 
from openpyxl import load_workbook 
location = "C:\\Users\\ashish.baboo\\Desktop\\UKT-SL-Ashish\\Cleaning-Tools\\1.xlsx" 
workbook = xlrd.open_workbook(location) 
sheet = workbook.sheet_by_index(1) 


Rows = sheet.nrows 
Cols = sheet.ncols 
data = [[sheet.cell_value(r,c) for c in range(Cols)] for r in range(Rows)] 

wb = load_workbook('1.xlsx') 
ws1 = wb.get_sheet_by_name("Locations") 


for i in range(1,Rows): 
    add = ws1.cell(row = i+1, column = 19).value 
    cadd = geocoder.google(add , language = "en" , key = "AIzaSyBsiH6LubuA9dn1s97UsUcesQRw71isBuo") 
    print(i , cadd.latlng , cadd.quality ,cadd.country) 
    S_no = ws1.cell(row = i+1, column = 1) 
    O_Housenumber = ws1.cell(row = i+1, column = 3) 
    O_Street = ws1.cell(row = i+1, column = 4) 
    O_City = ws1.cell(row = i+1, column = 5) 
    O_County = ws1.cell(row = i+1, column = 6) 
    O_State = ws1.cell(row = i+1, column = 7) 
    O_Postal = ws1.cell(row = i+1, column = 8) 
    O_Country = ws1.cell(row = i+1, column = 9) 
    Latitude = ws1.cell(row = i+1, column = 10) 
    Longitude = ws1.cell(row = i+1, column = 11) 
    Accuracy = ws1.cell(row = i+1, column = 12) 
    S_no.value = i 
    O_Housenumber.value = cadd.housenumber 
    O_Street.value = cadd.street 
    O_City.value = cadd.city 
    O_County.value = cadd.county 
    O_State.value = cadd.state_long 
    O_Postal.value = cadd.postal 
    O_Country.value = cadd.country_long 
    Latitude.value = cadd.lat 
    Longitude.value = cadd.lng 
    Accuracy.value = cadd.quality 

    wb.save('1.xlsx') 

私はすでに多くのソリューションを試しましたが、成功しませんでした。親切にそれを解決する方法をお勧めしますか?

+1

は、Pythonスクリプトが開こうとする同じファイルから実行されるVBAコードですか? – avb

+0

@avb私はあなたを得ていませんでした。しかし、NO。私のコードはOutlook VBAにあります。それはExcelファイルではないので、スクリプトは開こうとしています。 –

答えて

1

このライン:

wb = load_workbook('1.xlsx') 

は、ファイルを検索する場所を知っているプログラムに依存しています。あなたがVBAからPythonを起動している場合、作業ディレクトリはほぼ確実に異なります。したがって、あなたのPythonプログラムは完全なファイルパスを知る必要があります。プログラムでハードコーディングすることも、コマンドラインからプログラムに渡すこともできます。

+0

これは正解です。これで私の問題は解決しました。ありがとう! –

関連する問題