我有多个用户的 Microsoft Excel 文件(带有宏)。我曾经使用 Google 表格存储一些数据并使用 ActiveSheet.QueryTables.Add 函数检索它。这样我就可以更新这些数据,所有用户都可以轻松更新他们的 Excel 文件。
但现在我想将一些数据从 Excel 存储到谷歌电子表格。用户一直在更改三列中的数据,我想将这些更改存储在单独的谷歌工作表中(每个用户将有不同的谷歌工作簿来简化)
所以我只需要这个: - 打开谷歌表格https://docs.google.com/spreadsheets/d/....key..../edit#gid=0 - 选择工作表上的所有数据并将其删除 - 从 Excel 工作表中复制三列 - 将这些列粘贴到 A1 处的 Google 表格中
我开始研究如何做到这一点,但发现事情并不那么简单。 我现在正在使用 Internet Explorer 来实现此目的:
Dim ie As InternetExplorer
Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate ("https://docs.google.com/spreadsheets/d/....key..../edit?usp=sharing")
我不知道如何选择Google Sheet上的所有数据,如何删除它以及如何在A1粘贴。
当我寻找问题的答案时,我在 stackoverflow 上找到了一些文章,但这对我没有帮助。他们建议使用:。使用 Google Spreadsheets API 将数据移至在线电子表格中。但是如何在VBA中使用它呢?如何添加这个API呢?
请帮忙! 预先感谢您!
A:第 1 步: 设置 Google 表格和 Google Apps 脚本
创建一个新的 Google 表格:
打开 Google 表格并创建一个新的电子表格。 这将是上传 Excel 数据的位置。
创建 Google Apps 脚本: 在您的 Google 表格中,单击“扩展”>“Apps 脚本”。 这将打开脚本编辑器。
编写 Google Apps 脚本来接收数据:替换默认值 使用以下脚本编写代码以创建用于接收的端点 来自 Excel 的数据:
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); // Change "Sheet1" if your sheet name is different
var data = JSON.parse(e.postData.contents); // Parse the incoming data
// Loop through the data and append it to the Google Sheet
for (var i = 0; i < data.length; i++) {
var row = data[i];
sheet.appendRow(row);
}
return
ContentService.createTextOutput("Success");
}
保存并部署 Google Apps 脚本: 使用名称保存脚本,例如“ExcelToGoogleSheets”。 单击部署 > 测试部署 > 选择类型 > Web 应用程序。 将“执行”设置为“我”,将“谁有权访问”设置为“任何人”。 单击部署并复制 Web 应用程序 URL。
B:第 2 步: 在 Excel 中编写 VBA 代码
nxt
Sub UploadDataToGoogleSheets()
Dim http As Object
Dim url As String
Dim sheet As Worksheet
Dim row As Range
Dim data As Variant
Dim jsonData As String
Dim i As Long, j As Long
' URL of the Google Apps Script Web App
url = "YOUR_GOOGLE_APPS_SCRIPT_URL" ' Replace with the Web App URL you copied
' Set the worksheet and range to upload
Set sheet = ThisWorkbook.Sheets("Sheet1") ' Change the sheet name if necessary
data = sheet.UsedRange.Value ' Get all the data in the used range of the sheet
' Prepare the data as JSON
jsonData = "["
' Loop through rows and columns to convert data into JSON format
For i = 1 To UBound(data, 1)
jsonData = jsonData & "["
For j = 1 To UBound(data, 2)
jsonData = jsonData & """" & data(i, j) & """"
If j < UBound(data, 2) Then
jsonData = jsonData & ","
End If
Next j
jsonData = jsonData & "]"
If i < UBound(data, 1) Then
jsonData = jsonData & ","
End If
Next i
jsonData = jsonData & "]"
' Create the HTTP object
Set http = CreateObject("MSXML2.XMLHTTP")
' Send the data to the Google Sheets via the Google Apps Script web app
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/json"
http.Send jsonData
' Check the response
If http.Status = 200 Then
MsgBox "Data uploaded successfully!", vbInformation
Else
MsgBox "Error uploading data: " & http.Status, vbCritical
End If
End Sub
第 3 步:运行 VBA 代码 运行宏: 在 VBA 编辑器中按 F5 或从 Excel 的“开发人员”选项卡运行宏。 验证上传:
运行代码后,到你的Google Sheet查看数据是否上传成功